diff options
author | Ed Merks | 2018-07-22 11:59:24 +0000 |
---|---|---|
committer | Ed Merks | 2018-07-22 11:59:24 +0000 |
commit | d0af43e469f2b7be2eb573f89d9ed1f9d4dc4921 (patch) | |
tree | 0581ef3eeaf14001c29a003d91b538f82e201838 | |
parent | 9fdcb8ef8bf06cdd14b463ca26c8d4b97558d5be (diff) | |
download | org.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.java | 24 |
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) { |