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