summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorfrsyuki <frsyuki@users.sourceforge.jp>2010-10-24 20:11:39 +0900
committerfrsyuki <frsyuki@users.sourceforge.jp>2010-10-24 20:11:39 +0900
commit19ff0dd17fee50f2ea18b6f941c9f7068260bcb7 (patch)
tree002cbdca2ceb922ff9a7c7d9d1e08f002191714d /java
parente3bf8a404b993da62676d1d435e49a37c404fe3b (diff)
downloadmsgpack-python-19ff0dd17fee50f2ea18b6f941c9f7068260bcb7.tar.gz
java: fixes ListTemplate and MapTemplate
Diffstat (limited to 'java')
-rw-r--r--java/src/main/java/org/msgpack/template/ListTemplate.java3
-rw-r--r--java/src/main/java/org/msgpack/template/MapTemplate.java3
-rw-r--r--java/src/test/java/org/msgpack/TestMessagePackStaticMethods.java32
3 files changed, 36 insertions, 2 deletions
diff --git a/java/src/main/java/org/msgpack/template/ListTemplate.java b/java/src/main/java/org/msgpack/template/ListTemplate.java
index 6703df4..f15ae52 100644
--- a/java/src/main/java/org/msgpack/template/ListTemplate.java
+++ b/java/src/main/java/org/msgpack/template/ListTemplate.java
@@ -34,10 +34,11 @@ public class ListTemplate implements Template {
}
public void pack(Packer pk, Object target) throws IOException {
- if(target instanceof List) {
+ if(!(target instanceof List)) {
throw new MessageTypeException();
}
List<Object> list = (List<Object>)target;
+ pk.packArray(list.size());
for(Object element : list) {
elementTemplate.pack(pk, element);
}
diff --git a/java/src/main/java/org/msgpack/template/MapTemplate.java b/java/src/main/java/org/msgpack/template/MapTemplate.java
index 6925982..9b7b250 100644
--- a/java/src/main/java/org/msgpack/template/MapTemplate.java
+++ b/java/src/main/java/org/msgpack/template/MapTemplate.java
@@ -40,10 +40,11 @@ public class MapTemplate implements Template {
}
public void pack(Packer pk, Object target) throws IOException {
- if(target instanceof Map) {
+ if(!(target instanceof Map)) {
throw new MessageTypeException();
}
Map<Object,Object> map = (Map<Object,Object>)target;
+ pk.packMap(map.size());
for(Map.Entry<Object,Object> pair : map.entrySet()) {
keyTemplate.pack(pk, pair.getKey());
valueTemplate.pack(pk, pair.getValue());
diff --git a/java/src/test/java/org/msgpack/TestMessagePackStaticMethods.java b/java/src/test/java/org/msgpack/TestMessagePackStaticMethods.java
index dea2a37..b91615b 100644
--- a/java/src/test/java/org/msgpack/TestMessagePackStaticMethods.java
+++ b/java/src/test/java/org/msgpack/TestMessagePackStaticMethods.java
@@ -17,15 +17,18 @@ public class TestMessagePackStaticMethods extends TestCase {
byte[] a = MessagePack.pack("msgpack");
byte[] b = MessagePack.pack((Object)1);
byte[] c = MessagePack.pack((Object)null);
+ byte[] d = MessagePack.pack(createStringList());
{
MessagePackObject aobj = MessagePack.unpack(a);
MessagePackObject bobj = MessagePack.unpack(b);
MessagePackObject cobj = MessagePack.unpack(c);
+ MessagePackObject dobj = MessagePack.unpack(d);
assertEquals(aobj, RawType.create("msgpack"));
assertEquals(bobj, IntegerType.create(1));
assertEquals(cobj, NilType.create());
+ assertEquals(dobj, createStringList_dynamic());
}
}
@@ -37,6 +40,8 @@ public class TestMessagePackStaticMethods extends TestCase {
MessagePack.pack(bout, (Object)1);
ByteArrayOutputStream cout = new ByteArrayOutputStream();
MessagePack.pack(cout, (Object)null);
+ ByteArrayOutputStream dout = new ByteArrayOutputStream();
+ MessagePack.pack(dout, createStringList());
{
InputStream ain = new ByteArrayInputStream(aout.toByteArray());
@@ -45,10 +50,13 @@ public class TestMessagePackStaticMethods extends TestCase {
MessagePackObject bobj = MessagePack.unpack(bin);
InputStream cin = new ByteArrayInputStream(cout.toByteArray());
MessagePackObject cobj = MessagePack.unpack(cin);
+ InputStream din = new ByteArrayInputStream(dout.toByteArray());
+ MessagePackObject dobj = MessagePack.unpack(din);
assertEquals(aobj, RawType.create("msgpack"));
assertEquals(bobj, IntegerType.create(1));
assertEquals(cobj, NilType.create());
+ assertEquals(dobj, createStringList_dynamic());
}
}
@@ -57,16 +65,19 @@ public class TestMessagePackStaticMethods extends TestCase {
byte[] a = MessagePack.pack("msgpack", TString);
byte[] b = MessagePack.pack((Object)1, TInteger);
byte[] c = MessagePack.pack((Object)null, TAny);
+ byte[] d = MessagePack.pack(createStringList(), tList(TString));
{
Object aobj = MessagePack.unpack(a, TString);
Object bobj = MessagePack.unpack(b, TInteger);
Object cobj_any = MessagePack.unpack(c, TAny);
Object cobj_obj = MessagePack.unpack(c, tOptional(TAny));
+ Object dobj = MessagePack.unpack(d, tList(TString));
assertEquals(aobj, "msgpack");
assertEquals(bobj, 1);
assertEquals(cobj_any, NilType.create());
assertEquals(cobj_obj, null);
+ assertEquals(dobj, createStringList());
}
{
@@ -87,6 +98,8 @@ public class TestMessagePackStaticMethods extends TestCase {
MessagePack.pack(bout, (Object)1);
ByteArrayOutputStream cout = new ByteArrayOutputStream();
MessagePack.pack(cout, (Object)null);
+ ByteArrayOutputStream dout = new ByteArrayOutputStream();
+ MessagePack.pack(dout, createStringList());
{
InputStream ain = new ByteArrayInputStream(aout.toByteArray());
@@ -97,11 +110,14 @@ public class TestMessagePackStaticMethods extends TestCase {
Object cobj_any = MessagePack.unpack(cin_any, TAny);
InputStream cin_obj = new ByteArrayInputStream(cout.toByteArray());
Object cobj_obj = MessagePack.unpack(cin_obj, tOptional(TAny));
+ InputStream din = new ByteArrayInputStream(dout.toByteArray());
+ Object dobj = MessagePack.unpack(din, tList(TString));
assertEquals(aobj, "msgpack");
assertEquals(bobj, 1);
assertEquals(cobj_any, NilType.create());
assertEquals(cobj_obj, null);
+ assertEquals(dobj, createStringList());
}
{
@@ -117,5 +133,21 @@ public class TestMessagePackStaticMethods extends TestCase {
assertEquals(cobj, null);
}
}
+
+ private List<String> createStringList() {
+ List<String> list = new ArrayList<String>();
+ list.add("frsyuki");
+ list.add("kumofs");
+ list.add("gem-compile");
+ return list;
+ }
+
+ private MessagePackObject createStringList_dynamic() {
+ MessagePackObject[] array = new MessagePackObject[3];
+ array[0] = RawType.create("frsyuki");
+ array[1] = RawType.create("kumofs");
+ array[2] = RawType.create("gem-compile");
+ return ArrayType.create(array);
+ }
}