You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2015/05/15 11:31:40 UTC
svn commit: r1679520 - in
/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal:
HttpServiceController.java whiteboard/PerContextEventListener.java
whiteboard/WhiteboardManager.java
Author: cziegeler
Date: Fri May 15 09:31:39 2015
New Revision: 1679520
URL: http://svn.apache.org/r1679520
Log:
FELIX-4841 : Support HttpSessionIdListener
Modified:
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/HttpServiceController.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/PerContextEventListener.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/HttpServiceController.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/HttpServiceController.java?rev=1679520&r1=1679519&r2=1679520&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/HttpServiceController.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/HttpServiceController.java Fri May 15 09:31:39 2015
@@ -97,12 +97,12 @@ public final class HttpServiceController
return new HttpSessionIdListener() {
@Override
- public void sessionIdChanged(HttpSessionEvent event, String oldSessionId) {
- // TODO Auto-generated method stub
-
+ public void sessionIdChanged(final HttpSessionEvent event, String oldSessionId) {
+ whiteboardManager.sessionIdChanged(event, oldSessionId, HttpSessionWrapper.getSessionContextIds(event.getSession()));
}
};
}
+
public void setProperties(final Hashtable<String, Object> props)
{
this.httpServiceFactory.setProperties(props);
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/PerContextEventListener.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/PerContextEventListener.java?rev=1679520&r1=1679519&r2=1679520&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/PerContextEventListener.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/PerContextEventListener.java Fri May 15 09:31:39 2015
@@ -51,6 +51,7 @@ import org.osgi.framework.ServiceReferen
public final class PerContextEventListener implements
HttpSessionListener,
HttpSessionAttributeListener,
+ HttpSessionIdListener,
ServletContextAttributeListener,
ServletRequestListener,
ServletRequestAttributeListener
@@ -435,4 +436,15 @@ public final class PerContextEventListen
requestAttributeListeners.keySet(),
requestListeners.keySet());
}
+
+ /**
+ * @see javax.servlet.http.HttpSessionIdListener#sessionIdChanged(javax.servlet.http.HttpSessionEvent, java.lang.String)
+ */
+ @Override
+ public void sessionIdChanged(@Nonnull final HttpSessionEvent event, @Nonnull final String oldSessionId) {
+ for (final HttpSessionIdListener l : sessionIdListeners.values())
+ {
+ l.sessionIdChanged(event, oldSessionId);
+ }
+ }
}
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java?rev=1679520&r1=1679519&r2=1679520&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java Fri May 15 09:31:39 2015
@@ -39,6 +39,7 @@ import javax.annotation.Nonnull;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionEvent;
import org.apache.felix.http.base.internal.context.ExtServletContext;
import org.apache.felix.http.base.internal.handler.HandlerRegistry;
@@ -251,6 +252,24 @@ public final class WhiteboardManager
}
}
}
+
+ /**
+ * Handle session id changes
+ * @param session The session where the id changed
+ * @param oldSessionId The old session id
+ * @param contextIds The context ids using that session
+ */
+ public void sessionIdChanged(@Nonnull final HttpSessionEvent event, String oldSessionId, final Set<Long> contextIds)
+ {
+ for(final Long contextId : contextIds)
+ {
+ final ContextHandler handler = this.getContextHandler(contextId);
+ if ( handler != null )
+ {
+ handler.getListenerRegistry().sessionIdChanged(event, oldSessionId);
+ }
+ }
+ }
/**
* Activate a servlet context helper.