You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2012/08/06 20:07:03 UTC

svn commit: r1369900 - /mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java

Author: elecharny
Date: Mon Aug  6 18:07:02 2012
New Revision: 1369900

URL: http://svn.apache.org/viewvc?rev=1369900&view=rev
Log:
Applied Daryl's patch to fix DIRMINA-903

Modified:
    mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java

Modified: mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java
URL: http://svn.apache.org/viewvc/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java?rev=1369900&r1=1369899&r2=1369900&view=diff
==============================================================================
--- mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java (original)
+++ mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java Mon Aug  6 18:07:02 2012
@@ -37,22 +37,18 @@ import org.apache.mina.core.write.WriteR
  * 
  * @author <a href="http://mina.apache.org">Apache MINA Project</a>
  */
-public class DefaultIoSessionDataStructureFactory implements
-        IoSessionDataStructureFactory {
+public class DefaultIoSessionDataStructureFactory implements IoSessionDataStructureFactory {
 
-    public IoSessionAttributeMap getAttributeMap(IoSession session)
-            throws Exception {
+    public IoSessionAttributeMap getAttributeMap(IoSession session) throws Exception {
         return new DefaultIoSessionAttributeMap();
     }
-    
-    public WriteRequestQueue getWriteRequestQueue(IoSession session)
-            throws Exception {
+
+    public WriteRequestQueue getWriteRequestQueue(IoSession session) throws Exception {
         return new DefaultWriteRequestQueue();
     }
 
     private static class DefaultIoSessionAttributeMap implements IoSessionAttributeMap {
-        private final ConcurrentHashMap<Object, Object> attributes =
-            new ConcurrentHashMap<Object, Object>(4);
+        private final ConcurrentHashMap<Object, Object> attributes = new ConcurrentHashMap<Object, Object>(4);
 
         /**
          * Default constructor
@@ -60,7 +56,7 @@ public class DefaultIoSessionDataStructu
         public DefaultIoSessionAttributeMap() {
             super();
         }
-        
+
         /**
          * {@inheritDoc}
          */
@@ -69,11 +65,17 @@ public class DefaultIoSessionDataStructu
                 throw new IllegalArgumentException("key");
             }
 
-            if ( defaultValue == null ) {
+            if (defaultValue == null) {
                 return attributes.get(key);
             }
-                
-            return attributes.putIfAbsent(key, defaultValue);
+
+            Object object = attributes.putIfAbsent(key, defaultValue);
+
+            if (object == null) {
+                return defaultValue;
+            } else {
+                return object;
+            }
         }
 
         /**
@@ -87,7 +89,7 @@ public class DefaultIoSessionDataStructu
             if (value == null) {
                 return attributes.remove(key);
             }
-            
+
             return attributes.put(key, value);
         }
 
@@ -131,7 +133,7 @@ public class DefaultIoSessionDataStructu
 
             try {
                 return attributes.remove(key, value);
-            } catch(NullPointerException e) {
+            } catch (NullPointerException e) {
                 return false;
             }
         }
@@ -142,9 +144,9 @@ public class DefaultIoSessionDataStructu
         public boolean replaceAttribute(IoSession session, Object key, Object oldValue, Object newValue) {
             try {
                 return attributes.replace(key, oldValue, newValue);
-            } catch(NullPointerException e) {
+            } catch (NullPointerException e) {
             }
-            
+
             return false;
         }
 
@@ -171,7 +173,7 @@ public class DefaultIoSessionDataStructu
             // Do nothing
         }
     }
-    
+
     private static class DefaultWriteRequestQueue implements WriteRequestQueue {
         /** A queue to store incoming write requests */
         private final Queue<WriteRequest> q = new ConcurrentLinkedQueue<WriteRequest>();
@@ -182,14 +184,14 @@ public class DefaultIoSessionDataStructu
         public DefaultWriteRequestQueue() {
             super();
         }
-        
+
         /**
          * {@inheritDoc}
          */
         public void dispose(IoSession session) {
             // Do nothing
         }
-        
+
         /**
          * {@inheritDoc}
          */
@@ -217,7 +219,7 @@ public class DefaultIoSessionDataStructu
         public synchronized WriteRequest poll(IoSession session) {
             return q.poll();
         }
-        
+
         @Override
         public String toString() {
             return q.toString();