Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Merks2018-07-22 11:59:24 +0000
committerEd Merks2018-07-22 11:59:24 +0000
commitd0af43e469f2b7be2eb573f89d9ed1f9d4dc4921 (patch)
tree0581ef3eeaf14001c29a003d91b538f82e201838
parent9fdcb8ef8bf06cdd14b463ca26c8d4b97558d5be (diff)
downloadorg.eclipse.emf-d0af43e469f2b7be2eb573f89d9ed1f9d4dc4921.tar.gz
org.eclipse.emf-d0af43e469f2b7be2eb573f89d9ed1f9d4dc4921.tar.xz
org.eclipse.emf-d0af43e469f2b7be2eb573f89d9ed1f9d4dc4921.zip
[537183] Inconsistent results between DelegatingEcoreEList.contains and
DelegatingEcoreEList.containsAll
-rw-r--r--plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/ecore/util/DelegatingEcoreEList.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/ecore/util/DelegatingEcoreEList.java b/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/ecore/util/DelegatingEcoreEList.java
index aaadc0c57..527137a16 100644
--- a/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/ecore/util/DelegatingEcoreEList.java
+++ b/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/ecore/util/DelegatingEcoreEList.java
@@ -506,6 +506,30 @@ public abstract class DelegatingEcoreEList<E>
}
}
+ /**
+ * Resolve to compare objects but do not modify list
+ */
+ @Override
+ public boolean containsAll(Collection<?> collection)
+ {
+ boolean result = super.containsAll(collection);
+ if (hasProxies() && !result)
+ {
+ int count = 0;
+ for (int i = 0, size = size(); i < size; ++i)
+ {
+ EObject delegateEObject = (EObject)delegateGet(i);
+ EObject eObject = resolveProxy(delegateEObject);
+ if (collection.contains(eObject) || eObject != delegateEObject && collection.contains(delegateEObject))
+ {
+ ++count;
+ }
+ }
+ result = count == collection.size();
+ }
+ return result;
+ }
+
@Override
public int indexOf(Object object)
{

Back to the top