This is an automated email from the ASF dual-hosted git repository. heneveld pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git
commit fb8bd6ee89ee1ea3f4c9ee04fa73d64c8b8e7646 Author: Alex Heneveld <[email protected]> AuthorDate: Tue Oct 20 17:06:16 2020 +0100 guard against null arguments in collection methods, esp in var args --- .../brooklyn/util/collections/MutableList.java | 42 ++++++++++++++++------ .../brooklyn/util/collections/MutableSet.java | 12 +++++-- 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/collections/MutableList.java b/utils/common/src/main/java/org/apache/brooklyn/util/collections/MutableList.java index 7df8787..eda240f 100644 --- a/utils/common/src/main/java/org/apache/brooklyn/util/collections/MutableList.java +++ b/utils/common/src/main/java/org/apache/brooklyn/util/collections/MutableList.java @@ -59,7 +59,11 @@ public class MutableList<V> extends ArrayList<V> { MutableList<V> result = new MutableList<V>(); result.add(v1); result.add(v2); - for (V v: vv) result.add(v); + if (vv==null) { + result.add(null); + } else { + for (V v : vv) result.add(v); + } return result; } @@ -135,7 +139,11 @@ public class MutableList<V> extends ArrayList<V> { public Builder<V> add(V value1, V value2, V ...values) { result.add(value1); result.add(value2); - for (V v: values) result.add(v); + if (values==null) { + result.add(null); + } else { + for (V v : values) result.add(v); + } return this; } @@ -145,7 +153,9 @@ public class MutableList<V> extends ArrayList<V> { } public Builder<V> addAll(Iterable<? extends V> iterable) { - if (iterable instanceof Collection) { + if (iterable==null) { + // nothing + } else if (iterable instanceof Collection) { result.addAll((Collection<? extends V>) iterable); } else { for (V v : iterable) { @@ -156,21 +166,27 @@ public class MutableList<V> extends ArrayList<V> { } public Builder<V> addAll(Iterator<? extends V> iter) { - while (iter.hasNext()) { - add(iter.next()); + if (iter!=null) { + while (iter.hasNext()) { + add(iter.next()); + } } return this; } public Builder<V> addAll(V[] vals) { - for (V v : vals) { - result.add(v); + if (vals!=null) { + for (V v : vals) { + result.add(v); + } } return this; } public Builder<V> removeAll(Iterable<? extends V> iterable) { - if (iterable instanceof Collection) { + if (iterable==null) { + // nothing + } else if (iterable instanceof Collection) { result.removeAll((Collection<? extends V>) iterable); } else { for (V v : iterable) { @@ -181,7 +197,9 @@ public class MutableList<V> extends ArrayList<V> { } public Builder<V> retainAll(Iterable<? extends V> iterable) { - if (iterable instanceof Collection) { + if (iterable==null) { + // nothing + } else if (iterable instanceof Collection) { result.retainAll((Collection<? extends V>) iterable); } else { List<V> toretain = Lists.newArrayList(iterable); @@ -199,8 +217,10 @@ public class MutableList<V> extends ArrayList<V> { } public Builder<V> addLists(Iterable<? extends V> ...items) { - for (Iterable<? extends V> item: items) { - addAll(item); + if (items!=null) { + for (Iterable<? extends V> item : items) { + addAll(item); + } } return this; } diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/collections/MutableSet.java b/utils/common/src/main/java/org/apache/brooklyn/util/collections/MutableSet.java index d5a632f..d3074e7 100644 --- a/utils/common/src/main/java/org/apache/brooklyn/util/collections/MutableSet.java +++ b/utils/common/src/main/java/org/apache/brooklyn/util/collections/MutableSet.java @@ -60,7 +60,11 @@ public class MutableSet<V> extends LinkedHashSet<V> { result.add(v1); result.add(v2); result.add(v3); - for (V vi: vMore) result.add(vi); + if (vMore==null) { + result.add(null); + } else { + for (V vi : vMore) result.add(vi); + } return result; } @@ -126,7 +130,11 @@ public class MutableSet<V> extends LinkedHashSet<V> { public Builder<V> add(V v1, V v2, @SuppressWarnings("unchecked") V ...values) { result.add(v1); result.add(v2); - for (V value: values) result.add(value); + if (values==null) { + result.add(null); + } else { + for (V value : values) result.add(value); + } return this; }
