guard against null arguments in collection methods, esp in var args
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 @@
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 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 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 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 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 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 @@
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 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;
}