diff options
author | Raymond Auge | 2016-04-12 03:24:01 +0000 |
---|---|---|
committer | Raymond Auge | 2016-04-12 15:33:16 +0000 |
commit | a8b08fe3c892821f746ad9db52e754a5cf5f3185 (patch) | |
tree | 61e434973e6ac4b5e7676dc74b36cea3bc96ad17 /bundles/org.eclipse.equinox.http.servlet.tests | |
parent | 5bac9576d0c5ab84b44d0c19908de7893539f991 (diff) | |
download | rt.equinox.bundles-a8b08fe3c892821f746ad9db52e754a5cf5f3185.tar.gz rt.equinox.bundles-a8b08fe3c892821f746ad9db52e754a5cf5f3185.tar.xz rt.equinox.bundles-a8b08fe3c892821f746ad9db52e754a5cf5f3185.zip |
Bug 490644 [http whiteboard] Pass attribute to parent httpSession if value is null, in order to fulfill httpSession.setAttribute API
Signed-off-by: Juan Gonzalez <juan.gonzalez@liferay.com>
Diffstat (limited to 'bundles/org.eclipse.equinox.http.servlet.tests')
-rw-r--r-- | bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java | 63 |
1 files changed, 63 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 7a9a13338..099130400 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 @@ -31,6 +31,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Dictionary; +import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; import java.util.Hashtable; @@ -1513,6 +1514,68 @@ public class ServletTest extends BaseTest { } @Test + public void test_Sessions02() { + final AtomicReference<HttpSession> sessionReference = new AtomicReference<HttpSession>(); + + HttpServlet sessionServlet = new HttpServlet() { + private static final long serialVersionUID = 1L; + + @Override + protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, + IOException { + HttpSession session = request.getSession(); + sessionReference.set(session); + if (session.getAttribute("test.attribute") == null) { + session.setAttribute("test.attribute", "foo"); + response.getWriter().print("created"); + } else { + session.setAttribute("test.attribute", null); + response.getWriter().print("attribute set to null"); + } + } + }; + ServiceRegistration<Servlet> servletReg = null; + Dictionary<String, Object> servletProps = new Hashtable<String, Object>(); + servletProps.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN, "/sessions"); + String actual = null; + CookieHandler previous = CookieHandler.getDefault(); + CookieHandler.setDefault(new CookieManager( null, CookiePolicy.ACCEPT_ALL ) ); + try { + servletReg = getBundleContext().registerService(Servlet.class, sessionServlet, servletProps); + + // first call will create the session + actual = requestAdvisor.request("sessions"); + assertEquals("Wrong result", "created", actual); + + // second call will set parameter to null + actual = requestAdvisor.request("sessions"); + assertEquals("Wrong result", "attribute set to null", actual); + + HttpSession httpSession = sessionReference.get(); + + Enumeration<String> names = httpSession.getAttributeNames(); + + boolean exist = false; + + while (names.hasMoreElements()) { + String name = names.nextElement(); + if (name.equals("test.attribute")) { + exist = true; + } + } + + assertFalse("Session atribute was not removed", exist); + } catch (Exception e) { + fail("Unexpected exception: " + e); + } finally { + if (servletReg != null) { + servletReg.unregister(); + } + CookieHandler.setDefault(previous); + } + } + + @Test public void test_Resource1() throws Exception { String expected = "a"; String actual; |