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