From: Mark Davis Date: Thu, 19 Jul 2012 21:23:41 +0000 (+0000) Subject: ICU-9422 fix remove problem X-Git-Tag: milestone-59-0-1~3718 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5a8800843a91b951f988d8a917bbe3736a534dd7;p=icu ICU-9422 fix remove problem X-SVN-Rev: 32045 --- diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Relation.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Relation.java index 05cdb347675..6317469fda2 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Relation.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Relation.java @@ -181,17 +181,27 @@ public class Relation implements Freezable { // TODO: add , Map removeAll(K key) { - return data.remove(key); + try { + return data.remove(key); + } catch (NullPointerException e) { + return null; // data doesn't allow null, eg ConcurrentHashMap + } } public boolean remove(K key, V value) { - Set set = data.get(key); - if (set == null) return false; - boolean result = set.remove(value); - if (set.size() == 0) { - data.remove(key); + try { + Set set = data.get(key); + if (set == null) { + return false; + } + boolean result = set.remove(value); + if (set.size() == 0) { + data.remove(key); + } + return result; + } catch (NullPointerException e) { + return false; // data doesn't allow null, eg ConcurrentHashMap } - return result; } public int size() { @@ -286,16 +296,20 @@ public class Relation implements Freezable { // TODO: add , Map toBeRemoved) { boolean result = false; for (K key : toBeRemoved.keySet()) { - Set values = toBeRemoved.getAll(key); - if (values != null) { - result |= removeAll(key, values); + try { + Set values = toBeRemoved.getAll(key); + if (values != null) { + result |= removeAll(key, values); + } + } catch (NullPointerException e) { + // data doesn't allow null, eg ConcurrentHashMap } } return result; } public Set removeAll(K... keys) { - return data.remove(Arrays.asList(keys)); + return removeAll(Arrays.asList(keys)); } public boolean removeAll(K key, Iterable toBeRemoved) { @@ -309,9 +323,13 @@ public class Relation implements Freezable { // TODO: add , Map removeAll(Collection toBeRemoved) { Set result = new LinkedHashSet(); for (K key : toBeRemoved) { - final Set removals = data.remove(key); - if (removals != null) { - result.addAll(removals); + try { + final Set removals = data.remove(key); + if (removals != null) { + result.addAll(removals); + } + } catch (NullPointerException e) { + // data doesn't allow null, eg ConcurrentHashMap } } return result;