26
26
import javax .servlet .http .HttpSessionActivationListener ;
27
27
import javax .servlet .http .HttpSessionEvent ;
28
28
import javax .servlet .http .HttpSessionListener ;
29
+
30
+ import com .opensymphony .xwork2 .inject .Inject ;
29
31
import org .apache .commons .logging .Log ;
30
32
import org .apache .commons .logging .LogFactory ;
31
33
import org .apache .roller .weblogger .WebloggerException ;
@@ -43,37 +45,39 @@ public class RollerSession
43
45
implements HttpSessionListener , HttpSessionActivationListener , Serializable {
44
46
45
47
private static final long serialVersionUID = 5890132909166913727L ;
48
+ private static final Log log ;
46
49
47
50
// the id of the user represented by this session
48
51
private String userName = null ;
49
-
50
- private static final Log log ;
51
-
52
+ private final SessionManager sessionManager ;
53
+
52
54
public static final String ROLLER_SESSION = "org.apache.roller.weblogger.rollersession" ;
53
55
54
56
static {
55
57
WebloggerConfig .init (); // must be called before calls to logging APIs
56
58
log = LogFactory .getLog (RollerSession .class );
57
59
}
58
-
59
- /**
60
- * Get RollerSession from request (and add user if not already present).
61
- */
62
- public static RollerSession getRollerSession (HttpServletRequest request ) {
63
- RollerSession rollerSession = null ;
60
+
61
+
62
+ @ Inject
63
+ public RollerSession (SessionManager sessionManager ) {
64
+ this .sessionManager = sessionManager ;
65
+ }
66
+
67
+ @ Inject
68
+ public RollerSession (SessionManager sessionManager , HttpServletRequest request ) {
69
+ this .sessionManager = sessionManager ;
70
+
64
71
HttpSession session = request .getSession (false );
65
72
if (session != null ) {
66
- rollerSession = (RollerSession )session .getAttribute (ROLLER_SESSION );
67
-
68
- if (rollerSession == null ) {
69
- rollerSession = new RollerSession ();
70
- session .setAttribute (ROLLER_SESSION , rollerSession );
71
- } else if (rollerSession .getAuthenticatedUser () != null ) {
72
- RollerSessionManager sessionManager = RollerSessionManager .getInstance ();
73
- if (sessionManager .get (rollerSession .getAuthenticatedUser ().getUserName ()) == null ) {
74
- // session not present in cache means that it is invalid
75
- rollerSession = new RollerSession ();
76
- session .setAttribute (ROLLER_SESSION , rollerSession );
73
+ RollerSession storedSession = (RollerSession )session .getAttribute (ROLLER_SESSION );
74
+
75
+ if (storedSession == null ) {
76
+ session .setAttribute (ROLLER_SESSION , this );
77
+ } else if (storedSession .getAuthenticatedUser () != null ) {
78
+ if (sessionManager .get (storedSession .getAuthenticatedUser ().getUserName ()) == null ) {
79
+ // override it with the new session
80
+ session .setAttribute (ROLLER_SESSION , this );
77
81
}
78
82
}
79
83
@@ -83,7 +87,7 @@ public static RollerSession getRollerSession(HttpServletRequest request) {
83
87
// user object from user manager but *only* do this if we have been
84
88
// bootstrapped because under an SSO scenario we may have a
85
89
// principal even before we have been bootstrapped.
86
- if (rollerSession . getAuthenticatedUser () == null && principal != null && WebloggerFactory .isBootstrapped ()) {
90
+ if (getAuthenticatedUser () == null && principal != null && WebloggerFactory .isBootstrapped ()) {
87
91
try {
88
92
89
93
UserManager umgr = WebloggerFactory .getWeblogger ().getUserManager ();
@@ -114,16 +118,14 @@ public static RollerSession getRollerSession(HttpServletRequest request) {
114
118
}
115
119
// only set authenticated user if user is enabled
116
120
if (user != null && user .getEnabled ()) {
117
- rollerSession . setAuthenticatedUser (user );
121
+ setAuthenticatedUser (user );
118
122
}
119
123
120
124
} catch (WebloggerException e ) {
121
125
log .error ("ERROR: getting user object" ,e );
122
126
}
123
127
}
124
128
}
125
-
126
- return rollerSession ;
127
129
}
128
130
129
131
/**
@@ -149,7 +151,6 @@ public User getAuthenticatedUser() {
149
151
*/
150
152
public void setAuthenticatedUser (User authenticatedUser ) {
151
153
this .userName = authenticatedUser .getUserName ();
152
- RollerSessionManager sessionManager = RollerSessionManager .getInstance ();
153
154
sessionManager .register (authenticatedUser .getUserName (), this );
154
155
}
155
156
0 commit comments