001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.jetspeed.container.session;
018:
019: import javax.servlet.http.HttpSession;
020: import javax.servlet.http.HttpSessionBindingEvent;
021: import javax.servlet.http.HttpSessionEvent;
022:
023: import org.apache.jetspeed.services.JetspeedPortletServices;
024: import org.apache.jetspeed.services.PortletServices;
025:
026: /**
027: * PortalSessionMonitorImpl
028: *
029: * @author <a href="mailto:ate@douma.nu">Ate Douma</a>
030: * @version $Id: $
031: */
032: public class PortalSessionMonitorImpl implements PortalSessionMonitor {
033: private static final long serialVersionUID = 1239564779524373742L;
034:
035: private long sessionKey;
036: private transient String sessionId;
037: private transient HttpSession session;
038: private boolean forceInvalidate;
039:
040: public PortalSessionMonitorImpl(long sessionKey) {
041: this (sessionKey, true);
042: }
043:
044: public PortalSessionMonitorImpl(long sessionKey,
045: boolean forceInvalidate) {
046: this .sessionKey = sessionKey;
047: this .forceInvalidate = forceInvalidate;
048: }
049:
050: /* (non-Javadoc)
051: * @see org.apache.jetspeed.container.session.PortalSessionMonitor#getSessionId()
052: */
053: public String getSessionId() {
054: return sessionId;
055: }
056:
057: /* (non-Javadoc)
058: * @see org.apache.jetspeed.container.session.PortalSessionMonitor#getSessionKey()
059: */
060: public long getSessionKey() {
061: return sessionKey;
062: }
063:
064: public HttpSession getSession() {
065: return session;
066: }
067:
068: /* (non-Javadoc)
069: * @see org.apache.jetspeed.container.session.PortalSessionMonitor#invalidateSession()
070: */
071: public void invalidateSession() {
072: HttpSession this Session = session;
073: if (this Session != null) {
074: session = null;
075: if (forceInvalidate) {
076: try {
077: this Session.invalidate();
078: } catch (Exception ise) {
079: // ignore
080: }
081: }
082: }
083: }
084:
085: /* (non-Javadoc)
086: * @see javax.servlet.http.HttpSessionBindingListener#valueBound(javax.servlet.http.HttpSessionBindingEvent)
087: */
088: public void valueBound(HttpSessionBindingEvent event) {
089: this .session = event.getSession();
090: this .sessionId = session.getId();
091: }
092:
093: /* (non-Javadoc)
094: * @see javax.servlet.http.HttpSessionBindingListener#valueUnbound(javax.servlet.http.HttpSessionBindingEvent)
095: */
096: public void valueUnbound(HttpSessionBindingEvent event) {
097: if (session != null) {
098: PortalSessionsManager manager = getManager();
099: if (manager != null) {
100: manager.portalSessionDestroyed(this );
101: }
102: session = null;
103: }
104: }
105:
106: /* (non-Javadoc)
107: * @see javax.servlet.http.HttpSessionActivationListener#sessionDidActivate(javax.servlet.http.HttpSessionEvent)
108: */
109: public void sessionDidActivate(HttpSessionEvent event) {
110: session = event.getSession();
111: sessionId = session.getId();
112: PortalSessionsManager manager = getManager();
113: if (manager != null) {
114: manager.portalSessionDidActivate(this );
115: }
116: }
117:
118: /* (non-Javadoc)
119: * @see javax.servlet.http.HttpSessionActivationListener#sessionWillPassivate(javax.servlet.http.HttpSessionEvent)
120: */
121: public void sessionWillPassivate(HttpSessionEvent event) {
122: PortalSessionsManager manager = getManager();
123: if (manager != null) {
124: manager.portalSessionWillPassivate(this );
125: }
126: session = null;
127: }
128:
129: private PortalSessionsManager getManager() {
130: PortletServices services = JetspeedPortletServices
131: .getSingleton();
132: if (services != null) {
133: return (PortalSessionsManager) services
134: .getService(PortalSessionsManager.SERVICE_NAME);
135: }
136: return null;
137: }
138: }
|