bug 322574: Add an assert to verify input collections have no duplicate elements
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ShrinkableCollection.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ShrinkableCollection.java
index ebf2f34..2dfc942 100644
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ShrinkableCollection.java
+++ b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ShrinkableCollection.java
@@ -56,6 +56,7 @@
private static <E> Collection<? extends E> initComposite(List<Collection<? extends E>> collections) {
int size = 0;
for (Collection<? extends E> c : collections) {
+ assert verifyNoDuplicates(c);
size += c.size();
}
Collection<E> result = new ArrayList<E>(size);
@@ -69,6 +70,27 @@
return result;
}
+ private static <E> boolean verifyNoDuplicates(Collection<? extends E> c) {
+ for (E e : c) {
+ int count = 0;
+ for (E f : c) {
+ if (e == null) {
+ if (f == null) {
+ count++;
+ }
+ } else {
+ if (e.equals(f)) {
+ count++;
+ }
+ }
+ }
+ if (count != 1) {
+ return false;
+ }
+ }
+ return true;
+ }
+
public boolean add(E e) {
throw new UnsupportedOperationException();
}