1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.jetspeed.container.session;
18
19 import javax.servlet.http.HttpSession;
20 import javax.servlet.http.HttpSessionBindingEvent;
21 import javax.servlet.http.HttpSessionEvent;
22
23 import org.apache.jetspeed.container.session.PortalSessionsManager;
24 import org.apache.jetspeed.container.session.PortletApplicationSessionMonitor;
25 import org.apache.jetspeed.services.JetspeedPortletServices;
26 import org.apache.jetspeed.services.PortletServices;
27
28 /***
29 * PortletApplicationSessionMonitorImpl
30 *
31 * @author <a href="mailto:ate@douma.nu">Ate Douma</a>
32 * @version $Id: $
33 */
34 public class PortletApplicationSessionMonitorImpl implements PortletApplicationSessionMonitor
35 {
36 private static final long serialVersionUID = -6729032046828426324L;
37
38 private String contextPath;
39 private String portalSessionId;
40 private long portalSessionKey;
41 private transient HttpSession session;
42 private boolean forceInvalidate;
43
44 public PortletApplicationSessionMonitorImpl(String contextPath, String portalSessionId, long portalSessionKey)
45 {
46 this(contextPath, portalSessionId, portalSessionKey, true);
47 }
48
49 public PortletApplicationSessionMonitorImpl(String contextPath, String portalSessionId, long portalSessionKey, boolean forceInvalidate)
50 {
51 this.contextPath = contextPath;
52 this.portalSessionId = portalSessionId;
53 this.portalSessionKey = portalSessionKey;
54 this.forceInvalidate = forceInvalidate;
55 }
56
57
58
59
60 public long getPortalSessionKey()
61 {
62 return portalSessionKey;
63 }
64
65
66
67
68 public String getPortalSessionId()
69 {
70 return portalSessionId;
71 }
72
73
74
75
76 public String getContextPath()
77 {
78 return contextPath;
79 }
80
81
82
83
84 public void invalidateSession()
85 {
86 if ( session != null )
87 {
88 HttpSession thisSession = session;
89 session = null;
90 if (forceInvalidate)
91 {
92 try
93 {
94 thisSession.invalidate();
95 }
96 catch (Exception ise)
97 {
98
99 }
100 }
101 }
102 }
103
104
105
106
107 public void valueBound(HttpSessionBindingEvent event)
108 {
109 this.session = event.getSession();
110 }
111
112
113
114
115 public void valueUnbound(HttpSessionBindingEvent event)
116 {
117 if ( session != null )
118 {
119 PortalSessionsManager manager = getManager();
120 if ( manager != null )
121 {
122 manager.sessionDestroyed(this);
123 }
124 session = null;
125 }
126 }
127
128
129
130
131 public void sessionDidActivate(HttpSessionEvent event)
132 {
133 this.session = event.getSession();
134 PortalSessionsManager manager = getManager();
135 if ( manager != null )
136 {
137 manager.sessionDidActivate(this);
138 }
139 }
140
141
142
143
144 public void sessionWillPassivate(HttpSessionEvent event)
145 {
146 PortalSessionsManager manager = getManager();
147 if ( manager != null )
148 {
149 manager.sessionWillPassivate(this);
150 }
151 session = null;
152 }
153
154 private PortalSessionsManager getManager()
155 {
156 PortletServices services = JetspeedPortletServices.getSingleton();
157 if (services != null)
158 {
159 return (PortalSessionsManager)services.getService(PortalSessionsManager.SERVICE_NAME);
160 }
161 return null;
162 }
163 }