Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2013-04-17 07:38:09 +0000
committerEike Stepper2013-04-17 07:38:09 +0000
commitf9cd044fd749901b8d5a6a72be95cf341ccbb41e (patch)
treeeae4de7d6318452038a1ed5dde22218185730260 /plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util
parenta43fe5c2dd9d0c43d4467ba58e8c19a79d196a31 (diff)
downloadcdo-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.java14
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);
}

Back to the top