diff options
author | Eike Stepper | 2016-10-05 10:10:22 +0000 |
---|---|---|
committer | Eike Stepper | 2016-10-05 10:10:22 +0000 |
commit | de192b0abbde6c721f376da4c747cd74f2a053c9 (patch) | |
tree | 9ffe68af07b3581889a1915ecaccbcd0eead12fd /plugins/org.eclipse.emf.cdo | |
parent | 1f78f3ad6653cf1065861198ada3c81aaf9d41b2 (diff) | |
download | cdo-de192b0abbde6c721f376da4c747cd74f2a053c9.tar.gz cdo-de192b0abbde6c721f376da4c747cd74f2a053c9.tar.xz cdo-de192b0abbde6c721f376da4c747cd74f2a053c9.zip |
[503564] Creation of CDOSetFeatureDeltaImpl in CDOStoreImp mixes EMF-Type and CDO-Type values
https://bugs.eclipse.org/bugs/show_bug.cgi?id=503564
Diffstat (limited to 'plugins/org.eclipse.emf.cdo')
2 files changed, 11 insertions, 5 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/CDONotificationBuilder.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/CDONotificationBuilder.java index c670261eb9..2dddf8cd89 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/CDONotificationBuilder.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/CDONotificationBuilder.java @@ -155,7 +155,13 @@ public class CDONotificationBuilder extends CDOFeatureDeltaVisitorImpl public void visit(CDOSetFeatureDelta delta) { EStructuralFeature feature = delta.getFeature(); - Object oldValue = getOldValue(feature); + + Object oldValue = delta.getOldValue(); + if (oldValue == null) + { + oldValue = getOldValue(feature); + } + if (oldValue instanceof CDOID) { CDOID oldID = (CDOID)oldValue; 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 b5e8fb5787..93541dd8da 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 @@ -247,6 +247,7 @@ public final class CDOStoreImpl implements CDOStore value = convertToEMF(eObject, revision, feature, NO_INDEX, value); Object defaultValue = feature.getDefaultValue(); + return !ObjectUtil.equals(value, defaultValue); } finally @@ -564,12 +565,12 @@ public final class CDOStoreImpl implements CDOStore // TODO: Use writeRevision() result!! InternalCDORevision oldRevision = readRevision(cdoObject); Object oldValue = oldRevision.get(feature, index); - oldValue = convertToEMF(eObject, oldRevision, feature, index, oldValue); + Object resultValue = convertToEMF(eObject, oldRevision, feature, index, oldValue); CDOFeatureDelta delta = new CDOSetFeatureDeltaImpl(feature, index, value, oldValue); writeRevision(cdoObject, delta); - return oldValue; + return resultValue; } finally { @@ -950,8 +951,7 @@ public final class CDOStoreImpl implements CDOStore } Object oldValue = revision.get(feature, index); - oldValue = convertToEMF(eObject, revision, feature, index, oldValue); - return oldValue; + return convertToEMF(eObject, revision, feature, index, oldValue); } private static InternalCDORevision readRevision(InternalCDOObject cdoObject) |