diff --git a/.travis.yml b/.travis.yml
index 72729a5f3..29ec0526e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,6 +7,7 @@ branches:
only:
- master
- develop
+ - v07
notifications:
email:
- muga.nishizawa@gmail.com
diff --git a/pom.xml b/pom.xml
index 653685251..525b4b4ac 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
MessagePack for Java
MessagePack for Java is a binary-based efficient object
serialization library in Java.
- 0.6.11-SNAPSHOT
+ 0.6.13-SNAPSHOT
bundle
http://msgpack.org/
diff --git a/src/main/java/org/msgpack/template/builder/AbstractTemplateBuilder.java b/src/main/java/org/msgpack/template/builder/AbstractTemplateBuilder.java
index 6ad2a100d..82041e9bc 100644
--- a/src/main/java/org/msgpack/template/builder/AbstractTemplateBuilder.java
+++ b/src/main/java/org/msgpack/template/builder/AbstractTemplateBuilder.java
@@ -72,14 +72,14 @@ public Template buildTemplate(final Class targetClass, final FieldList
protected abstract Template buildTemplate(Class targetClass, FieldEntry[] entries);
protected void checkClassValidation(final Class> targetClass) {
- if (Modifier.isAbstract(targetClass.getModifiers())) {
- throw new TemplateBuildException(
- "Cannot build template for abstract class: " + targetClass.getName());
- }
if (targetClass.isInterface()) {
throw new TemplateBuildException(
"Cannot build template for interface: " + targetClass.getName());
}
+ if (Modifier.isAbstract(targetClass.getModifiers())) {
+ throw new TemplateBuildException(
+ "Cannot build template for abstract class: " + targetClass.getName());
+ }
if (targetClass.isArray()) {
throw new TemplateBuildException(
"Cannot build template for array class: " + targetClass.getName());
diff --git a/src/main/java/org/msgpack/template/builder/JavassistTemplateBuilder.java b/src/main/java/org/msgpack/template/builder/JavassistTemplateBuilder.java
index 543cc7664..23bcb8716 100644
--- a/src/main/java/org/msgpack/template/builder/JavassistTemplateBuilder.java
+++ b/src/main/java/org/msgpack/template/builder/JavassistTemplateBuilder.java
@@ -21,6 +21,7 @@
import java.util.logging.Level;
import java.util.logging.Logger;
+import javassist.ClassClassPath;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.LoaderClassPath;
@@ -59,6 +60,7 @@ public JavassistTemplateBuilder(TemplateRegistry registry) {
public JavassistTemplateBuilder(TemplateRegistry registry, ClassLoader cl) {
super(registry);
pool = new ClassPool();
+ pool.appendClassPath(new ClassClassPath(getClass()));
boolean appended = false;
loader = cl;
if (loader == null) {
@@ -71,8 +73,9 @@ public JavassistTemplateBuilder(TemplateRegistry registry, ClassLoader cl) {
appended = true;
}
} catch (SecurityException e) {
- LOG.fine("Cannot append a search path of classloader");
- e.printStackTrace();
+ if (LOG.isLoggable(Level.WARNING)) {
+ LOG.log(Level.WARNING, "Cannot append a search path of classloader", e);
+ }
}
if (!appended) {
pool.appendSystemPath();
diff --git a/src/main/java/org/msgpack/template/builder/ReflectionBeansTemplateBuilder.java b/src/main/java/org/msgpack/template/builder/ReflectionBeansTemplateBuilder.java
index 3274df708..920897e31 100644
--- a/src/main/java/org/msgpack/template/builder/ReflectionBeansTemplateBuilder.java
+++ b/src/main/java/org/msgpack/template/builder/ReflectionBeansTemplateBuilder.java
@@ -131,7 +131,7 @@ public FieldEntry[] toFieldEntries(Class> targetClass, FieldOption implicitOpt
throw new TemplateBuildException("invalid index: " + index);
}
entries[index] = new BeansFieldEntry(p);
- props[index] = null;
+ props[i] = null;
}
}
int insertIndex = 0;
diff --git a/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java b/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java
index b78fc9fa8..b870b2539 100644
--- a/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java
+++ b/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java
@@ -22,18 +22,23 @@
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.msgpack.template.TemplateRegistry;
import org.msgpack.util.android.DalvikVmChecker;
public class TemplateBuilderChain {
- private static final String JAVASSIST_TEMPLATE_BUILDER_CLASS_NAME =
- "org.msgpack.template.builder.JavassistTemplateBuilder";
- private static final String REFLECTION_TEMPLATE_BUILDER_CLASS_NAME =
- "org.msgpack.template.builder.ReflectionTemplateBuilder";
+ private static final Logger LOG = Logger.getLogger(TemplateBuilderChain.class.getName());
+
+ private static final String JAVASSIST_TEMPLATE_BUILDER_CLASS_NAME =
+ "org.msgpack.template.builder.JavassistTemplateBuilder";
+ private static final String REFLECTION_TEMPLATE_BUILDER_CLASS_NAME =
+ "org.msgpack.template.builder.ReflectionTemplateBuilder";
private static boolean enableDynamicCodeGeneration() {
- return !DalvikVmChecker.isDalvikVm();
+ return !DalvikVmChecker.isDalvikVm() &&
+ Boolean.parseBoolean(System.getProperties().getProperty("msgpack.dynamic-codegen.enabled", "true"));
}
protected List templateBuilders;
@@ -73,16 +78,18 @@ protected void reset(final TemplateRegistry registry, final ClassLoader cl) {
templateBuilders.add(new ReflectionBeansTemplateBuilder(registry));
}
- private static TemplateBuilder createForceTemplateBuilder(String className,
- TemplateRegistry registry, ClassLoader cl) {
- try {
- Class> c = (Class>) Class.forName(className);
- Constructor> cons = c.getConstructor(TemplateRegistry.class,
- ClassLoader.class);
- return (TemplateBuilder) cons.newInstance(registry, cl);
- } catch (Exception e) {
- e.printStackTrace();
- }
+ private static TemplateBuilder createForceTemplateBuilder(String className,
+ TemplateRegistry registry, ClassLoader cl) {
+ try {
+ Class> c = (Class>) Class.forName(className);
+ Constructor> cons = c.getConstructor(TemplateRegistry.class,
+ ClassLoader.class);
+ return (TemplateBuilder) cons.newInstance(registry, cl);
+ } catch (Exception e) {
+ if (LOG.isLoggable(Level.WARNING)) {
+ LOG.log(Level.WARNING, "Failed to create a TemplateBuilder reflectively", e);
+ }
+ }
return new ReflectionTemplateBuilder(registry, cl);
}
diff --git a/src/main/java/org/msgpack/unpacker/MessagePackUnpacker.java b/src/main/java/org/msgpack/unpacker/MessagePackUnpacker.java
index e77e9237d..0a5596f39 100644
--- a/src/main/java/org/msgpack/unpacker/MessagePackUnpacker.java
+++ b/src/main/java/org/msgpack/unpacker/MessagePackUnpacker.java
@@ -210,7 +210,7 @@ private boolean readOneWithoutStackLarge(Accept a, final int b)
case 0xc4: // bin 8
case 0xd9: // str 8
{
- int count = in.getByte();
+ int count = in.getByte() & 0xff;
if (count == 0) {
a.acceptEmptyRaw();
in.advance();
diff --git a/src/main/java/org/msgpack/util/json/JSONUnpacker.java b/src/main/java/org/msgpack/util/json/JSONUnpacker.java
index 177bf2230..864c5ca18 100644
--- a/src/main/java/org/msgpack/util/json/JSONUnpacker.java
+++ b/src/main/java/org/msgpack/util/json/JSONUnpacker.java
@@ -24,6 +24,7 @@
import java.util.List;
import java.util.Map;
import java.util.Iterator;
+import java.nio.charset.Charset;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.msgpack.MessagePack;
@@ -42,6 +43,10 @@ public JSONUnpacker(InputStream in) {
public JSONUnpacker(MessagePack msgpack, InputStream in) {
this(msgpack, new InputStreamReader(in));
}
+
+ public JSONUnpacker(MessagePack msgpack, InputStream in, Charset cs) {
+ this(msgpack, new InputStreamReader(in, cs));
+ }
JSONUnpacker(MessagePack msgpack, Reader in) {
super(msgpack, null);
diff --git a/src/test/java/org/msgpack/TestMessagePack02.java b/src/test/java/org/msgpack/TestMessagePack02.java
index 5130a6271..9270191c2 100644
--- a/src/test/java/org/msgpack/TestMessagePack02.java
+++ b/src/test/java/org/msgpack/TestMessagePack02.java
@@ -8,6 +8,8 @@
import org.junit.Test;
import org.msgpack.testclasses.EnumTypeFieldsClass;
import org.msgpack.testclasses.EnumTypeFieldsClassNotNullable;
+import org.msgpack.testclasses.IndexedFieldsBeanClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClassNotNullable;
import org.msgpack.testclasses.InheritanceClass;
import org.msgpack.testclasses.InheritanceClassNotNullable;
import org.msgpack.testclasses.ListTypeFieldsClass;
@@ -2555,6 +2557,234 @@ public void testReferenceCycleTypeFieldsClassNotNullable(ReferenceCycleTypeField
}
}
+ public static class TestIndexedFieldsBeanClassBufferPackBufferUnpack extends org.msgpack.template.builder.TestSet {
+ @Test @Override
+ public void testIndexedFieldsBeanClass() throws Exception {
+ super.testIndexedFieldsBeanClass();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClass(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ byte[] bytes = msgpack.write(v);
+ IndexedFieldsBeanClass ret = msgpack.read(bytes, IndexedFieldsBeanClass.class);
+ assertEquals(v, ret);
+ }
+ }
+
+ public static class TestIndexedFieldsBeanClassBufferPackConvert extends org.msgpack.template.builder.TestSet {
+ @Test @Override
+ public void testIndexedFieldsBeanClass() throws Exception {
+ super.testIndexedFieldsBeanClass();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClass(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ byte[] bytes = msgpack.write(v);
+ Value value = msgpack.read(bytes);
+ IndexedFieldsBeanClass ret = msgpack.convert(value, IndexedFieldsBeanClass.class);
+ assertEquals(v, ret);
+ }
+ }
+
+ public static class TestIndexedFieldsBeanClassBufferPackUnpack extends org.msgpack.template.builder.TestSet {
+ @Test @Override
+ public void testIndexedFieldsBeanClass() throws Exception {
+ super.testIndexedFieldsBeanClass();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClass(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ byte[] bytes = msgpack.write(v);
+ ByteArrayInputStream in = new ByteArrayInputStream(bytes);
+ IndexedFieldsBeanClass ret = msgpack.read(in, IndexedFieldsBeanClass.class);
+ assertEquals(v, ret);
+ }
+ }
+
+ public static class TestIndexedFieldsBeanClassPackBufferUnpack extends org.msgpack.template.builder.TestSet {
+ @Test @Override
+ public void testIndexedFieldsBeanClass() throws Exception {
+ super.testIndexedFieldsBeanClass();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClass(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ msgpack.write(out, v);
+ byte[] bytes = out.toByteArray();
+ IndexedFieldsBeanClass ret = msgpack.read(bytes, IndexedFieldsBeanClass.class);
+ assertEquals(v, ret);
+ }
+ }
+
+ public static class TestIndexedFieldsBeanClassPackConvert extends org.msgpack.template.builder.TestSet {
+ @Test @Override
+ public void testIndexedFieldsBeanClass() throws Exception {
+ super.testIndexedFieldsBeanClass();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClass(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ msgpack.write(out, v);
+ byte[] bytes = out.toByteArray();
+ Value value = msgpack.read(bytes);
+ IndexedFieldsBeanClass ret = msgpack.convert(value, IndexedFieldsBeanClass.class);
+ assertEquals(v, ret);
+ }
+ }
+
+ public static class TestIndexedFieldsBeanClassPackUnpack extends org.msgpack.template.builder.TestSet {
+ @Test @Override
+ public void testIndexedFieldsBeanClass() throws Exception {
+ super.testIndexedFieldsBeanClass();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClass(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ msgpack.write(out, v);
+ ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
+ IndexedFieldsBeanClass ret = msgpack.read(in, IndexedFieldsBeanClass.class);
+ assertEquals(v, ret);
+ }
+ }
+
+ public static class TestIndexedFieldsBeanClassUnconvertConvert extends org.msgpack.template.builder.TestSet {
+ @Test @Override
+ public void testIndexedFieldsBeanClass() throws Exception {
+ super.testIndexedFieldsBeanClass();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClass(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ Value value = msgpack.unconvert(v);
+ IndexedFieldsBeanClass ret = msgpack.convert(value, IndexedFieldsBeanClass.class);
+ assertEquals(v, ret);
+ }
+ }
+
+ public static class TestIndexedFieldsBeanClassNotNullableBufferPackBufferUnpack extends org.msgpack.template.builder.TestSet {
+ @Test @Override
+ public void testIndexedFieldsBeanClassNotNullable() throws Exception {
+ super.testIndexedFieldsBeanClassNotNullable();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullable(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ byte[] bytes = msgpack.write(v);
+ IndexedFieldsBeanClassNotNullable ret = msgpack.read(bytes, IndexedFieldsBeanClassNotNullable.class);
+ assertEquals(v, ret);
+ }
+ }
+
+ public static class TestIndexedFieldsBeanClassNotNullableBufferPackConvert extends org.msgpack.template.builder.TestSet {
+ @Test @Override
+ public void testIndexedFieldsBeanClassNotNullable() throws Exception {
+ super.testIndexedFieldsBeanClassNotNullable();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullable(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ byte[] bytes = msgpack.write(v);
+ Value value = msgpack.read(bytes);
+ IndexedFieldsBeanClassNotNullable ret = msgpack.convert(value, IndexedFieldsBeanClassNotNullable.class);
+ assertEquals(v, ret);
+ }
+ }
+
+ public static class TestIndexedFieldsBeanClassNotNullableBufferPackUnpack extends org.msgpack.template.builder.TestSet {
+ @Test @Override
+ public void testIndexedFieldsBeanClassNotNullable() throws Exception {
+ super.testIndexedFieldsBeanClassNotNullable();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullable(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ byte[] bytes = msgpack.write(v);
+ ByteArrayInputStream in = new ByteArrayInputStream(bytes);
+ IndexedFieldsBeanClassNotNullable ret = msgpack.read(in, IndexedFieldsBeanClassNotNullable.class);
+ assertEquals(v, ret);
+ }
+ }
+
+ public static class TestIndexedFieldsBeanClassNotNullablePackBufferUnpack extends org.msgpack.template.builder.TestSet {
+ @Test @Override
+ public void testIndexedFieldsBeanClassNotNullable() throws Exception {
+ super.testIndexedFieldsBeanClassNotNullable();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullable(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ msgpack.write(out, v);
+ byte[] bytes = out.toByteArray();
+ IndexedFieldsBeanClassNotNullable ret = msgpack.read(bytes, IndexedFieldsBeanClassNotNullable.class);
+ assertEquals(v, ret);
+ }
+ }
+
+ public static class TestIndexedFieldsBeanClassNotNullablePackConvert extends org.msgpack.template.builder.TestSet {
+ @Test @Override
+ public void testIndexedFieldsBeanClassNotNullable() throws Exception {
+ super.testIndexedFieldsBeanClassNotNullable();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullable(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ msgpack.write(out, v);
+ byte[] bytes = out.toByteArray();
+ Value value = msgpack.read(bytes);
+ IndexedFieldsBeanClassNotNullable ret = msgpack.convert(value, IndexedFieldsBeanClassNotNullable.class);
+ assertEquals(v, ret);
+ }
+ }
+
+ public static class TestIndexedFieldsBeanClassNotNullablePackUnpack extends org.msgpack.template.builder.TestSet {
+ @Test @Override
+ public void testIndexedFieldsBeanClassNotNullable() throws Exception {
+ super.testIndexedFieldsBeanClassNotNullable();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullable(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ msgpack.write(out, v);
+ ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
+ IndexedFieldsBeanClassNotNullable ret = msgpack.read(in, IndexedFieldsBeanClassNotNullable.class);
+ assertEquals(v, ret);
+ }
+ }
+
+ public static class TestIndexedFieldsBeanClassNotNullableUnconvertConvert extends org.msgpack.template.builder.TestSet {
+ @Test @Override
+ public void testIndexedFieldsBeanClassNotNullable() throws Exception {
+ super.testIndexedFieldsBeanClassNotNullable();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullable(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ Value value = msgpack.unconvert(v);
+ IndexedFieldsBeanClassNotNullable ret = msgpack.convert(value, IndexedFieldsBeanClassNotNullable.class);
+ assertEquals(v, ret);
+ }
+ }
+
public static class TestInheritanceClassBufferPackBufferUnpack extends org.msgpack.template.builder.TestSet {
@Test @Override
public void testInheritanceClass() throws Exception {
diff --git a/src/test/java/org/msgpack/template/builder/TestReflectionBeansBufferPackBufferUnpack.java b/src/test/java/org/msgpack/template/builder/TestReflectionBeansBufferPackBufferUnpack.java
index ad82c3ae4..0074aa28e 100644
--- a/src/test/java/org/msgpack/template/builder/TestReflectionBeansBufferPackBufferUnpack.java
+++ b/src/test/java/org/msgpack/template/builder/TestReflectionBeansBufferPackBufferUnpack.java
@@ -11,6 +11,8 @@
import org.msgpack.template.Template;
import org.msgpack.testclasses.AbstractClass;
import org.msgpack.testclasses.FinalClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClassNotNullable;
import org.msgpack.testclasses.InheritanceClass;
import org.msgpack.testclasses.InheritanceClassNotNullable;
import org.msgpack.testclasses.Interface;
@@ -389,6 +391,99 @@ public void testReferenceCycleTypeFieldsClassNotNullable(ReferenceCycleTypeField
assertEquals(bytes.length, unpacker.getReadByteCount());
}
+ @Test @Override
+ public void testIndexedFieldsBeanClass() throws Exception {
+ super.testIndexedFieldsBeanClass();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClass(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClass.class);
+ BufferPacker packer = msgpack.createBufferPacker();
+ tmpl.write(packer, v);
+ byte[] bytes = packer.toByteArray();
+ BufferUnpacker unpacker = msgpack.createBufferUnpacker();
+ unpacker.resetReadByteCount();
+ unpacker.wrap(bytes);
+ IndexedFieldsBeanClass ret = tmpl.read(unpacker, null);
+ assertEquals(v, ret);
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassFieldsUnpackedInOrder(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClass.class);
+ BufferPacker packer = msgpack.createBufferPacker();
+ tmpl.write(packer, v);
+ byte[] bytes = packer.toByteArray();
+ BufferUnpacker unpacker = msgpack.createBufferUnpacker();
+ unpacker.resetReadByteCount();
+ unpacker.wrap(bytes);
+
+ unpacker.readArrayBegin();
+ assertEquals("alpha", unpacker.readString());
+ assertEquals("bravo", unpacker.readString());
+ assertEquals("charlie", unpacker.readString());
+ assertEquals("delta", unpacker.readString());
+ assertEquals("echo", unpacker.readString());
+ unpacker.readArrayEnd();
+
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
+ @Test @Override
+ public void testIndexedFieldsBeanClassNotNullable() throws Exception {
+ super.testIndexedFieldsBeanClassNotNullable();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullable(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClassNotNullable.class);
+ BufferPacker packer = msgpack.createBufferPacker();
+ tmpl.write(packer, v);
+ byte[] bytes = packer.toByteArray();
+ BufferUnpacker unpacker = msgpack.createBufferUnpacker();
+ unpacker.resetReadByteCount();
+ unpacker.wrap(bytes);
+ IndexedFieldsBeanClassNotNullable ret = tmpl.read(unpacker, null);
+ assertEquals(v, ret);
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullableFieldsUnpackedInOrder(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClassNotNullable.class);
+ BufferPacker packer = msgpack.createBufferPacker();
+ tmpl.write(packer, v);
+ byte[] bytes = packer.toByteArray();
+ BufferUnpacker unpacker = msgpack.createBufferUnpacker();
+ unpacker.resetReadByteCount();
+ unpacker.wrap(bytes);
+
+ unpacker.readArrayBegin();
+ assertEquals("alpha", unpacker.readString());
+ assertEquals("bravo", unpacker.readString());
+ assertEquals("charlie", unpacker.readString());
+ assertEquals("delta", unpacker.readString());
+ assertEquals("echo", unpacker.readString());
+ unpacker.readArrayEnd();
+
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
@Test @Override
public void testInheritanceClass() throws Exception {
super.testInheritanceClass();
diff --git a/src/test/java/org/msgpack/template/builder/TestReflectionBeansBufferPackConvert.java b/src/test/java/org/msgpack/template/builder/TestReflectionBeansBufferPackConvert.java
index b1bb32ffc..c8079cbb7 100644
--- a/src/test/java/org/msgpack/template/builder/TestReflectionBeansBufferPackConvert.java
+++ b/src/test/java/org/msgpack/template/builder/TestReflectionBeansBufferPackConvert.java
@@ -11,6 +11,8 @@
import org.msgpack.template.Template;
import org.msgpack.testclasses.AbstractClass;
import org.msgpack.testclasses.FinalClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClassNotNullable;
import org.msgpack.testclasses.InheritanceClass;
import org.msgpack.testclasses.InheritanceClassNotNullable;
import org.msgpack.testclasses.Interface;
@@ -421,6 +423,54 @@ public void testReferenceCycleTypeFieldsClassNotNullable(ReferenceCycleTypeField
assertEquals(bytes.length, u.getReadByteCount());
}
+ @Test @Override
+ public void testIndexedFieldsBeanClass() throws Exception {
+ super.testIndexedFieldsBeanClass();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClass(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClass.class);
+ BufferPacker packer = msgpack.createBufferPacker();
+ tmpl.write(packer, v);
+ byte[] bytes = packer.toByteArray();
+ BufferUnpacker u = msgpack.createBufferUnpacker();
+ u.resetReadByteCount();
+ u.wrap(bytes);
+ Value value = u.readValue();
+ Converter unpacker = new Converter(value);
+ IndexedFieldsBeanClass ret = tmpl.read(unpacker, null);
+ assertEquals(v, ret);
+ assertEquals(bytes.length, u.getReadByteCount());
+ }
+
+ @Test @Override
+ public void testIndexedFieldsBeanClassNotNullable() throws Exception {
+ super.testIndexedFieldsBeanClassNotNullable();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullable(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClassNotNullable.class);
+ BufferPacker packer = msgpack.createBufferPacker();
+ tmpl.write(packer, v);
+ byte[] bytes = packer.toByteArray();
+ BufferUnpacker u = msgpack.createBufferUnpacker();
+ u.resetReadByteCount();
+ u.wrap(bytes);
+ Value value = u.readValue();
+ Converter unpacker = new Converter(value);
+ IndexedFieldsBeanClassNotNullable ret = tmpl.read(unpacker, null);
+ assertEquals(v, ret);
+ assertEquals(bytes.length, u.getReadByteCount());
+ }
+
@Test @Override
public void testInheritanceClass() throws Exception {
super.testInheritanceClass();
diff --git a/src/test/java/org/msgpack/template/builder/TestReflectionBeansBufferPackUnpack.java b/src/test/java/org/msgpack/template/builder/TestReflectionBeansBufferPackUnpack.java
index 553b47818..47917c509 100644
--- a/src/test/java/org/msgpack/template/builder/TestReflectionBeansBufferPackUnpack.java
+++ b/src/test/java/org/msgpack/template/builder/TestReflectionBeansBufferPackUnpack.java
@@ -13,6 +13,8 @@
import org.msgpack.template.Template;
import org.msgpack.testclasses.AbstractClass;
import org.msgpack.testclasses.FinalClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClassNotNullable;
import org.msgpack.testclasses.InheritanceClass;
import org.msgpack.testclasses.InheritanceClassNotNullable;
import org.msgpack.testclasses.Interface;
@@ -376,6 +378,94 @@ public void testReferenceCycleTypeFieldsClassNotNullable(ReferenceCycleTypeField
assertEquals(bytes.length, unpacker.getReadByteCount());
}
+ @Test @Override
+ public void testIndexedFieldsBeanClass() throws Exception {
+ super.testIndexedFieldsBeanClass();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClass(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClass.class);
+ BufferPacker packer = msgpack.createBufferPacker();
+ tmpl.write(packer, v);
+ byte[] bytes = packer.toByteArray();
+ Unpacker unpacker = msgpack.createUnpacker(new ByteArrayInputStream(bytes));
+ unpacker.resetReadByteCount();
+ IndexedFieldsBeanClass ret = tmpl.read(unpacker, null);
+ assertEquals(v, ret);
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassFieldsUnpackedInOrder(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClass.class);
+ BufferPacker packer = msgpack.createBufferPacker();
+ tmpl.write(packer, v);
+ byte[] bytes = packer.toByteArray();
+ Unpacker unpacker = msgpack.createUnpacker(new ByteArrayInputStream(bytes));
+ unpacker.resetReadByteCount();
+
+ unpacker.readArrayBegin();
+ assertEquals("alpha", unpacker.readString());
+ assertEquals("bravo", unpacker.readString());
+ assertEquals("charlie", unpacker.readString());
+ assertEquals("delta", unpacker.readString());
+ assertEquals("echo", unpacker.readString());
+ unpacker.readArrayEnd();
+
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
+ @Test @Override
+ public void testIndexedFieldsBeanClassNotNullable() throws Exception {
+ super.testIndexedFieldsBeanClassNotNullable();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullable(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClassNotNullable.class);
+ BufferPacker packer = msgpack.createBufferPacker();
+ tmpl.write(packer, v);
+ byte[] bytes = packer.toByteArray();
+ Unpacker unpacker = msgpack.createUnpacker(new ByteArrayInputStream(bytes));
+ unpacker.resetReadByteCount();
+ IndexedFieldsBeanClassNotNullable ret = tmpl.read(unpacker, null);
+ assertEquals(v, ret);
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullableFieldsUnpackedInOrder(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClassNotNullable.class);
+ BufferPacker packer = msgpack.createBufferPacker();
+ tmpl.write(packer, v);
+ byte[] bytes = packer.toByteArray();
+ Unpacker unpacker = msgpack.createUnpacker(new ByteArrayInputStream(bytes));
+ unpacker.resetReadByteCount();
+
+ unpacker.readArrayBegin();
+ assertEquals("alpha", unpacker.readString());
+ assertEquals("bravo", unpacker.readString());
+ assertEquals("charlie", unpacker.readString());
+ assertEquals("delta", unpacker.readString());
+ assertEquals("echo", unpacker.readString());
+ unpacker.readArrayEnd();
+
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
@Test @Override
public void testInheritanceClass() throws Exception {
super.testInheritanceClass();
diff --git a/src/test/java/org/msgpack/template/builder/TestReflectionBeansPackBufferUnpack.java b/src/test/java/org/msgpack/template/builder/TestReflectionBeansPackBufferUnpack.java
index 6481724a1..241c2a659 100644
--- a/src/test/java/org/msgpack/template/builder/TestReflectionBeansPackBufferUnpack.java
+++ b/src/test/java/org/msgpack/template/builder/TestReflectionBeansPackBufferUnpack.java
@@ -13,6 +13,8 @@
import org.msgpack.template.Template;
import org.msgpack.testclasses.AbstractClass;
import org.msgpack.testclasses.FinalClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClassNotNullable;
import org.msgpack.testclasses.InheritanceClass;
import org.msgpack.testclasses.InheritanceClassNotNullable;
import org.msgpack.testclasses.Interface;
@@ -406,6 +408,102 @@ public void testReferenceCycleTypeFieldsClassNotNullable(ReferenceCycleTypeField
assertEquals(bytes.length, unpacker.getReadByteCount());
}
+ @Test @Override
+ public void testIndexedFieldsBeanClass() throws Exception {
+ super.testIndexedFieldsBeanClass();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClass(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClass.class);
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ Packer packer = msgpack.createPacker(out);
+ tmpl.write(packer, v);
+ byte[] bytes = out.toByteArray();
+ BufferUnpacker unpacker = msgpack.createBufferUnpacker();
+ unpacker.resetReadByteCount();
+ unpacker.wrap(bytes);
+ IndexedFieldsBeanClass ret = tmpl.read(unpacker, null);
+ assertEquals(v, ret);
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassFieldsUnpackedInOrder(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClass.class);
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ Packer packer = msgpack.createPacker(out);
+ tmpl.write(packer, v);
+ byte[] bytes = out.toByteArray();
+ BufferUnpacker unpacker = msgpack.createBufferUnpacker();
+ unpacker.resetReadByteCount();
+ unpacker.wrap(bytes);
+
+ unpacker.readArrayBegin();
+ assertEquals("alpha", unpacker.readString());
+ assertEquals("bravo", unpacker.readString());
+ assertEquals("charlie", unpacker.readString());
+ assertEquals("delta", unpacker.readString());
+ assertEquals("echo", unpacker.readString());
+ unpacker.readArrayEnd();
+
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
+ @Test @Override
+ public void testIndexedFieldsBeanClassNotNullable() throws Exception {
+ super.testIndexedFieldsBeanClassNotNullable();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullable(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClassNotNullable.class);
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ Packer packer = msgpack.createPacker(out);
+ tmpl.write(packer, v);
+ byte[] bytes = out.toByteArray();
+ BufferUnpacker unpacker = msgpack.createBufferUnpacker();
+ unpacker.resetReadByteCount();
+ unpacker.wrap(bytes);
+ IndexedFieldsBeanClassNotNullable ret = tmpl.read(unpacker, null);
+ assertEquals(v, ret);
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullableFieldsUnpackedInOrder(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClassNotNullable.class);
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ Packer packer = msgpack.createPacker(out);
+ tmpl.write(packer, v);
+ byte[] bytes = out.toByteArray();
+ BufferUnpacker unpacker = msgpack.createBufferUnpacker();
+ unpacker.resetReadByteCount();
+ unpacker.wrap(bytes);
+
+ unpacker.readArrayBegin();
+ assertEquals("alpha", unpacker.readString());
+ assertEquals("bravo", unpacker.readString());
+ assertEquals("charlie", unpacker.readString());
+ assertEquals("delta", unpacker.readString());
+ assertEquals("echo", unpacker.readString());
+ unpacker.readArrayEnd();
+
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
@Test @Override
public void testInheritanceClass() throws Exception {
super.testInheritanceClass();
diff --git a/src/test/java/org/msgpack/template/builder/TestReflectionBeansPackConvert.java b/src/test/java/org/msgpack/template/builder/TestReflectionBeansPackConvert.java
index b0238c5f5..d65bff633 100644
--- a/src/test/java/org/msgpack/template/builder/TestReflectionBeansPackConvert.java
+++ b/src/test/java/org/msgpack/template/builder/TestReflectionBeansPackConvert.java
@@ -13,6 +13,8 @@
import org.msgpack.template.Template;
import org.msgpack.testclasses.AbstractClass;
import org.msgpack.testclasses.FinalClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClassNotNullable;
import org.msgpack.testclasses.InheritanceClass;
import org.msgpack.testclasses.InheritanceClassNotNullable;
import org.msgpack.testclasses.Interface;
@@ -438,6 +440,56 @@ public void testReferenceCycleTypeFieldsClassNotNullable(ReferenceCycleTypeField
assertEquals(bytes.length, u.getReadByteCount());
}
+ @Test @Override
+ public void testIndexedFieldsBeanClass() throws Exception {
+ super.testIndexedFieldsBeanClass();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClass(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClass.class);
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ Packer packer = msgpack.createPacker(out);
+ tmpl.write(packer, v);
+ byte[] bytes = out.toByteArray();
+ BufferUnpacker u = msgpack.createBufferUnpacker();
+ u.resetReadByteCount();
+ u.wrap(bytes);
+ Value value = u.readValue();
+ Converter unpacker = new Converter(value);
+ IndexedFieldsBeanClass ret = tmpl.read(unpacker, null);
+ assertEquals(v, ret);
+ assertEquals(bytes.length, u.getReadByteCount());
+ }
+
+ @Test @Override
+ public void testIndexedFieldsBeanClassNotNullable() throws Exception {
+ super.testIndexedFieldsBeanClassNotNullable();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullable(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClassNotNullable.class);
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ Packer packer = msgpack.createPacker(out);
+ tmpl.write(packer, v);
+ byte[] bytes = out.toByteArray();
+ BufferUnpacker u = msgpack.createBufferUnpacker();
+ u.resetReadByteCount();
+ u.wrap(bytes);
+ Value value = u.readValue();
+ Converter unpacker = new Converter(value);
+ IndexedFieldsBeanClassNotNullable ret = tmpl.read(unpacker, null);
+ assertEquals(v, ret);
+ assertEquals(bytes.length, u.getReadByteCount());
+ }
+
@Test @Override
public void testInheritanceClass() throws Exception {
super.testInheritanceClass();
diff --git a/src/test/java/org/msgpack/template/builder/TestReflectionBeansPackUnpack.java b/src/test/java/org/msgpack/template/builder/TestReflectionBeansPackUnpack.java
index 4c88d4baf..48c700713 100644
--- a/src/test/java/org/msgpack/template/builder/TestReflectionBeansPackUnpack.java
+++ b/src/test/java/org/msgpack/template/builder/TestReflectionBeansPackUnpack.java
@@ -14,6 +14,8 @@
import org.msgpack.template.Template;
import org.msgpack.testclasses.AbstractClass;
import org.msgpack.testclasses.FinalClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClassNotNullable;
import org.msgpack.testclasses.InheritanceClass;
import org.msgpack.testclasses.InheritanceClassNotNullable;
import org.msgpack.testclasses.Interface;
@@ -392,6 +394,98 @@ public void testReferenceCycleTypeFieldsClassNotNullable(ReferenceCycleTypeField
assertEquals(bytes.length, unpacker.getReadByteCount());
}
+ @Test @Override
+ public void testIndexedFieldsBeanClass() throws Exception {
+ super.testIndexedFieldsBeanClass();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClass(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClass.class);
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ Packer packer = msgpack.createPacker(out);
+ tmpl.write(packer, v);
+ byte[] bytes = out.toByteArray();
+ Unpacker unpacker = msgpack.createUnpacker(new ByteArrayInputStream(bytes));
+ unpacker.resetReadByteCount();
+ IndexedFieldsBeanClass ret = tmpl.read(unpacker, null);
+ assertEquals(v, ret);
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassFieldsUnpackedInOrder(IndexedFieldsBeanClass v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClass.class);
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ Packer packer = msgpack.createPacker(out);
+ tmpl.write(packer, v);
+ byte[] bytes = out.toByteArray();
+ Unpacker unpacker = msgpack.createUnpacker(new ByteArrayInputStream(bytes));
+ unpacker.resetReadByteCount();
+
+ unpacker.readArrayBegin();
+ assertEquals("alpha", unpacker.readString());
+ assertEquals("bravo", unpacker.readString());
+ assertEquals("charlie", unpacker.readString());
+ assertEquals("delta", unpacker.readString());
+ assertEquals("echo", unpacker.readString());
+ unpacker.readArrayEnd();
+
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
+ @Test @Override
+ public void testIndexedFieldsBeanClassNotNullable() throws Exception {
+ super.testIndexedFieldsBeanClassNotNullable();
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullable(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClassNotNullable.class);
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ Packer packer = msgpack.createPacker(out);
+ tmpl.write(packer, v);
+ byte[] bytes = out.toByteArray();
+ Unpacker unpacker = msgpack.createUnpacker(new ByteArrayInputStream(bytes));
+ unpacker.resetReadByteCount();
+ IndexedFieldsBeanClassNotNullable ret = tmpl.read(unpacker, null);
+ assertEquals(v, ret);
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
+ @Override
+ public void testIndexedFieldsBeanClassNotNullableFieldsUnpackedInOrder(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ MessagePack msgpack = new MessagePack();
+ TemplateRegistry registry = new TemplateRegistry(null);
+ ReflectionBeansTemplateBuilder builder = new ReflectionBeansTemplateBuilder(registry);
+ Template tmpl = builder.buildTemplate(IndexedFieldsBeanClassNotNullable.class);
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ Packer packer = msgpack.createPacker(out);
+ tmpl.write(packer, v);
+ byte[] bytes = out.toByteArray();
+ Unpacker unpacker = msgpack.createUnpacker(new ByteArrayInputStream(bytes));
+ unpacker.resetReadByteCount();
+
+ unpacker.readArrayBegin();
+ assertEquals("alpha", unpacker.readString());
+ assertEquals("bravo", unpacker.readString());
+ assertEquals("charlie", unpacker.readString());
+ assertEquals("delta", unpacker.readString());
+ assertEquals("echo", unpacker.readString());
+ unpacker.readArrayEnd();
+
+ assertEquals(bytes.length, unpacker.getReadByteCount());
+ }
+
@Test @Override
public void testInheritanceClass() throws Exception {
super.testInheritanceClass();
diff --git a/src/test/java/org/msgpack/template/builder/TestSet.java b/src/test/java/org/msgpack/template/builder/TestSet.java
index 52f073178..12557a026 100644
--- a/src/test/java/org/msgpack/template/builder/TestSet.java
+++ b/src/test/java/org/msgpack/template/builder/TestSet.java
@@ -12,6 +12,8 @@
import org.msgpack.testclasses.EnumTypeFieldsClass;
import org.msgpack.testclasses.EnumTypeFieldsClassNotNullable;
import org.msgpack.testclasses.FinalClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClass;
+import org.msgpack.testclasses.IndexedFieldsBeanClassNotNullable;
import org.msgpack.testclasses.InheritanceClass;
import org.msgpack.testclasses.InheritanceClassNotNullable;
import org.msgpack.testclasses.ListTypeFieldsClass;
@@ -434,6 +436,50 @@ public void testReferenceCycleTypeFieldsClassNotNullable() throws Exception {
public void testReferenceCycleTypeFieldsClassNotNullable(ReferenceCycleTypeFieldsClassNotNullable v) throws Exception {
}
+ public void testIndexedFieldsBeanClass() throws Exception {
+ testIndexedFieldsBeanClass(null);
+ testIndexedFieldsBeanClass(new IndexedFieldsBeanClass());
+ IndexedFieldsBeanClass v = new IndexedFieldsBeanClass();
+ v.f5 = "alpha";
+ v.f4 = "echo";
+ v.f3 = "bravo";
+ v.f2 = "delta";
+ v.f1 = "charlie";
+ testIndexedFieldsBeanClass(v);
+ testIndexedFieldsBeanClassFieldsUnpackedInOrder(v);
+ }
+
+ public void testIndexedFieldsBeanClass(IndexedFieldsBeanClass v) throws Exception {
+ }
+
+ public void testIndexedFieldsBeanClassFieldsUnpackedInOrder(IndexedFieldsBeanClass v) throws Exception {
+ }
+
+ public void testIndexedFieldsBeanClassNotNullable() throws Exception {
+ testIndexedFieldsBeanClassNotNullable(null);
+ try {
+ testIndexedFieldsBeanClassNotNullable(new IndexedFieldsBeanClassNotNullable());
+ Assert.fail();
+ } catch (Throwable t) {
+ Assert.assertTrue(t instanceof MessageTypeException);
+ }
+
+ IndexedFieldsBeanClassNotNullable v = new IndexedFieldsBeanClassNotNullable();
+ v.f5 = "alpha";
+ v.f4 = "echo";
+ v.f3 = "bravo";
+ v.f2 = "delta";
+ v.f1 = "charlie";
+ testIndexedFieldsBeanClassNotNullable(v);
+ testIndexedFieldsBeanClassNotNullableFieldsUnpackedInOrder(v);
+ }
+
+ public void testIndexedFieldsBeanClassNotNullable(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ }
+
+ public void testIndexedFieldsBeanClassNotNullableFieldsUnpackedInOrder(IndexedFieldsBeanClassNotNullable v) throws Exception {
+ }
+
public void testInheritanceClass() throws Exception {
testInheritanceClass(null);
testInheritanceClass(new InheritanceClass());
diff --git a/src/test/java/org/msgpack/testclasses/IndexedFieldsBeanClass.java b/src/test/java/org/msgpack/testclasses/IndexedFieldsBeanClass.java
new file mode 100644
index 000000000..7c3331c36
--- /dev/null
+++ b/src/test/java/org/msgpack/testclasses/IndexedFieldsBeanClass.java
@@ -0,0 +1,114 @@
+package org.msgpack.testclasses;
+
+import org.junit.Ignore;
+import org.msgpack.annotation.Index;
+import org.msgpack.annotation.MessagePackBeans;
+
+@Ignore @MessagePackBeans
+public class IndexedFieldsBeanClass {
+
+ public String f5;
+
+ public String f4;
+
+ public String f3;
+
+ public String f2;
+
+ public String f1;
+
+ @Index(0)
+ public String getF5() {
+ return f5;
+ }
+
+ public void setF5(String f5) {
+ this.f5 = f5;
+ }
+
+ @Index(4)
+ public String getF4() {
+ return f4;
+ }
+
+ public void setF4(String f4) {
+ this.f4 = f4;
+ }
+
+ public String getF3() {
+ return f3;
+ }
+
+ @Index(1)
+ public void setF3(String f3) {
+ this.f3 = f3;
+ }
+
+ public String getF2() {
+ return f2;
+ }
+
+ @Index(3)
+ public void setF2(String f2) {
+ this.f2 = f2;
+ }
+
+ @Index(2)
+ public String getF1() {
+ return f1;
+ }
+
+ public void setF1(String f1) {
+ this.f1 = f1;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (! (o instanceof IndexedFieldsBeanClass)) {
+ return false;
+ }
+ IndexedFieldsBeanClass that = (IndexedFieldsBeanClass) o;
+ if (f5 == null) {
+ if (that.f5 != null) {
+ return false;
+ }
+ }
+ if (that.f5 != null && ! f5.equals(that.f5)) {
+ return false;
+ }
+ if (f4 == null) {
+ if (that.f4 != null) {
+ return false;
+ }
+ }
+ if (that.f4 != null && ! f4.equals(that.f4)) {
+ return false;
+ }
+ if (f3 == null) {
+ if (that.f3 != null) {
+ return false;
+ }
+ }
+ if (that.f3 != null && ! f3.equals(that.f3)) {
+ return false;
+ }
+ if (f2 == null) {
+ if (that.f2 != null) {
+ return false;
+ }
+ }
+ if (that.f2 != null && ! f2.equals(that.f2)) {
+ return false;
+ }
+ if (f1 == null) {
+ if (that.f1 != null) {
+ return false;
+ }
+ }
+ if (that.f1 != null && ! f1.equals(that.f1)) {
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/src/test/java/org/msgpack/testclasses/IndexedFieldsBeanClassNotNullable.java b/src/test/java/org/msgpack/testclasses/IndexedFieldsBeanClassNotNullable.java
new file mode 100644
index 000000000..8ec10bfa0
--- /dev/null
+++ b/src/test/java/org/msgpack/testclasses/IndexedFieldsBeanClassNotNullable.java
@@ -0,0 +1,118 @@
+package org.msgpack.testclasses;
+
+import org.junit.Ignore;
+import org.msgpack.annotation.*;
+
+@Ignore @MessagePackBeans
+public class IndexedFieldsBeanClassNotNullable {
+
+ public String f5;
+
+ public String f4;
+
+ public String f3;
+
+ public String f2;
+
+ public String f1;
+
+ @Index(0) @NotNullable
+ public String getF5() {
+ return f5;
+ }
+
+ @NotNullable
+ public void setF5(String f5) {
+ this.f5 = f5;
+ }
+
+ @Index(4) @NotNullable
+ public String getF4() {
+ return f4;
+ }
+
+ @NotNullable
+ public void setF4(String f4) {
+ this.f4 = f4;
+ }
+
+ @NotNullable
+ public String getF3() {
+ return f3;
+ }
+
+ @Index(1) @NotNullable
+ public void setF3(String f3) {
+ this.f3 = f3;
+ }
+
+ @NotNullable
+ public String getF2() {
+ return f2;
+ }
+
+ @Index(3) @NotNullable
+ public void setF2(String f2) {
+ this.f2 = f2;
+ }
+
+ @Index(2) @NotNullable
+ public String getF1() {
+ return f1;
+ }
+
+ @NotNullable
+ public void setF1(String f1) {
+ this.f1 = f1;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (! (o instanceof IndexedFieldsBeanClassNotNullable)) {
+ return false;
+ }
+ IndexedFieldsBeanClassNotNullable that = (IndexedFieldsBeanClassNotNullable) o;
+ if (f5 == null) {
+ if (that.f5 != null) {
+ return false;
+ }
+ }
+ if (that.f5 != null && ! f5.equals(that.f5)) {
+ return false;
+ }
+ if (f4 == null) {
+ if (that.f4 != null) {
+ return false;
+ }
+ }
+ if (that.f4 != null && ! f4.equals(that.f4)) {
+ return false;
+ }
+ if (f3 == null) {
+ if (that.f3 != null) {
+ return false;
+ }
+ }
+ if (that.f3 != null && ! f3.equals(that.f3)) {
+ return false;
+ }
+ if (f2 == null) {
+ if (that.f2 != null) {
+ return false;
+ }
+ }
+ if (that.f2 != null && ! f2.equals(that.f2)) {
+ return false;
+ }
+ if (f1 == null) {
+ if (that.f1 != null) {
+ return false;
+ }
+ }
+ if (that.f1 != null && ! f1.equals(that.f1)) {
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/src/test/java/org/msgpack/unpacker/TestMessagePackUnpacker.java b/src/test/java/org/msgpack/unpacker/TestMessagePackUnpacker.java
new file mode 100644
index 000000000..17693003d
--- /dev/null
+++ b/src/test/java/org/msgpack/unpacker/TestMessagePackUnpacker.java
@@ -0,0 +1,38 @@
+package org.msgpack.unpacker;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.msgpack.MessagePack;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+import static org.junit.Assert.*;
+
+public class TestMessagePackUnpacker {
+ private MessagePack msgpack;
+
+ @Before
+ public void setup() {
+ msgpack = new MessagePack();
+ }
+
+ @Test
+ public void testStr8() throws IOException {
+ // Deserialize a data that another platform serialized a string "xxx...xxx" (length: 128).
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ // 0xD9: str8, 0x80: length: 128
+ out.write(new byte[] {(byte) 0xD9, (byte) 0x80});
+ for (int i = 0; i < 128; i++) {
+ // 0x78: 'x'
+ out.write(0x78);
+ }
+ Unpacker unpacker = msgpack.createUnpacker(new ByteArrayInputStream(out.toByteArray()));
+ String string = unpacker.readString();
+ assertEquals(128, string.length());
+ for (int i = 0; i < 128; i++) {
+ assertEquals('x', string.charAt(i));
+ }
+ }
+}
\ No newline at end of file