You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2010/02/18 14:45:08 UTC

svn commit: r911398 - in /struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher: ApplicationMap.java RequestMap.java SessionMap.java

Author: lukaszlenart
Date: Thu Feb 18 13:45:08 2010
New Revision: 911398

URL: http://svn.apache.org/viewvc?rev=911398&view=rev
Log:
Solved WW-3385 - proper implementation of put() method to reflect Map interface specification

Modified:
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ApplicationMap.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/RequestMap.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ApplicationMap.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ApplicationMap.java?rev=911398&r1=911397&r2=911398&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ApplicationMap.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ApplicationMap.java Thu Feb 18 13:45:08 2010
@@ -21,6 +21,7 @@
 
 package org.apache.struts2.dispatcher;
 
+import javax.servlet.ServletContext;
 import java.io.Serializable;
 import java.util.AbstractMap;
 import java.util.Enumeration;
@@ -28,15 +29,12 @@
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.ServletContext;
-
 
 /**
  * A simple implementation of the {@link java.util.Map} interface to handle a collection of attributes and
  * init parameters in a {@link javax.servlet.ServletContext} object. The {@link #entrySet()} method
  * enumerates over all servlet context attributes and init parameters and returns a collection of both.
  * Note, this will occur lazily - only when the entry set is asked for.
- *
  */
 public class ApplicationMap extends AbstractMap implements Serializable {
 
@@ -87,7 +85,7 @@
                 entries.add(new Map.Entry() {
                     public boolean equals(Object obj) {
                         if (!(obj instanceof Map.Entry)) {
-                          return false;
+                            return false;
                         }
                         Map.Entry entry = (Map.Entry) obj;
 
@@ -123,7 +121,7 @@
                 entries.add(new Map.Entry() {
                     public boolean equals(Object obj) {
                         if (!(obj instanceof Map.Entry)) {
-                          return false;
+                            return false;
                         }
                         Map.Entry entry = (Map.Entry) obj;
 
@@ -178,10 +176,10 @@
      * @return the attribute that was just set.
      */
     public Object put(Object key, Object value) {
+        Object oldValue = get(key);
         entries = null;
         context.setAttribute(key.toString(), value);
-
-        return get(key);
+        return oldValue;
     }
 
     /**

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/RequestMap.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/RequestMap.java?rev=911398&r1=911397&r2=911398&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/RequestMap.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/RequestMap.java Thu Feb 18 13:45:08 2010
@@ -21,14 +21,13 @@
 
 package org.apache.struts2.dispatcher;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.Serializable;
 import java.util.AbstractMap;
 import java.util.Enumeration;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.servlet.http.HttpServletRequest;
-
 
 /**
  * A simple implementation of the {@link java.util.Map} interface to handle a collection of request attributes.
@@ -81,7 +80,7 @@
                 entries.add(new Entry() {
                     public boolean equals(Object obj) {
                         if (!(obj instanceof Entry)) {
-                          return false;
+                            return false;
                         }
                         Entry entry = (Entry) obj;
 
@@ -130,10 +129,10 @@
      * @return the object that was just set.
      */
     public Object put(Object key, Object value) {
+        Object oldValue = get(key);
         entries = null;
         request.setAttribute(key.toString(), value);
-
-        return get(key);
+        return oldValue;
     }
 
     /**

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=911398&r1=911397&r2=911398&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 Thu Feb 18 13:45:08 2010
@@ -21,6 +21,8 @@
 
 package org.apache.struts2.dispatcher;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
 import java.io.Serializable;
 import java.util.AbstractMap;
 import java.util.Collections;
@@ -29,22 +31,18 @@
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
 
 /**
  * A simple implementation of the {@link java.util.Map} interface to handle a collection of HTTP session
  * attributes. The {@link #entrySet()} method enumerates over all session attributes and creates a Set of entries.
  * Note, this will occur lazily - only when the entry set is asked for.
- *
  */
-public class SessionMap<K, V> extends AbstractMap<K,V> implements Serializable {
+public class SessionMap<K, V> extends AbstractMap<K, V> implements Serializable {
 
     private static final long serialVersionUID = 4678843241638046854L;
 
     protected HttpSession session;
-    protected Set<Map.Entry<K,V>> entries;
+    protected Set<Map.Entry<K, V>> entries;
     protected HttpServletRequest request;
 
 
@@ -82,14 +80,14 @@
      * map.
      */
     public void clear() {
-        if (session == null ) {
+        if (session == null) {
             return;
         }
 
         synchronized (session) {
             entries = null;
             Enumeration<String> attributeNamesEnum = session.getAttributeNames();
-            while(attributeNamesEnum.hasMoreElements()) {
+            while (attributeNamesEnum.hasMoreElements()) {
                 session.removeAttribute(attributeNamesEnum.nextElement());
             }
         }
@@ -101,24 +99,24 @@
      *
      * @return a Set of attributes from the http session.
      */
-    public Set<java.util.Map.Entry<K,V>> entrySet() {
+    public Set<java.util.Map.Entry<K, V>> entrySet() {
         if (session == null) {
             return Collections.emptySet();
         }
 
         synchronized (session) {
             if (entries == null) {
-                entries = new HashSet<Map.Entry<K,V>>();
+                entries = new HashSet<Map.Entry<K, V>>();
 
                 Enumeration<? extends Object> enumeration = session.getAttributeNames();
 
                 while (enumeration.hasMoreElements()) {
                     final String key = enumeration.nextElement().toString();
                     final Object value = session.getAttribute(key);
-                    entries.add(new Map.Entry<K,V>() {
+                    entries.add(new Map.Entry<K, V>() {
                         public boolean equals(Object obj) {
                             if (!(obj instanceof Map.Entry)) {
-                              return false;
+                                return false;
                             }
                             Map.Entry<K, V> entry = (Map.Entry<K, V>) obj;
 
@@ -179,12 +177,11 @@
                 session = request.getSession(true);
             }
         }
-
         synchronized (session) {
+            V oldValue = get(key);
             entries = null;
             session.setAttribute(key.toString(), value);
-
-            return get(key);
+            return oldValue;
         }
     }
 
@@ -209,7 +206,7 @@
         }
     }
 
-    
+
     /**
      * Checks if the specified session attribute with the given key exists.
      *