diff options
author | Eike Stepper | 2013-04-17 07:38:09 +0000 |
---|---|---|
committer | Eike Stepper | 2013-04-17 07:38:09 +0000 |
commit | f9cd044fd749901b8d5a6a72be95cf341ccbb41e (patch) | |
tree | eae4de7d6318452038a1ed5dde22218185730260 /plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util | |
parent | a43fe5c2dd9d0c43d4467ba58e8c19a79d196a31 (diff) | |
download | cdo-f9cd044fd749901b8d5a6a72be95cf341ccbb41e.tar.gz cdo-f9cd044fd749901b8d5a6a72be95cf341ccbb41e.tar.xz cdo-f9cd044fd749901b8d5a6a72be95cf341ccbb41e.zip |
[405850] CDORevision.get(feature, -1) should throw an
IndexOutOfBoundsException for many-valued features
https://bugs.eclipse.org/bugs/show_bug.cgi?id=405850
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util')
-rw-r--r-- | plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CommitIntegrityCheck.java | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CommitIntegrityCheck.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CommitIntegrityCheck.java index 3ecce96036..ce8c6c1d56 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CommitIntegrityCheck.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CommitIntegrityCheck.java @@ -36,7 +36,6 @@ import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.InternalEObject.EStore; import org.eclipse.emf.spi.cdo.InternalCDOObject; import org.eclipse.emf.spi.cdo.InternalCDOTransaction; import org.eclipse.emf.spi.cdo.InternalCDOTransaction.InternalCDOCommitContext; @@ -445,18 +444,21 @@ public class CommitIntegrityCheck { if (referencerClassInfo.hasPersistentOpposite(reference)) { - Object value = cleanRev.get(reference, EStore.NO_INDEX); - if (value != null) + if (reference.isMany()) { - if (reference.isMany()) + EList<?> list = cleanRev.getList(reference); + if (list != null) { - EList<?> list = (EList<?>)value; for (Object element : list) { checkBidiRefTargetIncluded(element, referencer, reference.getName(), msgFrag); } } - else + } + else + { + Object value = cleanRev.getValue(reference); + if (value != null) { checkBidiRefTargetIncluded(value, referencer, reference.getName(), msgFrag); } |