mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-03-23 01:08:20 +01:00
java: fixes ListTemplate and MapTemplate
This commit is contained in:
parent
e3bf8a404b
commit
19ff0dd17f
@ -34,10 +34,11 @@ public class ListTemplate implements Template {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void pack(Packer pk, Object target) throws IOException {
|
public void pack(Packer pk, Object target) throws IOException {
|
||||||
if(target instanceof List) {
|
if(!(target instanceof List)) {
|
||||||
throw new MessageTypeException();
|
throw new MessageTypeException();
|
||||||
}
|
}
|
||||||
List<Object> list = (List<Object>)target;
|
List<Object> list = (List<Object>)target;
|
||||||
|
pk.packArray(list.size());
|
||||||
for(Object element : list) {
|
for(Object element : list) {
|
||||||
elementTemplate.pack(pk, element);
|
elementTemplate.pack(pk, element);
|
||||||
}
|
}
|
||||||
|
@ -40,10 +40,11 @@ public class MapTemplate implements Template {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void pack(Packer pk, Object target) throws IOException {
|
public void pack(Packer pk, Object target) throws IOException {
|
||||||
if(target instanceof Map) {
|
if(!(target instanceof Map)) {
|
||||||
throw new MessageTypeException();
|
throw new MessageTypeException();
|
||||||
}
|
}
|
||||||
Map<Object,Object> map = (Map<Object,Object>)target;
|
Map<Object,Object> map = (Map<Object,Object>)target;
|
||||||
|
pk.packMap(map.size());
|
||||||
for(Map.Entry<Object,Object> pair : map.entrySet()) {
|
for(Map.Entry<Object,Object> pair : map.entrySet()) {
|
||||||
keyTemplate.pack(pk, pair.getKey());
|
keyTemplate.pack(pk, pair.getKey());
|
||||||
valueTemplate.pack(pk, pair.getValue());
|
valueTemplate.pack(pk, pair.getValue());
|
||||||
|
@ -17,15 +17,18 @@ public class TestMessagePackStaticMethods extends TestCase {
|
|||||||
byte[] a = MessagePack.pack("msgpack");
|
byte[] a = MessagePack.pack("msgpack");
|
||||||
byte[] b = MessagePack.pack((Object)1);
|
byte[] b = MessagePack.pack((Object)1);
|
||||||
byte[] c = MessagePack.pack((Object)null);
|
byte[] c = MessagePack.pack((Object)null);
|
||||||
|
byte[] d = MessagePack.pack(createStringList());
|
||||||
|
|
||||||
{
|
{
|
||||||
MessagePackObject aobj = MessagePack.unpack(a);
|
MessagePackObject aobj = MessagePack.unpack(a);
|
||||||
MessagePackObject bobj = MessagePack.unpack(b);
|
MessagePackObject bobj = MessagePack.unpack(b);
|
||||||
MessagePackObject cobj = MessagePack.unpack(c);
|
MessagePackObject cobj = MessagePack.unpack(c);
|
||||||
|
MessagePackObject dobj = MessagePack.unpack(d);
|
||||||
|
|
||||||
assertEquals(aobj, RawType.create("msgpack"));
|
assertEquals(aobj, RawType.create("msgpack"));
|
||||||
assertEquals(bobj, IntegerType.create(1));
|
assertEquals(bobj, IntegerType.create(1));
|
||||||
assertEquals(cobj, NilType.create());
|
assertEquals(cobj, NilType.create());
|
||||||
|
assertEquals(dobj, createStringList_dynamic());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,6 +40,8 @@ public class TestMessagePackStaticMethods extends TestCase {
|
|||||||
MessagePack.pack(bout, (Object)1);
|
MessagePack.pack(bout, (Object)1);
|
||||||
ByteArrayOutputStream cout = new ByteArrayOutputStream();
|
ByteArrayOutputStream cout = new ByteArrayOutputStream();
|
||||||
MessagePack.pack(cout, (Object)null);
|
MessagePack.pack(cout, (Object)null);
|
||||||
|
ByteArrayOutputStream dout = new ByteArrayOutputStream();
|
||||||
|
MessagePack.pack(dout, createStringList());
|
||||||
|
|
||||||
{
|
{
|
||||||
InputStream ain = new ByteArrayInputStream(aout.toByteArray());
|
InputStream ain = new ByteArrayInputStream(aout.toByteArray());
|
||||||
@ -45,10 +50,13 @@ public class TestMessagePackStaticMethods extends TestCase {
|
|||||||
MessagePackObject bobj = MessagePack.unpack(bin);
|
MessagePackObject bobj = MessagePack.unpack(bin);
|
||||||
InputStream cin = new ByteArrayInputStream(cout.toByteArray());
|
InputStream cin = new ByteArrayInputStream(cout.toByteArray());
|
||||||
MessagePackObject cobj = MessagePack.unpack(cin);
|
MessagePackObject cobj = MessagePack.unpack(cin);
|
||||||
|
InputStream din = new ByteArrayInputStream(dout.toByteArray());
|
||||||
|
MessagePackObject dobj = MessagePack.unpack(din);
|
||||||
|
|
||||||
assertEquals(aobj, RawType.create("msgpack"));
|
assertEquals(aobj, RawType.create("msgpack"));
|
||||||
assertEquals(bobj, IntegerType.create(1));
|
assertEquals(bobj, IntegerType.create(1));
|
||||||
assertEquals(cobj, NilType.create());
|
assertEquals(cobj, NilType.create());
|
||||||
|
assertEquals(dobj, createStringList_dynamic());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,16 +65,19 @@ public class TestMessagePackStaticMethods extends TestCase {
|
|||||||
byte[] a = MessagePack.pack("msgpack", TString);
|
byte[] a = MessagePack.pack("msgpack", TString);
|
||||||
byte[] b = MessagePack.pack((Object)1, TInteger);
|
byte[] b = MessagePack.pack((Object)1, TInteger);
|
||||||
byte[] c = MessagePack.pack((Object)null, TAny);
|
byte[] c = MessagePack.pack((Object)null, TAny);
|
||||||
|
byte[] d = MessagePack.pack(createStringList(), tList(TString));
|
||||||
|
|
||||||
{
|
{
|
||||||
Object aobj = MessagePack.unpack(a, TString);
|
Object aobj = MessagePack.unpack(a, TString);
|
||||||
Object bobj = MessagePack.unpack(b, TInteger);
|
Object bobj = MessagePack.unpack(b, TInteger);
|
||||||
Object cobj_any = MessagePack.unpack(c, TAny);
|
Object cobj_any = MessagePack.unpack(c, TAny);
|
||||||
Object cobj_obj = MessagePack.unpack(c, tOptional(TAny));
|
Object cobj_obj = MessagePack.unpack(c, tOptional(TAny));
|
||||||
|
Object dobj = MessagePack.unpack(d, tList(TString));
|
||||||
assertEquals(aobj, "msgpack");
|
assertEquals(aobj, "msgpack");
|
||||||
assertEquals(bobj, 1);
|
assertEquals(bobj, 1);
|
||||||
assertEquals(cobj_any, NilType.create());
|
assertEquals(cobj_any, NilType.create());
|
||||||
assertEquals(cobj_obj, null);
|
assertEquals(cobj_obj, null);
|
||||||
|
assertEquals(dobj, createStringList());
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -87,6 +98,8 @@ public class TestMessagePackStaticMethods extends TestCase {
|
|||||||
MessagePack.pack(bout, (Object)1);
|
MessagePack.pack(bout, (Object)1);
|
||||||
ByteArrayOutputStream cout = new ByteArrayOutputStream();
|
ByteArrayOutputStream cout = new ByteArrayOutputStream();
|
||||||
MessagePack.pack(cout, (Object)null);
|
MessagePack.pack(cout, (Object)null);
|
||||||
|
ByteArrayOutputStream dout = new ByteArrayOutputStream();
|
||||||
|
MessagePack.pack(dout, createStringList());
|
||||||
|
|
||||||
{
|
{
|
||||||
InputStream ain = new ByteArrayInputStream(aout.toByteArray());
|
InputStream ain = new ByteArrayInputStream(aout.toByteArray());
|
||||||
@ -97,11 +110,14 @@ public class TestMessagePackStaticMethods extends TestCase {
|
|||||||
Object cobj_any = MessagePack.unpack(cin_any, TAny);
|
Object cobj_any = MessagePack.unpack(cin_any, TAny);
|
||||||
InputStream cin_obj = new ByteArrayInputStream(cout.toByteArray());
|
InputStream cin_obj = new ByteArrayInputStream(cout.toByteArray());
|
||||||
Object cobj_obj = MessagePack.unpack(cin_obj, tOptional(TAny));
|
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(aobj, "msgpack");
|
||||||
assertEquals(bobj, 1);
|
assertEquals(bobj, 1);
|
||||||
assertEquals(cobj_any, NilType.create());
|
assertEquals(cobj_any, NilType.create());
|
||||||
assertEquals(cobj_obj, null);
|
assertEquals(cobj_obj, null);
|
||||||
|
assertEquals(dobj, createStringList());
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -117,5 +133,21 @@ public class TestMessagePackStaticMethods extends TestCase {
|
|||||||
assertEquals(cobj, null);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user