Author: trustin
Date: Tue Dec 12 22:42:19 2006
New Revision: 486514

URL: http://svn.apache.org/viewvc?view=rev&rev=486514
Log:
Merged changes from branches/1.0 (DIRMINA-321)

Added:
    
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/serialization/
      - copied from r486512, 
mina/branches/1.0/core/src/test/java/org/apache/mina/filter/codec/serialization/
    
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java
      - copied, changed from r486512, 
mina/branches/1.0/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java
Modified:
    
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java
    
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
    
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineEncoderTest.java

Modified: 
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java
URL: 
http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java?view=diff&rev=486514&r1=486513&r2=486514
==============================================================================
--- 
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java
 (original)
+++ 
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java
 Tue Dec 12 22:42:19 2006
@@ -120,7 +120,7 @@
         buf.putInt( objectSize );
         in.readFully( buf.array(), 4, objectSize );
         buf.position( 0 );
-        buf.limit( objectSize );
+        buf.limit( objectSize + 4 );
         
         Object answer = buf.getObject( classLoader );
         buf.release();

Modified: 
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
URL: 
http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java?view=diff&rev=486514&r1=486513&r2=486514
==============================================================================
--- 
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
 (original)
+++ 
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
 Tue Dec 12 22:42:19 2006
@@ -19,8 +19,8 @@
  */
 package org.apache.mina.filter.codec.support;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.LinkedList;
+import java.util.Queue;
 
 import org.apache.mina.common.ByteBuffer;
 import org.apache.mina.common.WriteFuture;
@@ -34,13 +34,13 @@
  */
 public abstract class SimpleProtocolEncoderOutput implements 
ProtocolEncoderOutput
 {
-    private final List<ByteBuffer> bufferQueue = new ArrayList<ByteBuffer>();
+    private final Queue<ByteBuffer> bufferQueue = new LinkedList<ByteBuffer>();
 
     public SimpleProtocolEncoderOutput()
     {
     }
 
-    public List<ByteBuffer> getBufferQueue()
+    public Queue<ByteBuffer> getBufferQueue()
     {
         return bufferQueue;
     }
@@ -52,53 +52,68 @@
 
     public void mergeAll()
     {
+        int sum = 0;
         final int size = bufferQueue.size();
-
+        
         if( size < 2 )
         {
             // no need to merge!
             return;
         }
-
+        
         // Get the size of merged BB
-        int sum = 0;
-        for( int i = size - 1; i >= 0; i -- )
+        for( Object o: bufferQueue )
         {
-            sum += bufferQueue.get( i ).remaining();
+            sum += ( ( ByteBuffer ) o ).remaining();
         }
-
+        
         // Allocate a new BB that will contain all fragments
         ByteBuffer newBuf = ByteBuffer.allocate( sum );
-
+        
         // and merge all.
-        for( ; !bufferQueue.isEmpty(); )
+        for( ;; )
         {
-            ByteBuffer buf = bufferQueue.remove( 0 );
-
+            ByteBuffer buf = bufferQueue.poll();
+            if( buf == null )
+            {
+                break;
+            }
+    
             newBuf.put( buf );
             buf.release();
         }
-
+        
         // Push the new buffer finally.
         newBuf.flip();
-        bufferQueue.add( newBuf );
+        bufferQueue.offer(newBuf);
     }
 
     public WriteFuture flush()
     {
+        Queue bufferQueue = this.bufferQueue;
         WriteFuture future = null;
-
-        for( ; !bufferQueue.isEmpty(); )
+        if( bufferQueue.isEmpty() )
         {
-            ByteBuffer buf = bufferQueue.remove( 0 );
-
-            // Flush only when the buffer has remaining.
-            if( buf.hasRemaining() )
+            return null;
+        }
+        else
+        {
+            for( ;; )
             {
-                future = doFlush( buf );
+                ByteBuffer buf = ( ByteBuffer ) bufferQueue.poll();
+                if( buf == null )
+                {
+                    break;
+                }
+                
+                // Flush only when the buffer has remaining.
+                if( buf.hasRemaining() )
+                {
+                    future = doFlush( buf );
+                }
             }
         }
-
+        
         return future;
     }
 

Copied: 
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java
 (from r486512, 
mina/branches/1.0/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java)
URL: 
http://svn.apache.org/viewvc/mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java?view=diff&rev=486514&p1=mina/branches/1.0/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java&r1=486512&p2=mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java&r2=486514
==============================================================================
--- 
mina/branches/1.0/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java
 (original)
+++ 
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java
 Tue Dec 12 22:42:19 2006
@@ -67,7 +67,7 @@
         encoder.encode( session, expected, out );
         
         Assert.assertEquals( 1, out.getBufferQueue().size() );
-        ByteBuffer buf = ( ByteBuffer ) out.getBufferQueue().poll();
+        ByteBuffer buf = out.getBufferQueue().poll();
         
         testDecoderAndInputStream( expected, buf );
     }

Modified: 
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineEncoderTest.java
URL: 
http://svn.apache.org/viewvc/mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineEncoderTest.java?view=diff&rev=486514&r1=486513&r2=486514
==============================================================================
--- 
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineEncoderTest.java
 (original)
+++ 
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineEncoderTest.java
 Tue Dec 12 22:42:19 2006
@@ -67,7 +67,7 @@
 
         encoder.encode( session, "ABC", out );
         Assert.assertEquals( 1, out.getBufferQueue().size() );
-        ByteBuffer buf = out.getBufferQueue().remove(0);
+        ByteBuffer buf = out.getBufferQueue().poll();
         Assert.assertEquals( 5, buf.remaining() );
         Assert.assertEquals( 'A', buf.get() );
         Assert.assertEquals( 'B', buf.get() );


Reply via email to