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: RaphaeÌl P. Barazzutti <[email protected]> Authored: Wed Jul 3 22:15:11 2013 +0200 Committer: RaphaeÌl P. Barazzutti <[email protected]> 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)); + } + } }
