Protobuf module fixes
Project: http://git-wip-us.apache.org/repos/asf/mina/repo Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/1c856929 Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/1c856929 Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/1c856929 Branch: refs/heads/trunk Commit: 1c856929ea26a63b979e3097d733c5723c12fda8 Parents: e564180 Author: RaphaeÌl P. Barazzutti <[email protected]> Authored: Thu Jul 4 00:04:40 2013 +0200 Committer: RaphaeÌl P. Barazzutti <[email protected]> Committed: Thu Jul 4 00:41:04 2013 +0200 ---------------------------------------------------------------------- .../serialization/GenericSerializerTest.java | 2 +- .../mina/codec/delimited/ProtobufDecoder.java | 28 +++++----- .../codec/delimited/ProtobufDynamicDecoder.java | 2 +- .../mina/codec/delimited/ProtobufEncoder.java | 2 +- .../ProtobufDynamicMessageDecoder.java | 17 +++--- .../serialization/ProtobufMessageDecoder.java | 11 ++-- .../delimited/serialization/ProtobufTest.java | 54 +++++++++++--------- 7 files changed, 61 insertions(+), 55 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina/blob/1c856929/codec/src/test/java/org/apache/mina/codec/delimited/serialization/GenericSerializerTest.java ---------------------------------------------------------------------- diff --git a/codec/src/test/java/org/apache/mina/codec/delimited/serialization/GenericSerializerTest.java b/codec/src/test/java/org/apache/mina/codec/delimited/serialization/GenericSerializerTest.java index 487c9bd..e0ce0cb 100644 --- a/codec/src/test/java/org/apache/mina/codec/delimited/serialization/GenericSerializerTest.java +++ b/codec/src/test/java/org/apache/mina/codec/delimited/serialization/GenericSerializerTest.java @@ -60,7 +60,7 @@ public abstract class GenericSerializerTest<T> { ByteBuffer out = ByteBuffer.allocate(size); encoder.writeTo(object, out); assertEquals(size, out.position()); - out.position(0); + out.rewind(); assertEquals(object, decoder.decode(IoBuffer.wrap(out))); } } http://git-wip-us.apache.org/repos/asf/mina/blob/1c856929/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufDecoder.java ---------------------------------------------------------------------- diff --git a/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufDecoder.java b/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufDecoder.java index dfdf889..d2ef265 100644 --- a/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufDecoder.java +++ b/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufDecoder.java @@ -30,18 +30,22 @@ import com.google.protobuf.GeneratedMessage; * * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ -public class ProtobufDecoder<OUTPUT extends GeneratedMessage> extends SizePrefixedDecoder<OUTPUT> { - public static <L extends GeneratedMessage> ProtobufDecoder<L> newInstance(Class<L> clazz, - ExtensionRegistryLite registry) throws NoSuchMethodException { - return new ProtobufDecoder<L>(clazz, registry); - } +public class ProtobufDecoder<OUTPUT extends GeneratedMessage> extends + SizePrefixedDecoder<OUTPUT> { + public static <L extends GeneratedMessage> ProtobufDecoder<L> newInstance( + Class<L> clazz, ExtensionRegistryLite registry) + throws NoSuchMethodException { + return new ProtobufDecoder<L>(clazz, registry); + } - public static <L extends GeneratedMessage> ProtobufDecoder<L> newInstance(Class<L> clazz) - throws NoSuchMethodException { - return newInstance(clazz, ExtensionRegistryLite.getEmptyRegistry()); - } + public static <L extends GeneratedMessage> ProtobufDecoder<L> newInstance( + Class<L> clazz) throws NoSuchMethodException { + return newInstance(clazz, ExtensionRegistryLite.getEmptyRegistry()); + } - public ProtobufDecoder(Class<OUTPUT> clazz, ExtensionRegistryLite registry) throws NoSuchMethodException { - super(new VarInt.Decoder(), ProtobufMessageDecoder.newInstance(clazz, registry)); - } + public ProtobufDecoder(Class<OUTPUT> clazz, ExtensionRegistryLite registry) + throws NoSuchMethodException { + super(new VarInt().getDecoder(), ProtobufMessageDecoder.newInstance( + clazz, registry)); + } } http://git-wip-us.apache.org/repos/asf/mina/blob/1c856929/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufDynamicDecoder.java ---------------------------------------------------------------------- diff --git a/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufDynamicDecoder.java b/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufDynamicDecoder.java index 001fc92..9cf8cda 100644 --- a/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufDynamicDecoder.java +++ b/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufDynamicDecoder.java @@ -34,6 +34,6 @@ public class ProtobufDynamicDecoder extends } public ProtobufDynamicDecoder() throws NoSuchMethodException { - super(new VarInt.Decoder(), ProtobufDynamicMessageDecoder.newInstance()); + super(new VarInt().getDecoder(), ProtobufDynamicMessageDecoder.newInstance()); } } http://git-wip-us.apache.org/repos/asf/mina/blob/1c856929/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufEncoder.java ---------------------------------------------------------------------- diff --git a/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufEncoder.java b/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufEncoder.java index 836212f..e474877 100644 --- a/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufEncoder.java +++ b/protobuf/src/main/java/org/apache/mina/codec/delimited/ProtobufEncoder.java @@ -38,6 +38,6 @@ public class ProtobufEncoder<INPUT extends GeneratedMessage> extends SizePrefixe } public ProtobufEncoder(Class<INPUT> clazz) { - super(new VarInt.Encoder(), ProtobufMessageEncoder.newInstance(clazz)); + super(new VarInt().getEncoder(), ProtobufMessageEncoder.newInstance(clazz)); } } http://git-wip-us.apache.org/repos/asf/mina/blob/1c856929/protobuf/src/main/java/org/apache/mina/codec/delimited/serialization/ProtobufDynamicMessageDecoder.java ---------------------------------------------------------------------- diff --git a/protobuf/src/main/java/org/apache/mina/codec/delimited/serialization/ProtobufDynamicMessageDecoder.java b/protobuf/src/main/java/org/apache/mina/codec/delimited/serialization/ProtobufDynamicMessageDecoder.java index 1cc3c6b..7aff03e 100644 --- a/protobuf/src/main/java/org/apache/mina/codec/delimited/serialization/ProtobufDynamicMessageDecoder.java +++ b/protobuf/src/main/java/org/apache/mina/codec/delimited/serialization/ProtobufDynamicMessageDecoder.java @@ -22,10 +22,9 @@ package org.apache.mina.codec.delimited.serialization; import java.io.InputStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.nio.ByteBuffer; -import org.apache.mina.codec.delimited.ByteBufferDecoder; -import org.apache.mina.util.ByteBufferInputStream; +import org.apache.mina.codec.IoBuffer; +import org.apache.mina.codec.delimited.IoBufferDecoder; import com.google.protobuf.ExtensionRegistryLite; import com.google.protobuf.GeneratedMessage; @@ -34,27 +33,27 @@ import com.google.protobuf.GeneratedMessage; * An alternative decoder for protobuf which allows the use various target * classes with the same decoder. * - * This decoder converts incoming {@link ByteBuffer} into + * This decoder converts incoming {@link IoBuffer} into * {@link ProtobufSerializedMessage}. * * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public class ProtobufDynamicMessageDecoder extends - ByteBufferDecoder<ProtobufDynamicMessageDecoder.ProtobufSerializedMessage> { + IoBufferDecoder<ProtobufDynamicMessageDecoder.ProtobufSerializedMessage> { public static ProtobufDynamicMessageDecoder newInstance() { return new ProtobufDynamicMessageDecoder(); } @Override - public ProtobufSerializedMessage decode(ByteBuffer input) { + public ProtobufSerializedMessage decode(IoBuffer input) { return new ProtobufSerializedMessage(input); } public static final class ProtobufSerializedMessage { - private ByteBuffer input; + private final IoBuffer input; - public ProtobufSerializedMessage(ByteBuffer input) { + public ProtobufSerializedMessage(IoBuffer input) { this.input = input; } @@ -62,7 +61,7 @@ public class ProtobufDynamicMessageDecoder extends public <L extends GeneratedMessage> L get(Class<L> clazz, ExtensionRegistryLite registry) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { Method parseMethod = clazz.getDeclaredMethod("parseFrom", InputStream.class, ExtensionRegistryLite.class); - return (L) parseMethod.invoke(null, new ByteBufferInputStream(input.duplicate()), registry); + return (L) parseMethod.invoke(null, input.asInputStream(), registry); } public <L extends GeneratedMessage> L get(Class<L> clazz) throws NoSuchMethodException, IllegalAccessException, http://git-wip-us.apache.org/repos/asf/mina/blob/1c856929/protobuf/src/main/java/org/apache/mina/codec/delimited/serialization/ProtobufMessageDecoder.java ---------------------------------------------------------------------- diff --git a/protobuf/src/main/java/org/apache/mina/codec/delimited/serialization/ProtobufMessageDecoder.java b/protobuf/src/main/java/org/apache/mina/codec/delimited/serialization/ProtobufMessageDecoder.java index 62e0781..d01f579 100644 --- a/protobuf/src/main/java/org/apache/mina/codec/delimited/serialization/ProtobufMessageDecoder.java +++ b/protobuf/src/main/java/org/apache/mina/codec/delimited/serialization/ProtobufMessageDecoder.java @@ -21,11 +21,10 @@ package org.apache.mina.codec.delimited.serialization; import java.io.InputStream; import java.lang.reflect.Method; -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.util.ByteBufferInputStream; +import org.apache.mina.codec.delimited.IoBufferDecoder; import com.google.protobuf.ExtensionRegistryLite; import com.google.protobuf.GeneratedMessage; @@ -33,7 +32,7 @@ import com.google.protobuf.GeneratedMessage; /** * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ -public class ProtobufMessageDecoder<IN extends GeneratedMessage> extends ByteBufferDecoder<IN> { +public final class ProtobufMessageDecoder<IN extends GeneratedMessage> extends IoBufferDecoder<IN> { private final Method parseMethod; private final ExtensionRegistryLite registry; @@ -56,9 +55,9 @@ public class ProtobufMessageDecoder<IN extends GeneratedMessage> extends ByteBuf @SuppressWarnings("unchecked") @Override - public IN decode(ByteBuffer input) { + public IN decode(IoBuffer input) { try { - return (IN) parseMethod.invoke(null, new ByteBufferInputStream(input), registry); + return (IN) parseMethod.invoke(null, input.asInputStream(), registry); } catch (Exception e) { throw new ProtocolDecoderException(e); } http://git-wip-us.apache.org/repos/asf/mina/blob/1c856929/protobuf/src/test/java/org/apache/mina/codec/delimited/serialization/ProtobufTest.java ---------------------------------------------------------------------- diff --git a/protobuf/src/test/java/org/apache/mina/codec/delimited/serialization/ProtobufTest.java b/protobuf/src/test/java/org/apache/mina/codec/delimited/serialization/ProtobufTest.java index 2806c57..ed64b6b 100644 --- a/protobuf/src/test/java/org/apache/mina/codec/delimited/serialization/ProtobufTest.java +++ b/protobuf/src/test/java/org/apache/mina/codec/delimited/serialization/ProtobufTest.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.codec.delimited.serialization.ProtobufDynamicMessageDecoder.ProtobufSerializedMessage; import org.apache.mina.generated.protoc.AddressBookProtos.Person; import org.junit.Test; @@ -37,34 +38,37 @@ import org.junit.Test; */ public class ProtobufTest extends GenericSerializerTest<Person> { - @Override - public List<Person> getObjects() { - List<Person> list = new LinkedList<Person>(); + @Override + public List<Person> getObjects() { + List<Person> list = new LinkedList<Person>(); - list.add(Person.newBuilder().setId(1).setName("Jean Dupond").setEmail("[email protected]").build()); - list.add(Person.newBuilder().setId(2).setName("Marie Blanc").setEmail("[email protected]").build()); + list.add(Person.newBuilder().setId(1).setName("Jean Dupond") + .setEmail("[email protected]").build()); + list.add(Person.newBuilder().setId(2).setName("Marie Blanc") + .setEmail("[email protected]").build()); - return list; - } + return list; + } - @Override - public ByteBufferDecoder<Person> getDecoder() throws Exception { - return ProtobufMessageDecoder.newInstance(Person.class); - } + @Override + public IoBufferDecoder<Person> getDecoder() throws Exception { + return ProtobufMessageDecoder.newInstance(Person.class); + } - @Override - public ByteBufferEncoder<Person> getEncoder() throws Exception { - return new ProtobufMessageEncoder<Person>(); - } + @Override + public ByteBufferEncoder<Person> getEncoder() throws Exception { + return new ProtobufMessageEncoder<Person>(); + } - @Test - public void testDynamic() throws Exception { - ByteBufferEncoder<Person> encoder = getEncoder(); - ProtobufDynamicMessageDecoder decoder = new ProtobufDynamicMessageDecoder(); + @Test + public void testDynamic() throws Exception { + ByteBufferEncoder<Person> encoder = getEncoder(); + ProtobufDynamicMessageDecoder decoder = new ProtobufDynamicMessageDecoder(); - for (Person object : getObjects()) { - ProtobufSerializedMessage message = decoder.decode(encoder.encode(object)); - assertEquals(object, message.get(Person.class)); - } - } + for (Person object : getObjects()) { + ProtobufSerializedMessage message = decoder.decode(IoBuffer + .wrap(encoder.encode(object))); + assertEquals(object, message.get(Person.class)); + } + } }
