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[]{


Reply via email to