Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java')
-rw-r--r--bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java81
1 files changed, 81 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java b/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java
index b2c1a24da..a0f8b4863 100644
--- a/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java
+++ b/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java
@@ -39,6 +39,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import javax.servlet.Filter;
@@ -49,6 +50,7 @@ import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextAttributeListener;
+import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
@@ -3127,6 +3129,85 @@ public class ServletTest extends BaseTest {
}
@Test
+ public void test_Listener11() throws Exception {
+
+ final AtomicInteger listenerBalance = new AtomicInteger(0);
+ final AtomicReference<HttpSession> sessionReference = new AtomicReference<HttpSession>();
+
+ ServletContextListener scl = new ServletContextListener() {
+
+ @Override
+ public void contextInitialized(ServletContextEvent arg0) {
+ }
+
+ @Override
+ public void contextDestroyed(ServletContextEvent arg0) {
+ listenerBalance.decrementAndGet();
+ }
+ };
+
+ HttpSessionListener sl = new HttpSessionListener() {
+
+ @Override
+ public void sessionDestroyed(HttpSessionEvent se) {
+ listenerBalance.incrementAndGet();
+ }
+
+ @Override
+ public void sessionCreated(HttpSessionEvent se) {
+ }
+ };
+
+ Servlet sA = new HttpServlet() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void doGet(
+ HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+
+ HttpSession session = req.getSession();
+ sessionReference.set(session);
+
+ session.setAttribute("testAttribute", "testValue");
+ PrintWriter writer = resp.getWriter();
+ writer.write("S11 requested");
+ }
+ };
+
+ Collection<ServiceRegistration<?>> registrations = new ArrayList<ServiceRegistration<?>>();
+ try {
+ Dictionary<String, String> scListenerProps = new Hashtable<String, String>();
+ scListenerProps.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_LISTENER, "true");
+ registrations.add(getBundleContext().registerService(ServletContextListener.class, scl, scListenerProps));
+
+ Dictionary<String, String> sListenerProps = new Hashtable<String, String>();
+ sListenerProps.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_LISTENER, "true");
+ registrations.add(getBundleContext().registerService(HttpSessionListener.class, sl, sListenerProps));
+
+ Dictionary<String, String> servletProps1 = new Hashtable<String, String>();
+ servletProps1.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_NAME, "S11");
+ servletProps1.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN, "/s11");
+ registrations.add(getBundleContext().registerService(Servlet.class, sA, servletProps1));
+
+ String result = requestAdvisor.request("s11");
+ Assert.assertEquals("S11 requested", result);
+ }
+ finally {
+ for (ServiceRegistration<?> registration : registrations) {
+ registration.unregister();
+ }
+ }
+
+ //Emulate session expiration to check sessionListener
+ //is only called once (when unregister)
+ HttpSession session = sessionReference.get();
+
+ session.invalidate();
+
+ Assert.assertEquals(0, listenerBalance.get());
+ }
+
public void test_Async1() throws Exception {
Servlet s1 = new BaseAsyncServlet("test_Listener8");

Back to the top