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/10/17 10:26:37 UTC

svn commit: r325858 - in /directory/network: branches/0.7/src/java/org/apache/mina/protocol/ branches/0.7/src/java/org/apache/mina/protocol/io/ trunk/src/java/org/apache/mina/filter/codec/

Author: trustin
Date: Mon Oct 17 01:26:18 2005
New Revision: 325858

URL: http://svn.apache.org/viewcvs?rev=325858&view=rev
Log:
Resolved: DIRMINA-94 Get rid of ProtocolViolationException.getBuffer()
* Replaced get/setBuffer with get/setHexdump()
* All buffers are now released properly even in case of ProtocolViolationException.



Modified:
    directory/network/branches/0.7/src/java/org/apache/mina/protocol/ProtocolViolationException.java
    directory/network/branches/0.7/src/java/org/apache/mina/protocol/io/IoAdapter.java
    directory/network/trunk/src/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
    directory/network/trunk/src/java/org/apache/mina/filter/codec/ProtocolViolationException.java

Modified: directory/network/branches/0.7/src/java/org/apache/mina/protocol/ProtocolViolationException.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/0.7/src/java/org/apache/mina/protocol/ProtocolViolationException.java?rev=325858&r1=325857&r2=325858&view=diff
==============================================================================
--- directory/network/branches/0.7/src/java/org/apache/mina/protocol/ProtocolViolationException.java (original)
+++ directory/network/branches/0.7/src/java/org/apache/mina/protocol/ProtocolViolationException.java Mon Oct 17 01:26:18 2005
@@ -33,7 +33,7 @@
 {
     private static final long serialVersionUID = 3545799879533408565L;
 
-	private ByteBuffer buffer;
+	private String hexdump;
 
     /**
      * Constructs a new instance.
@@ -79,10 +79,10 @@
             message = "";
         }
 
-        if( buffer != null )
+        if( hexdump != null )
         {
             return message + ( ( message.length() > 0 ) ? " " : "" )
-                   + "(Hexdump: " + buffer.getHexDump() + ')';
+                   + "(Hexdump: " + hexdump + ')';
         }
         else
         {
@@ -91,18 +91,22 @@
     }
 
     /**
-     * Returns unknown message part.
+     * Returns the hexdump of the unknown message part.
      */
-    public ByteBuffer getBuffer()
+    public String getHexdump()
     {
-        return buffer;
+        return hexdump;
     }
 
     /**
-     * Sets unknown message part.
+     * Sets the hexdump of the unknown message part.
      */
-    public void setBuffer( ByteBuffer buffer )
+    public void setHexdump( String hexdump )
     {
-        this.buffer = buffer;
+        if( this.hexdump != null )
+        {
+            throw new IllegalStateException( "Hexdump cannot be set more than once." );
+        }
+        this.hexdump = hexdump;
     }
 }

Modified: directory/network/branches/0.7/src/java/org/apache/mina/protocol/io/IoAdapter.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/0.7/src/java/org/apache/mina/protocol/io/IoAdapter.java?rev=325858&r1=325857&r2=325858&view=diff
==============================================================================
--- directory/network/branches/0.7/src/java/org/apache/mina/protocol/io/IoAdapter.java (original)
+++ directory/network/branches/0.7/src/java/org/apache/mina/protocol/io/IoAdapter.java Mon Oct 17 01:26:18 2005
@@ -151,8 +151,7 @@
             }
             catch( ProtocolViolationException pve )
             {
-                in.acquire();  // Prevent the buffer from being released.
-                pve.setBuffer( in );
+                pve.setHexdump( in.getHexDump() );
                 managerFilterChain.exceptionCaught( psession, pve );
             }
             catch( Throwable t )

Modified: directory/network/trunk/src/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java?rev=325858&r1=325857&r2=325858&view=diff
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java Mon Oct 17 01:26:18 2005
@@ -37,16 +37,17 @@
             {
                 decoder.decode( session, in, decoderOut );
             }
-            
-            in.release();
         }
         catch( ProtocolViolationException pve )
         {
-            pve.setBuffer( in );
+            pve.setHexdump( in.getHexDump() );
             throw pve;
         }
         finally
         {
+            // Release the read buffer.
+            in.release();
+            
             Queue queue = decoderOut.getMessageQueue();
             synchronized( queue )
             {

Modified: directory/network/trunk/src/java/org/apache/mina/filter/codec/ProtocolViolationException.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/filter/codec/ProtocolViolationException.java?rev=325858&r1=325857&r2=325858&view=diff
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/filter/codec/ProtocolViolationException.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/filter/codec/ProtocolViolationException.java Mon Oct 17 01:26:18 2005
@@ -33,7 +33,7 @@
 {
     private static final long serialVersionUID = 3545799879533408565L;
 
-	private ByteBuffer buffer;
+	private String hexdump;
 
     /**
      * Constructs a new instance.
@@ -79,10 +79,10 @@
             message = "";
         }
 
-        if( buffer != null )
+        if( hexdump != null )
         {
             return message + ( ( message.length() > 0 ) ? " " : "" )
-                   + "(Hexdump: " + buffer.getHexDump() + ')';
+                   + "(Hexdump: " + hexdump + ')';
         }
         else
         {
@@ -91,18 +91,22 @@
     }
 
     /**
-     * Returns unknown message part.
+     * Returns the hexdump of the unknown message part.
      */
-    public ByteBuffer getBuffer()
+    public String getHexdump()
     {
-        return buffer;
+        return hexdump;
     }
 
     /**
-     * Sets unknown message part.
+     * Sets the hexdump of the unknown message part.
      */
-    public void setBuffer( ByteBuffer buffer )
+    public void setHexdump( String hexdump )
     {
-        this.buffer = buffer;
+        if( this.hexdump != null )
+        {
+            throw new IllegalStateException( "Hexdump cannot be set more than once." );
+        }
+        this.hexdump = hexdump;
     }
 }