diff options
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.java | 30 |
1 files changed, 17 insertions, 13 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 a40952ea04..504832ed0f 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 @@ -205,23 +205,27 @@ public final class CDOStoreImpl implements CDOStore TRACER.format("isSet({0}, {1})", cdoObject, feature); //$NON-NLS-1$ } - if (!feature.isUnsettable()) + InternalCDORevision revision = getRevisionForReading(cdoObject); + if (feature.isMany()) { - if (feature.isMany()) - { - InternalCDORevision revision = getRevisionForReading(cdoObject); - CDOList list = revision.getList(feature); - return list != null && !list.isEmpty(); - } + CDOList list = revision.getList(feature); + return list != null && !list.isEmpty(); + } - Object value = eObject.eGet(feature); - Object defaultValue = feature.getDefaultValue(); - return !ObjectUtil.equals(value, defaultValue); + Object value = revision.getValue(feature); + if (feature.isUnsettable()) + { + return value != null; + } + + if (value == null) + { + return false; } - // TODO This get() may not work for lists, see above - Object value = get(eObject, feature, NO_INDEX); - return value != null; + value = convertToEMF(eObject, revision, feature, NO_INDEX, value); + Object defaultValue = feature.getDefaultValue(); + return !ObjectUtil.equals(value, defaultValue); } } |