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());
+ }
}