You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by rb...@apache.org on 2013/07/04 00:53:57 UTC
[5/5] git commit: Thrift module fixes
Thrift module fixes
Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/e5bc469c
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/e5bc469c
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/e5bc469c
Branch: refs/heads/trunk
Commit: e5bc469cdae9e19daae664b011368a59ae658829
Parents: ed49620
Author: Raphaël P. Barazzutti <rb...@apache.org>
Authored: Wed Jul 3 22:15:11 2013 +0200
Committer: Raphaël P. Barazzutti <rb...@apache.org>
Committed: Thu Jul 4 00:41:04 2013 +0200
----------------------------------------------------------------------
.../mina/codec/delimited/ThriftDecoder.java | 5 +-
.../codec/delimited/ThriftDynamicDecoder.java | 17 +++---
.../mina/codec/delimited/ThriftEncoder.java | 5 +-
.../ThriftDynamicMessageDecoder.java | 59 ++++++++++----------
.../serialization/ThriftMessageDecoder.java | 12 ++--
.../serialization/ThriftMessageEncoder.java | 2 +-
.../delimited/serialization/ThriftTest.java | 52 ++++++++---------
7 files changed, 82 insertions(+), 70 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina/blob/e5bc469c/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftDecoder.java
----------------------------------------------------------------------
diff --git a/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftDecoder.java b/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftDecoder.java
index 15154ed..4f2957d 100644
--- a/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftDecoder.java
+++ b/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftDecoder.java
@@ -19,7 +19,10 @@
*/
package org.apache.mina.codec.delimited;
+import java.nio.ByteOrder;
+
import org.apache.mina.codec.delimited.ints.RawInt32;
+import org.apache.mina.codec.delimited.serialization.ThriftMessageDecoder;
import org.apache.thrift.TBase;
/**
@@ -31,6 +34,6 @@ public class ThriftDecoder<M extends TBase<?, ?>> extends SizePrefixedDecoder<M>
}
public ThriftDecoder(Class<M> clazz) throws NoSuchMethodException {
- super(new RawInt32.Decoder(RawInt32.Endianness.BIG), null);
+ super(new RawInt32(ByteOrder.BIG_ENDIAN).getDecoder(), new ThriftMessageDecoder<>(clazz));
}
}
http://git-wip-us.apache.org/repos/asf/mina/blob/e5bc469c/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftDynamicDecoder.java
----------------------------------------------------------------------
diff --git a/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftDynamicDecoder.java b/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftDynamicDecoder.java
index f04a688..922d0fa 100644
--- a/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftDynamicDecoder.java
+++ b/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftDynamicDecoder.java
@@ -26,12 +26,15 @@ import org.apache.thrift.TBase;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public class ThriftDynamicDecoder extends SizePrefixedDecoder<ThriftDynamicMessageDecoder.ThriftSerializedMessage> {
- public static <L extends TBase<?, ?>> ThriftDynamicDecoder newInstance() throws NoSuchMethodException {
- return new ThriftDynamicDecoder();
- }
+public class ThriftDynamicDecoder
+ extends
+ SizePrefixedDecoder<ThriftDynamicMessageDecoder.ThriftSerializedMessage> {
+ public static <L extends TBase<?, ?>> ThriftDynamicDecoder newInstance()
+ throws NoSuchMethodException {
+ return new ThriftDynamicDecoder();
+ }
- public ThriftDynamicDecoder() throws NoSuchMethodException {
- super(new VarInt.Decoder(), ThriftDynamicMessageDecoder.newInstance());
- }
+ public ThriftDynamicDecoder() throws NoSuchMethodException {
+ super(new VarInt().getDecoder(), new ThriftDynamicMessageDecoder());
+ }
}
http://git-wip-us.apache.org/repos/asf/mina/blob/e5bc469c/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftEncoder.java
----------------------------------------------------------------------
diff --git a/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftEncoder.java b/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftEncoder.java
index 5f98f98..6f65760 100644
--- a/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftEncoder.java
+++ b/thrift/src/main/java/org/apache/mina/codec/delimited/ThriftEncoder.java
@@ -19,8 +19,9 @@
*/
package org.apache.mina.codec.delimited;
+import java.nio.ByteOrder;
+
import org.apache.mina.codec.delimited.ints.RawInt32;
-import org.apache.mina.codec.delimited.ints.RawInt32.Endianness;
import org.apache.mina.codec.delimited.serialization.ThriftMessageEncoder;
import org.apache.thrift.TBase;
@@ -34,6 +35,6 @@ public class ThriftEncoder<OUT extends TBase<?, ?>> extends SizePrefixedEncoder<
}
public ThriftEncoder(Class<OUT> clazz) throws NoSuchMethodException {
- super(new RawInt32.Encoder(Endianness.BIG), ThriftMessageEncoder.newInstance(clazz));
+ super(new RawInt32(ByteOrder.BIG_ENDIAN).getEncoder(), ThriftMessageEncoder.newInstance(clazz));
}
}
http://git-wip-us.apache.org/repos/asf/mina/blob/e5bc469c/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftDynamicMessageDecoder.java
----------------------------------------------------------------------
diff --git a/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftDynamicMessageDecoder.java b/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftDynamicMessageDecoder.java
index 5143bb3..5e4ca8b 100644
--- a/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftDynamicMessageDecoder.java
+++ b/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftDynamicMessageDecoder.java
@@ -19,9 +19,8 @@
*/
package org.apache.mina.codec.delimited.serialization;
-import java.nio.ByteBuffer;
-
-import org.apache.mina.codec.delimited.ByteBufferDecoder;
+import org.apache.mina.codec.IoBuffer;
+import org.apache.mina.codec.delimited.IoBufferDecoder;
import org.apache.thrift.TBase;
import org.apache.thrift.TDeserializer;
import org.apache.thrift.TException;
@@ -30,35 +29,39 @@ import org.apache.thrift.protocol.TBinaryProtocol;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public class ThriftDynamicMessageDecoder extends ByteBufferDecoder<ThriftDynamicMessageDecoder.ThriftSerializedMessage> {
- private TDeserializer deserializer = new TDeserializer(new TBinaryProtocol.Factory());
+public class ThriftDynamicMessageDecoder extends
+ IoBufferDecoder<ThriftDynamicMessageDecoder.ThriftSerializedMessage> {
+ private final TDeserializer deserializer = new TDeserializer(
+ new TBinaryProtocol.Factory());
- @Override
- public ThriftSerializedMessage decode(ByteBuffer input) {
- byte array[] = new byte[input.remaining()];
- input.get(array);
- return new ThriftSerializedMessage(deserializer, array);
- }
+ @Override
+ public ThriftSerializedMessage decode(IoBuffer buffer) {
+ return new ThriftSerializedMessage(deserializer, buffer);
+ }
- public static final class ThriftSerializedMessage {
- private byte array[];
+ public static final class ThriftSerializedMessage {
+ private final IoBuffer buffer;
- private TDeserializer deserializer;
+ private final TDeserializer deserializer;
- public ThriftSerializedMessage(TDeserializer deserializer, byte array[]) {
- this.array = array;
- this.deserializer = deserializer;
- }
+ public ThriftSerializedMessage(TDeserializer deserializer,
+ IoBuffer buffer) {
+ this.buffer = buffer;
+ this.deserializer = deserializer;
+ }
- public <L extends TBase<?, ?>> L get(Class<L> clazz) throws InstantiationException, IllegalAccessException,
- TException {
- L object = clazz.newInstance();
- deserializer.deserialize(object, array);
- return object;
- }
- }
+ public <L extends TBase<?, ?>> L get(Class<L> clazz)
+ throws InstantiationException, IllegalAccessException,
+ TException {
+ L object = clazz.newInstance();
+ byte array[] = new byte[buffer.remaining()];
+ buffer.get(array);
+ deserializer.deserialize(object, array);
+ return object;
+ }
+ }
- public static ThriftDynamicMessageDecoder newInstance() {
- return new ThriftDynamicMessageDecoder();
- }
+ public static ThriftDynamicMessageDecoder newInstance() {
+ return new ThriftDynamicMessageDecoder();
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/mina/blob/e5bc469c/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftMessageDecoder.java
----------------------------------------------------------------------
diff --git a/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftMessageDecoder.java b/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftMessageDecoder.java
index 3a1cfb4..f04456a 100644
--- a/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftMessageDecoder.java
+++ b/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftMessageDecoder.java
@@ -19,24 +19,24 @@
*/
package org.apache.mina.codec.delimited.serialization;
-import java.nio.ByteBuffer;
+import org.apache.mina.codec.IoBuffer;
import org.apache.mina.codec.ProtocolDecoderException;
-import org.apache.mina.codec.delimited.ByteBufferDecoder;
+import org.apache.mina.codec.delimited.IoBufferDecoder;
import org.apache.thrift.TBase;
import org.apache.thrift.TDeserializer;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
/**
- * Decode {@link ByteBuffer} into Thrift messages.
+ * Decode {@link IoBuffer} into Thrift messages.
*
* @param <OUTPUT> the base type for decoded messages.
*
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public class ThriftMessageDecoder<OUTPUT extends TBase<?, ?>> extends ByteBufferDecoder<OUTPUT> {
- private TDeserializer deserializer = new TDeserializer(new TBinaryProtocol.Factory());
+public class ThriftMessageDecoder<OUTPUT extends TBase<?, ?>> extends IoBufferDecoder<OUTPUT> {
+ private final TDeserializer deserializer = new TDeserializer(new TBinaryProtocol.Factory());
private final Class<OUTPUT> clazz;
@@ -58,7 +58,7 @@ public class ThriftMessageDecoder<OUTPUT extends TBase<?, ?>> extends ByteBuffer
* {@inheritDoc}
*/
@Override
- public OUTPUT decode(ByteBuffer input) {
+ public OUTPUT decode(IoBuffer input) {
OUTPUT object;
try {
byte array[] = new byte[input.remaining()];
http://git-wip-us.apache.org/repos/asf/mina/blob/e5bc469c/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftMessageEncoder.java
----------------------------------------------------------------------
diff --git a/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftMessageEncoder.java b/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftMessageEncoder.java
index 4bb9539..26c9347 100644
--- a/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftMessageEncoder.java
+++ b/thrift/src/main/java/org/apache/mina/codec/delimited/serialization/ThriftMessageEncoder.java
@@ -47,7 +47,7 @@ public class ThriftMessageEncoder<INPUT extends TBase<?, ?>> extends ByteBufferE
}
private byte[] prepareBuffer(INPUT message) throws TException {
- if (message != lastMessage) {
+ if (message != lastMessage) { // NOSONAR, comparing the messages, not their content
lastBuffer = serializer.serialize(message);
this.lastMessage = message;
}
http://git-wip-us.apache.org/repos/asf/mina/blob/e5bc469c/thrift/src/test/java/org/apache/mina/codec/delimited/serialization/ThriftTest.java
----------------------------------------------------------------------
diff --git a/thrift/src/test/java/org/apache/mina/codec/delimited/serialization/ThriftTest.java b/thrift/src/test/java/org/apache/mina/codec/delimited/serialization/ThriftTest.java
index 6e7cf0b..920a82a 100644
--- a/thrift/src/test/java/org/apache/mina/codec/delimited/serialization/ThriftTest.java
+++ b/thrift/src/test/java/org/apache/mina/codec/delimited/serialization/ThriftTest.java
@@ -24,8 +24,9 @@ import static org.junit.Assert.assertEquals;
import java.util.LinkedList;
import java.util.List;
-import org.apache.mina.codec.delimited.ByteBufferDecoder;
+import org.apache.mina.codec.IoBuffer;
import org.apache.mina.codec.delimited.ByteBufferEncoder;
+import org.apache.mina.codec.delimited.IoBufferDecoder;
import org.apache.mina.generated.thrift.UserProfile;
import org.junit.Test;
@@ -36,34 +37,35 @@ import org.junit.Test;
*/
public class ThriftTest extends GenericSerializerTest<UserProfile> {
- @Override
- public List<UserProfile> getObjects() {
- List<UserProfile> list = new LinkedList<UserProfile>();
+ @Override
+ public List<UserProfile> getObjects() {
+ List<UserProfile> list = new LinkedList<UserProfile>();
- list.add(new UserProfile().setUid(1).setName("Jean Dupond"));
- list.add(new UserProfile().setUid(2).setName("Marie Blanc"));
+ list.add(new UserProfile().setUid(1).setName("Jean Dupond"));
+ list.add(new UserProfile().setUid(2).setName("Marie Blanc"));
- return list;
- }
+ return list;
+ }
- @Override
- public ByteBufferDecoder<UserProfile> getDecoder() throws Exception {
- return ThriftMessageDecoder.newInstance(UserProfile.class);
- }
+ @Override
+ public IoBufferDecoder<UserProfile> getDecoder() throws Exception {
+ return ThriftMessageDecoder.newInstance(UserProfile.class);
+ }
- @Override
- public ByteBufferEncoder<UserProfile> getEncoder() throws Exception {
- return ThriftMessageEncoder.newInstance(UserProfile.class);
- }
+ @Override
+ public ByteBufferEncoder<UserProfile> getEncoder() throws Exception {
+ return ThriftMessageEncoder.newInstance(UserProfile.class);
+ }
- @Test
- public void testDynamic() throws Exception {
- ByteBufferEncoder<UserProfile> encoder = getEncoder();
- ThriftDynamicMessageDecoder decoder = new ThriftDynamicMessageDecoder();
+ @Test
+ public void testDynamic() throws Exception {
+ ByteBufferEncoder<UserProfile> encoder = getEncoder();
+ ThriftDynamicMessageDecoder decoder = new ThriftDynamicMessageDecoder();
- for (UserProfile object : getObjects()) {
- ThriftDynamicMessageDecoder.ThriftSerializedMessage message = decoder.decode(encoder.encode(object));
- assertEquals(object, message.get(UserProfile.class));
- }
- }
+ for (UserProfile object : getObjects()) {
+ ThriftDynamicMessageDecoder.ThriftSerializedMessage message = decoder
+ .decode(IoBuffer.wrap(encoder.encode(object)));
+ assertEquals(object, message.get(UserProfile.class));
+ }
+ }
}