1
+ package com .orangefunction .tomcatredissessionmanager .exampleapp ;
2
+
3
+ import com .google .gson .Gson ;
4
+ import com .radiadesign .catalina .session .RedisSession ;
5
+ import java .util .HashMap ;
6
+ import java .util .Map ;
7
+ import java .util .Collections ;
8
+ import spark .ResponseTransformerRoute ;
9
+ import spark .Session ;
10
+ import javax .servlet .http .HttpSession ;
11
+
12
+ public abstract class SessionJsonTransformerRoute extends ResponseTransformerRoute {
13
+
14
+ private Gson gson = new Gson ();
15
+
16
+ protected SessionJsonTransformerRoute (String path ) {
17
+ super (path );
18
+ }
19
+
20
+ protected SessionJsonTransformerRoute (String path , String acceptType ) {
21
+ super (path , acceptType );
22
+ }
23
+
24
+ @ Override
25
+ public String render (Object object ) {
26
+ if (object instanceof Object []) {
27
+ Object [] tuple = (Object [])object ;
28
+ Session sparkSession = (Session )tuple [0 ];
29
+ HttpSession session = (HttpSession )(sparkSession ).raw ();
30
+ HashMap <String , Object > map = new HashMap <String , Object >();
31
+ map .putAll ((Map <String , Object >)tuple [1 ]);
32
+ map .put ("sessionId" , session .getId ());
33
+ return gson .toJson (map );
34
+ } else if (object instanceof Session ) {
35
+ Session sparkSession = (Session )object ;
36
+ HashMap <String , Object > sessionMap = new HashMap <String , Object >();
37
+ if (null != sparkSession ) {
38
+ HttpSession session = (HttpSession )(sparkSession ).raw ();
39
+ sessionMap .put ("sessionId" , session .getId ());
40
+ HashMap <String , Object > attributesMap = new HashMap <String , Object >();
41
+ for (String key : Collections .list (session .getAttributeNames ())) {
42
+ attributesMap .put (key , session .getAttribute (key ));
43
+ }
44
+ sessionMap .put ("attributes" , attributesMap );
45
+ }
46
+ return gson .toJson (sessionMap );
47
+ } else {
48
+ return "{}" ;
49
+ }
50
+ }
51
+
52
+ }
0 commit comments