Author: sseifert Date: Thu Sep 3 06:17:31 2015 New Revision: 1700936 URL: http://svn.apache.org/r1700936 Log: SLING-4990 Support HttpSession invalidate, new, lastAccessedTime, maxInteractiveInterval
Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSession.java sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/package-info.java sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSessionTest.java Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSession.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSession.java?rev=1700936&r1=1700935&r2=1700936&view=diff ============================================================================== --- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSession.java (original) +++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSession.java Thu Sep 3 06:17:31 2015 @@ -37,6 +37,9 @@ public final class MockHttpSession imple private final Map<String, Object> attributeMap = new HashMap<String, Object>(); private final String sessionID = UUID.randomUUID().toString(); private final long creationTime = System.currentTimeMillis(); + private boolean invalidated = false; + private boolean isNew = true; + private int maxActiveInterval = 1800; @Override public ServletContext getServletContext() { @@ -45,12 +48,14 @@ public final class MockHttpSession imple @Override public Object getAttribute(final String name) { + checkInvalidatedState(); return this.attributeMap.get(name); } @SuppressWarnings("unchecked") @Override public Enumeration<String> getAttributeNames() { + checkInvalidatedState(); return IteratorUtils.asEnumeration(this.attributeMap.keySet().iterator()); } @@ -61,68 +66,92 @@ public final class MockHttpSession imple @Override public long getCreationTime() { + checkInvalidatedState(); return this.creationTime; } @Override public Object getValue(final String name) { + checkInvalidatedState(); return getAttribute(name); } @Override public String[] getValueNames() { + checkInvalidatedState(); return this.attributeMap.keySet().toArray(new String[this.attributeMap.keySet().size()]); } @Override public void putValue(final String name, final Object value) { + checkInvalidatedState(); setAttribute(name, value); } @Override public void removeAttribute(final String name) { + checkInvalidatedState(); this.attributeMap.remove(name); } @Override public void removeValue(final String name) { + checkInvalidatedState(); this.attributeMap.remove(name); } @Override public void setAttribute(final String name, final Object value) { + checkInvalidatedState(); this.attributeMap.put(name, value); } - // --- unsupported operations --- @Override - public long getLastAccessedTime() { - throw new UnsupportedOperationException(); + public void invalidate() { + checkInvalidatedState(); + this.invalidated = true; + } + + private void checkInvalidatedState() { + if (invalidated) { + throw new IllegalStateException("Session is already invalidated."); + } + } + + public boolean isInvalidated() { + return invalidated; } @Override - public int getMaxInactiveInterval() { - throw new UnsupportedOperationException(); + public boolean isNew() { + checkInvalidatedState(); + return isNew; + } + + public void setNew(boolean isNew) { + this.isNew = isNew; } @Override - @SuppressWarnings("deprecation") - public javax.servlet.http.HttpSessionContext getSessionContext() { - throw new UnsupportedOperationException(); + public long getLastAccessedTime() { + checkInvalidatedState(); + return creationTime; } @Override - public void invalidate() { - throw new UnsupportedOperationException(); + public int getMaxInactiveInterval() { + return maxActiveInterval; } @Override - public boolean isNew() { - throw new UnsupportedOperationException(); + public void setMaxInactiveInterval(final int interval) { + this.maxActiveInterval = interval; } + // --- unsupported operations --- @Override - public void setMaxInactiveInterval(final int interval) { + @SuppressWarnings("deprecation") + public javax.servlet.http.HttpSessionContext getSessionContext() { throw new UnsupportedOperationException(); } Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/package-info.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/package-info.java?rev=1700936&r1=1700935&r2=1700936&view=diff ============================================================================== --- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/package-info.java (original) +++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/package-info.java Thu Sep 3 06:17:31 2015 @@ -19,5 +19,5 @@ /** * Mock implementation of selected Servlet-related Sling APIs. */ -@aQute.bnd.annotation.Version("1.1") +@aQute.bnd.annotation.Version("1.2") package org.apache.sling.testing.mock.sling.servlet; Modified: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSessionTest.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSessionTest.java?rev=1700936&r1=1700935&r2=1700936&view=diff ============================================================================== --- sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSessionTest.java (original) +++ sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSessionTest.java Thu Sep 3 06:17:31 2015 @@ -23,52 +23,80 @@ import static org.junit.Assert.assertFal import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import javax.servlet.http.HttpSession; - import org.junit.Before; import org.junit.Test; public class MockHttpSessionTest { - private HttpSession httpSession; + private MockHttpSession httpSession; @Before public void setUp() throws Exception { - this.httpSession = new MockHttpSession(); + httpSession = new MockHttpSession(); } @Test public void testServletContext() { - assertNotNull(this.httpSession.getServletContext()); + assertNotNull(httpSession.getServletContext()); } @Test public void testId() { - assertNotNull(this.httpSession.getId()); + assertNotNull(httpSession.getId()); } @Test public void testCreationTime() { - assertNotNull(this.httpSession.getCreationTime()); + assertNotNull(httpSession.getCreationTime()); } @Test public void testAttributes() { - this.httpSession.setAttribute("attr1", "value1"); - assertTrue(this.httpSession.getAttributeNames().hasMoreElements()); - assertEquals("value1", this.httpSession.getAttribute("attr1")); - this.httpSession.removeAttribute("attr1"); - assertFalse(this.httpSession.getAttributeNames().hasMoreElements()); + httpSession.setAttribute("attr1", "value1"); + assertTrue(httpSession.getAttributeNames().hasMoreElements()); + assertEquals("value1", httpSession.getAttribute("attr1")); + httpSession.removeAttribute("attr1"); + assertFalse(httpSession.getAttributeNames().hasMoreElements()); } - @SuppressWarnings("deprecation") @Test public void testValues() { - this.httpSession.putValue("attr1", "value1"); - assertEquals(1, this.httpSession.getValueNames().length); - assertEquals("value1", this.httpSession.getValue("attr1")); - this.httpSession.removeValue("attr1"); - assertEquals(0, this.httpSession.getValueNames().length); + httpSession.putValue("attr1", "value1"); + assertEquals(1, httpSession.getValueNames().length); + assertEquals("value1", httpSession.getValue("attr1")); + httpSession.removeValue("attr1"); + assertEquals(0, httpSession.getValueNames().length); + } + + @Test + public void testInvalidate() { + httpSession.invalidate(); + assertTrue(httpSession.isInvalidated()); + } + + @Test(expected = IllegalStateException.class) + public void testInvalidateStateCheck() { + httpSession.invalidate(); + httpSession.getAttribute("attr1"); + } + + @Test + public void testIsNew() { + assertTrue(httpSession.isNew()); + httpSession.setNew(false); + assertFalse(httpSession.isNew()); + } + + @Test + public void testGetLastAccessedTime() { + assertNotNull(httpSession.getLastAccessedTime()); + } + + @Test + public void testGetMaxInactiveInterval() { + assertTrue(httpSession.getMaxInactiveInterval() > 0); + httpSession.setMaxInactiveInterval(123); + assertEquals(123, httpSession.getMaxInactiveInterval()); } }