From 0c07e745f80ad0381a4b2feac6f4a3ec2082e1c1 Mon Sep 17 00:00:00 2001 From: Muga Nishizawa Date: Sun, 12 Dec 2010 00:47:20 +0900 Subject: [PATCH] java: change spec. of pack methods in ListTemplate and MapTemplate as follow: If user passes null object to the pack method, MessageTypeException is thrown. --- .../java/org/msgpack/template/ListTemplate.java | 13 +++++++++---- .../main/java/org/msgpack/template/MapTemplate.java | 12 ++++++++---- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/java/src/main/java/org/msgpack/template/ListTemplate.java b/java/src/main/java/org/msgpack/template/ListTemplate.java index b0a24f3..385d7b0 100644 --- a/java/src/main/java/org/msgpack/template/ListTemplate.java +++ b/java/src/main/java/org/msgpack/template/ListTemplate.java @@ -37,8 +37,11 @@ public class ListTemplate implements Template { @SuppressWarnings("unchecked") public void pack(Packer pk, Object target) throws IOException { - if(!(target instanceof List)) { - throw new MessageTypeException(); + if (! (target instanceof List)) { + if (target == null) { + throw new MessageTypeException(new NullPointerException("target is null.")); + } + throw new MessageTypeException("target is not List type: " + target.getClass()); } List list = (List)target; pk.packArray(list.size()); @@ -47,13 +50,14 @@ public class ListTemplate implements Template { } } + @SuppressWarnings("unchecked") public Object unpack(Unpacker pac, Object to) throws IOException, MessageTypeException { int length = pac.unpackArray(); List list; if(to == null) { list = new ArrayList(length); } else { - list = (List)to; + list = (List) to; list.clear(); } for(; length > 0; length--) { @@ -62,6 +66,7 @@ public class ListTemplate implements Template { return list; } + @SuppressWarnings("unchecked") public Object convert(MessagePackObject from, Object to) throws MessageTypeException { MessagePackObject[] array = from.asArray(); List list; @@ -69,7 +74,7 @@ public class ListTemplate implements Template { list = new ArrayList(array.length); } else { // TODO: optimize if list is instanceof ArrayList - list = (List)to; + list = (List) to; list.clear(); } for(MessagePackObject element : array) { diff --git a/java/src/main/java/org/msgpack/template/MapTemplate.java b/java/src/main/java/org/msgpack/template/MapTemplate.java index 9815e3b..9ad74fa 100644 --- a/java/src/main/java/org/msgpack/template/MapTemplate.java +++ b/java/src/main/java/org/msgpack/template/MapTemplate.java @@ -44,9 +44,12 @@ public class MapTemplate implements Template { @SuppressWarnings("unchecked") public void pack(Packer pk, Object target) throws IOException { if(!(target instanceof Map)) { - throw new MessageTypeException(); + if (target == null) { + throw new MessageTypeException(new NullPointerException("target is null.")); + } + throw new MessageTypeException("target is not Map type: " + target.getClass()); } - Map map = (Map)target; + Map map = (Map) target; pk.packMap(map.size()); for(Map.Entry pair : map.entrySet()) { keyTemplate.pack(pk, pair.getKey()); @@ -54,13 +57,14 @@ public class MapTemplate implements Template { } } + @SuppressWarnings("unchecked") public Object unpack(Unpacker pac, Object to) throws IOException, MessageTypeException { int length = pac.unpackMap(); Map map; if(to == null) { map = new HashMap(length); } else { - map = (Map)to; + map = (Map) to; map.clear(); } for(; length > 0; length--) { @@ -78,7 +82,7 @@ public class MapTemplate implements Template { if(to == null) { map = new HashMap(src.size()); } else { - map = (Map)to; + map = (Map) to; map.clear(); } for(Map.Entry pair : src.entrySet()) {