You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tr...@apache.org on 2005/04/21 17:43:17 UTC

svn commit: r164074 - in /directory/network/trunk/src/java/org/apache/mina: common/ByteBuffer.java common/Session.java protocol/io/IoAdapter.java protocol/io/IoProtocolAcceptor.java protocol/vmpipe/VmPipeSession.java util/BaseSession.java

Author: trustin
Date: Thu Apr 21 08:43:16 2005
New Revision: 164074

URL: http://svn.apache.org/viewcvs?rev=164074&view=rev
Log:
* Added Session.removeAttribute()
* IoAdapter doesn't store ProtocolSession in attachment anymore.
* Fixed: VmPipeSession doesn't call both SessionInitializer.

Modified:
    directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java
    directory/network/trunk/src/java/org/apache/mina/common/Session.java
    directory/network/trunk/src/java/org/apache/mina/protocol/io/IoAdapter.java
    directory/network/trunk/src/java/org/apache/mina/protocol/io/IoProtocolAcceptor.java
    directory/network/trunk/src/java/org/apache/mina/protocol/vmpipe/VmPipeSession.java
    directory/network/trunk/src/java/org/apache/mina/util/BaseSession.java

Modified: directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java?rev=164074&r1=164073&r2=164074&view=diff
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java Thu Apr 21 08:43:16 2005
@@ -32,6 +32,9 @@
 import java.nio.charset.CharsetEncoder;
 import java.nio.charset.CoderResult;
 
+import org.apache.mina.io.IoHandler;
+import org.apache.mina.io.IoSession;
+import org.apache.mina.protocol.ProtocolEncoderOutput;
 import org.apache.mina.util.Stack;
 
 /**

Modified: directory/network/trunk/src/java/org/apache/mina/common/Session.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/common/Session.java?rev=164074&r1=164073&r2=164074&view=diff
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/common/Session.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/common/Session.java Thu Apr 21 08:43:16 2005
@@ -72,6 +72,13 @@
     Object setAttribute( String key, Object value );
     
     /**
+     * Removes a user-defined attribute with the specified key.
+     * 
+     * @return The old value of the attribute.  <tt>null</tt> if not found.
+     */
+    Object removeAttribute( String key );
+    
+    /**
      * Returns the set of keys of all user-defined attributes.
      */
     Set getAttributeKeys();

Modified: directory/network/trunk/src/java/org/apache/mina/protocol/io/IoAdapter.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/protocol/io/IoAdapter.java?rev=164074&r1=164073&r2=164074&view=diff
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/protocol/io/IoAdapter.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/protocol/io/IoAdapter.java Thu Apr 21 08:43:16 2005
@@ -53,6 +53,8 @@
  */
 public class IoAdapter
 {
+    private static final String KEY = "IoAdapter.ProtocolSession";
+
     private final IoProtocolFilterChain filters = new IoProtocolFilterChain();
 
     IoAdapter()
@@ -162,14 +164,13 @@
         {
             if( marker == null )
                 return;
-            filters.messageSent( 
-                    ( ProtocolSession ) session.getAttachment(), marker );
+            filters.messageSent( getProtocolSession( session ),
+                                 marker );
         }
 
         void doWrite( IoSession session )
         {
-            ProtocolSessionImpl psession = ( ProtocolSessionImpl ) session
-                    .getAttachment();
+            ProtocolSessionImpl psession = getProtocolSession( session );
             ProtocolEncoder encoder = psession.encoder;
             Queue writeQueue = psession.writeQueue;
 
@@ -210,18 +211,18 @@
 
         private ProtocolSessionImpl getProtocolSession( IoSession session )
         {
-            ProtocolSessionImpl psession = ( ProtocolSessionImpl ) session
-                    .getAttachment();
+            ProtocolSessionImpl psession =
+                ( ProtocolSessionImpl ) session.getAttribute( KEY );
             if( psession == null )
             {
                 synchronized( session )
                 {
-                    psession = ( ProtocolSessionImpl ) session
-                            .getAttachment();
+                    psession =
+                        ( ProtocolSessionImpl ) session.getAttribute( KEY );
                     if( psession == null )
                     {
                         psession = new ProtocolSessionImpl( session, this );
-                        session.setAttachment( psession );
+                        session.setAttribute( KEY, psession );
                     }
                 }
             }
@@ -295,6 +296,11 @@
         public Object setAttribute( String key, Object value )
         {
             return session.setAttribute( key, value );
+        }
+        
+        public Object removeAttribute( String key )
+        {
+            return session.removeAttribute( key );
         }
 
         public Set getAttributeKeys()

Modified: directory/network/trunk/src/java/org/apache/mina/protocol/io/IoProtocolAcceptor.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/protocol/io/IoProtocolAcceptor.java?rev=164074&r1=164073&r2=164074&view=diff
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/protocol/io/IoProtocolAcceptor.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/protocol/io/IoProtocolAcceptor.java Thu Apr 21 08:43:16 2005
@@ -9,9 +9,11 @@
 import org.apache.mina.common.ExceptionMonitor;
 import org.apache.mina.common.SessionInitializer;
 import org.apache.mina.io.IoAcceptor;
+import org.apache.mina.io.IoSession;
 import org.apache.mina.protocol.ProtocolAcceptor;
 import org.apache.mina.protocol.ProtocolHandlerFilterChain;
 import org.apache.mina.protocol.ProtocolProvider;
+import org.apache.mina.protocol.ProtocolSession;
 
 /**
  * A {@link ProtocolAcceptor} which wraps {@link IoAcceptor} to provide

Modified: directory/network/trunk/src/java/org/apache/mina/protocol/vmpipe/VmPipeSession.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/protocol/vmpipe/VmPipeSession.java?rev=164074&r1=164073&r2=164074&view=diff
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/protocol/vmpipe/VmPipeSession.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/protocol/vmpipe/VmPipeSession.java Thu Apr 21 08:43:16 2005
@@ -61,11 +61,9 @@
         remoteSession = new VmPipeSession( this, remoteEntry.handler );
         if( remoteEntry.initializer != null )
         {
-            boolean success = false;
             try
             {
                 remoteEntry.initializer.initializeSession( remoteSession );
-                success = true;
             }
             catch( Throwable t )
             {
@@ -74,6 +72,8 @@
                 e.initCause( t );
                 throw e;
             }
+            
+            initializer.initializeSession( this );
         }
 
         remoteEntry.filters.sessionOpened( remoteSession );

Modified: directory/network/trunk/src/java/org/apache/mina/util/BaseSession.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/util/BaseSession.java?rev=164074&r1=164073&r2=164074&view=diff
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/util/BaseSession.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/util/BaseSession.java Thu Apr 21 08:43:16 2005
@@ -79,6 +79,14 @@
             return attributes.put( key, value );
         }
     }
+    
+    public Object removeAttribute( String key )
+    {
+        synchronized( attributes )
+        {
+            return attributes.remove( key );
+        }
+    }
 
     public Set getAttributeKeys() {
         synchronized( attributes )
@@ -86,7 +94,7 @@
             return attributes.keySet();
         }
     }
-
+    
     public long getReadBytes()
     {
         return readBytes;