Author: nilsga Date: Tue Dec 9 11:19:19 2008 New Revision: 724839 URL: http://svn.apache.org/viewvc?rev=724839&view=rev Log: WW-2751 Fixed containsKey for SessionMap. Patch by Ian Robinson.
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/SessionMapTest.java Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java?rev=724839&r1=724838&r2=724839&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java Tue Dec 9 11:19:19 2008 @@ -205,4 +205,21 @@ return value; } } + + + /** + * Checks if the specified session attribute with the given key exists. + * + * @param key the name of the session attribute. + * @return <tt>true</tt> if the session attribute exits or <tt>false</tt> if it doesn't exist. + */ + public boolean containsKey(Object key) { + if (session == null) { + return false; + } + + synchronized (session) { + return (session.getAttribute(key.toString()) != null); + } + } } Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/SessionMapTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/SessionMapTest.java?rev=724839&r1=724838&r2=724839&view=diff ============================================================================== --- struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/SessionMapTest.java (original) +++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/SessionMapTest.java Tue Dec 9 11:19:19 2008 @@ -31,6 +31,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +import org.springframework.mock.web.MockHttpServletRequest; + import junit.framework.TestCase; import com.mockobjects.constraint.Constraint; @@ -102,6 +104,57 @@ sessionMock.verify(); } + public void testGetObjectOnSessionMapUsesWrappedSessionsGetAttributeWithStringValue() throws Exception { + Object key = new Object(); + Object value = new Object(); + sessionMock.expectAndReturn("getAttribute", new Constraint[]{ + new IsEqual(key.toString()) + }, value); + + SessionMap sessionMap = new SessionMap((HttpServletRequest) requestMock.proxy()); + assertEquals("Expected the get using KEY to return the value object setup in the mockSession", value, sessionMap.get(key)); + sessionMock.verify(); + } + + public void testPutObjectOnSessionMapUsesWrappedSessionsSetsAttributeWithStringValue() throws Exception { + Object key = new Object(); + Object value = new Object(); + sessionMock.expect("getAttribute", new Constraint[]{new IsAnything()}); + sessionMock.expect("setAttribute", new Constraint[]{ + new IsEqual(key.toString()), new IsEqual(value) + }); + + SessionMap sessionMap = new SessionMap((HttpServletRequest) requestMock.proxy()); + sessionMap.put(key, value); + sessionMock.verify(); + } + + public void testContainsKeyWillFindAnObjectPutOnSessionMap() throws Exception { + + MockHttpServletRequest request = new MockHttpServletRequest(); + + Object key = new Object(); + Object value = new Object(); + + SessionMap<Object, Object> sessionMap = new SessionMap<Object, Object>(request); + sessionMap.put(key, value); + assertTrue(sessionMap.containsKey(key)); + } + + public void testContainsKeyWillReturnFalseIfObjectNotFoundOnSessionMap() throws Exception { + + MockHttpServletRequest request = new MockHttpServletRequest(); + + Object key = new Object(); + Object someOtherKey = new Object(); + Object value = new Object(); + + SessionMap<Object, Object> sessionMap = new SessionMap<Object, Object>(request); + sessionMap.put(key, value); + + assertFalse(sessionMap.containsKey(someOtherKey)); + } + public void testPuttingObjectInMapReturnsNullForPreviouslyUnusedKey() throws Exception { Object value = new Object(); sessionMock.expectAndReturn("getAttribute", new Constraint[]{