diff options
author | joel.leitch@gmail.com <joel.leitch@gmail.com@2534bb62-2c4b-0410-85e8-b5006b95c4ae> | 2013-01-09 23:37:38 +0000 |
---|---|---|
committer | joel.leitch@gmail.com <joel.leitch@gmail.com@2534bb62-2c4b-0410-85e8-b5006b95c4ae> | 2013-01-09 23:37:38 +0000 |
commit | 8b3b867a6c425112a477aa87efa19aab01df2c54 (patch) | |
tree | 1640c8741243188be2b4394fa6217d691305f2d4 | |
parent | 95e76839b706daee86b0143ac1aadf5cf697952d (diff) | |
download | android_external_gson-8b3b867a6c425112a477aa87efa19aab01df2c54.tar.gz android_external_gson-8b3b867a6c425112a477aa87efa19aab01df2c54.tar.bz2 android_external_gson-8b3b867a6c425112a477aa87efa19aab01df2c54.zip |
Stop blowing up on a null key, but rather return that the element is not found.
git-svn-id: http://google-gson.googlecode.com/svn/trunk/gson@1220 2534bb62-2c4b-0410-85e8-b5006b95c4ae
-rw-r--r-- | src/main/java/com/google/gson/internal/LinkedTreeMap.java | 18 | ||||
-rw-r--r-- | src/test/java/com/google/gson/internal/LinkedTreeMapTest.java | 18 |
2 files changed, 28 insertions, 8 deletions
diff --git a/src/main/java/com/google/gson/internal/LinkedTreeMap.java b/src/main/java/com/google/gson/internal/LinkedTreeMap.java index cd2f4ca7..00672514 100644 --- a/src/main/java/com/google/gson/internal/LinkedTreeMap.java +++ b/src/main/java/com/google/gson/internal/LinkedTreeMap.java @@ -387,14 +387,16 @@ public class LinkedTreeMap<K extends Comparable<K>, V> } private TreeNode<K, V> find(K key) { - for (TreeNode<K, V> entry = root; entry != null; ) { - int compareVal = key.compareTo(entry.key); - if (compareVal < 0) { - entry = entry.left; - } else if (compareVal > 0) { - entry = entry.right; - } else { - return entry; + if (key != null) { + for (TreeNode<K, V> entry = root; entry != null; ) { + int compareVal = key.compareTo(entry.key); + if (compareVal < 0) { + entry = entry.left; + } else if (compareVal > 0) { + entry = entry.right; + } else { + return entry; + } } } return null; diff --git a/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java b/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java index 538ee5f4..a46d2b90 100644 --- a/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java +++ b/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java @@ -56,6 +56,24 @@ public class LinkedTreeMapTest extends TestCase { assertEquals(map.size(), map.entrySet().size()); } + public void testGetAndContainsNullKey() throws Exception { + LinkedTreeMap<String, Integer> map = new LinkedTreeMap<String, Integer>(); + assertFalse(map.containsKey(null)); + assertNull(map.get(null)); + + map.put("A", 1); + assertFalse(map.containsKey(null)); + assertNull(map.get(null)); + } + + public void testDisallowPutForNullKeys() throws Exception { + LinkedTreeMap<String, Integer> map = new LinkedTreeMap<String, Integer>(); + try { + map.put(null, 1); + fail(); + } catch (NullPointerException expected) {} + } + public void testSingleElement() throws Exception { LinkedTreeMap<String, Integer> map = new LinkedTreeMap<String, Integer>(); map.put("A", 1); |