Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOStoreImpl.java')
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOStoreImpl.java32
1 files changed, 18 insertions, 14 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOStoreImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOStoreImpl.java
index 69d1df257e..ac4abc8018 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOStoreImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOStoreImpl.java
@@ -228,18 +228,19 @@ public final class CDOStoreImpl implements CDOStore
}
InternalCDORevision revision = readRevision(cdoObject);
- if (feature.isMany())
+ if (feature.isUnsettable())
{
- CDOList list = revision.getList(feature);
- return list != null && !list.isEmpty();
+ Object value = revision.getValue(feature);
+ return value != null;
}
- Object value = revision.getValue(feature);
- if (feature.isUnsettable())
+ if (feature.isMany())
{
- return value != null;
+ CDOList list = revision.getListOrNull(feature);
+ return list != null && !list.isEmpty();
}
+ Object value = revision.getValue(feature);
if (value == null)
{
return false;
@@ -603,12 +604,15 @@ public final class CDOStoreImpl implements CDOStore
List<?> list = (List<?>)object;
list.clear();
}
+
+ if (!feature.isUnsettable())
+ {
+ return;
+ }
}
- else
- {
- CDOFeatureDelta delta = new CDOUnsetFeatureDeltaImpl(feature);
- writeRevision(cdoObject, delta);
- }
+
+ CDOFeatureDelta delta = new CDOUnsetFeatureDeltaImpl(feature);
+ writeRevision(cdoObject, delta);
}
finally
{
@@ -842,7 +846,7 @@ public final class CDOStoreImpl implements CDOStore
if (value instanceof CDOID)
{
CDOID id = (CDOID)value;
- CDOList list = revision.getList(feature);
+ CDOList list = revision.getOrCreateList(feature);
CDORevisionPrefetchingPolicy policy = view.options().getRevisionPrefetchingPolicy();
InternalCDORevisionManager revisionManager = view.getSession().getRevisionManager();
List<CDOID> listOfIDs = policy.loadAhead(revisionManager, view, eObject, feature, list, index, id);
@@ -939,8 +943,8 @@ public final class CDOStoreImpl implements CDOStore
// Bug 293283 / Bug 314387
InternalCDORevision revision = readRevision(cdoObject);
- CDOList list = revision.getList(feature);
- int size = list.size();
+ CDOList list = revision.getListOrNull(feature);
+ int size = list == null ? 0 : list.size();
if (index < 0 || size <= index)
{
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);

Back to the top