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 2014/09/02 08:54:45 UTC

[1/2] git commit: Fixed a NPE (DIRMINA-982)

Repository: mina
Updated Branches:
  refs/heads/2.0 f029e2326 -> 0a30a079f


Fixed a NPE (DIRMINA-982)


Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/3b793f34
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/3b793f34
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/3b793f34

Branch: refs/heads/2.0
Commit: 3b793f343263a6750fd034b725db83e89bc345c3
Parents: f029e23
Author: Emmanuel Lécharny <el...@symas.com>
Authored: Tue Sep 2 08:16:44 2014 +0200
Committer: Emmanuel Lécharny <el...@symas.com>
Committed: Tue Sep 2 08:16:44 2014 +0200

----------------------------------------------------------------------
 .../java/org/apache/mina/core/write/DefaultWriteRequest.java     | 4 ++++
 .../java/org/apache/mina/filter/codec/ProtocolCodecFilter.java   | 3 ++-
 2 files changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina/blob/3b793f34/mina-core/src/main/java/org/apache/mina/core/write/DefaultWriteRequest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/core/write/DefaultWriteRequest.java b/mina-core/src/main/java/org/apache/mina/core/write/DefaultWriteRequest.java
index 3a9aac6..d3a9e74 100644
--- a/mina-core/src/main/java/org/apache/mina/core/write/DefaultWriteRequest.java
+++ b/mina-core/src/main/java/org/apache/mina/core/write/DefaultWriteRequest.java
@@ -32,6 +32,10 @@ import org.apache.mina.core.session.IoSession;
  * @author <a href="http://mina.apache.org">Apache MINA Project</a>
  */
 public class DefaultWriteRequest implements WriteRequest {
+    /** An empty message */
+    public static final byte[] EMPTY_MESSAGE = new byte[] {};
+
+    /** An empty FUTURE */
     private static final WriteFuture UNUSED_FUTURE = new WriteFuture() {
         public boolean isWritten() {
             return false;

http://git-wip-us.apache.org/repos/asf/mina/blob/3b793f34/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java b/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
index f413491..99270e5 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
@@ -445,7 +445,8 @@ public class ProtocolCodecFilter extends IoFilterAdapter {
 
             if (future == null) {
                 // Creates an empty writeRequest containing the destination
-                WriteRequest writeRequest = new DefaultWriteRequest(null, null, destination);
+                WriteRequest writeRequest = new DefaultWriteRequest(
+                    DefaultWriteRequest.EMPTY_MESSAGE, null, destination);
                 future = DefaultWriteFuture.newNotWrittenFuture(session, new NothingWrittenException(writeRequest));
             }
 


[2/2] git commit: Fixed a bug in the getSlice() method : we were setting the position before the limit() (DIRMINA-981)

Posted by el...@apache.org.
Fixed a bug in the getSlice() method : we were setting the position before the limit() (DIRMINA-981)


Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/0a30a079
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/0a30a079
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/0a30a079

Branch: refs/heads/2.0
Commit: 0a30a079fe2dca721cc6f049d0b4563d98844268
Parents: 3b793f3
Author: Emmanuel Lécharny <el...@symas.com>
Authored: Tue Sep 2 08:54:04 2014 +0200
Committer: Emmanuel Lécharny <el...@symas.com>
Committed: Tue Sep 2 08:54:04 2014 +0200

----------------------------------------------------------------------
 .../mina/core/buffer/AbstractIoBuffer.java      | 94 ++++++++++----------
 .../apache/mina/core/buffer/IoBufferTest.java   | 34 +++++++
 2 files changed, 81 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina/blob/0a30a079/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java b/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java
index 5a6395c..45449db 100644
--- a/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java
+++ b/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java
@@ -1193,12 +1193,12 @@ public abstract class AbstractIoBuffer extends IoBuffer {
         }
 
         clear();
-        position(index);
         limit(endIndex);
+        position(index);
 
         IoBuffer slice = slice();
-        position(pos);
         limit(limit);
+        position(pos);
 
         return slice;
     }
@@ -2232,8 +2232,8 @@ public abstract class AbstractIoBuffer extends IoBuffer {
         putInt(newPos - oldPos - 4);
         position(newPos);
         return this;
-    } 
-    
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -2319,40 +2319,40 @@ public abstract class AbstractIoBuffer extends IoBuffer {
     public IoBuffer fill(byte value, int size) {
         autoExpand(size);
         int q = size >>> 3;
-        int r = size & 7;
+            int r = size & 7;
 
-        if (q > 0) {
-            int intValue = value | value << 8 | value << 16 | value << 24;
-            long longValue = intValue;
-            longValue <<= 32;
-            longValue |= intValue;
+            if (q > 0) {
+                int intValue = value | value << 8 | value << 16 | value << 24;
+                long longValue = intValue;
+                longValue <<= 32;
+                longValue |= intValue;
 
-            for (int i = q; i > 0; i--) {
-                putLong(longValue);
+                for (int i = q; i > 0; i--) {
+                    putLong(longValue);
+                }
             }
-        }
 
-        q = r >>> 2;
-        r = r & 3;
+            q = r >>> 2;
+                r = r & 3;
 
-        if (q > 0) {
-            int intValue = value | value << 8 | value << 16 | value << 24;
-            putInt(intValue);
-        }
+                if (q > 0) {
+                    int intValue = value | value << 8 | value << 16 | value << 24;
+                    putInt(intValue);
+                }
 
-        q = r >> 1;
-        r = r & 1;
+                q = r >> 1;
+                    r = r & 1;
 
-        if (q > 0) {
-            short shortValue = (short) (value | value << 8);
-            putShort(shortValue);
-        }
+                    if (q > 0) {
+                        short shortValue = (short) (value | value << 8);
+                        putShort(shortValue);
+                    }
 
-        if (r > 0) {
-            put(value);
-        }
+                    if (r > 0) {
+                        put(value);
+                    }
 
-        return this;
+                    return this;
     }
 
     /**
@@ -2377,31 +2377,31 @@ public abstract class AbstractIoBuffer extends IoBuffer {
     public IoBuffer fill(int size) {
         autoExpand(size);
         int q = size >>> 3;
-        int r = size & 7;
+                    int r = size & 7;
 
-        for (int i = q; i > 0; i--) {
-            putLong(0L);
-        }
+                    for (int i = q; i > 0; i--) {
+                        putLong(0L);
+                    }
 
-        q = r >>> 2;
-        r = r & 3;
+                    q = r >>> 2;
+                r = r & 3;
 
-        if (q > 0) {
-            putInt(0);
-        }
+                if (q > 0) {
+                    putInt(0);
+                }
 
-        q = r >> 1;
-        r = r & 1;
+                q = r >> 1;
+            r = r & 1;
 
-        if (q > 0) {
-            putShort((short) 0);
-        }
+            if (q > 0) {
+                putShort((short) 0);
+            }
 
-        if (r > 0) {
-            put((byte) 0);
-        }
+            if (r > 0) {
+                put((byte) 0);
+            }
 
-        return this;
+            return this;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/mina/blob/0a30a079/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferTest.java b/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferTest.java
index 3a4e477..4d23a7e 100644
--- a/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferTest.java
+++ b/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferTest.java
@@ -1415,4 +1415,38 @@ public class IoBufferTest {
         assertEquals(0x0000000000008181L, buf.getUnsignedInt());
         assertEquals(0x0000000000000080L, buf.getUnsignedInt());
     }
+
+    /**
+     * Test the getSlice method (even if we haven't flipped the buffer
+     */
+    @Test
+    public void testGetSlice() {
+        IoBuffer buf = IoBuffer.allocate(36);
+
+        for (byte i = 0; i < 36; i++) {
+            buf.put(i);
+        }
+
+        IoBuffer res = buf.getSlice(1, 3);
+
+        // The limit should be 3, the pos should be 0 and the bytes read
+        // should be 0x01, 0x02 and 0x03
+        assertEquals(0, res.position());
+        assertEquals(3, res.limit());
+        assertEquals(0x01, res.get());
+        assertEquals(0x02, res.get());
+        assertEquals(0x03, res.get());
+
+        // Now test after a flip
+        buf.flip();
+
+        res = buf.getSlice(1, 3);
+        // The limit should be 3, the pos should be 0 and the bytes read
+        // should be 0x01, 0x02 and 0x03
+        assertEquals(0, res.position());
+        assertEquals(3, res.limit());
+        assertEquals(0x01, res.get());
+        assertEquals(0x02, res.get());
+        assertEquals(0x03, res.get());
+    }
 }