Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java21
-rw-r--r--plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java2
2 files changed, 21 insertions, 2 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java
index 0edfcad8d3..f62663af3a 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java
@@ -222,6 +222,15 @@ public final class CDORevisionUtil
public static CDOChangeSetData createChangeSetData(Set<CDOID> ids, CDORevisionProvider startProvider,
CDORevisionProvider endProvider)
{
+ return createChangeSetData(ids, startProvider, endProvider, false);
+ }
+
+ /**
+ * @since 4.1
+ */
+ public static CDOChangeSetData createChangeSetData(Set<CDOID> ids, CDORevisionProvider startProvider,
+ CDORevisionProvider endProvider, boolean useStartVersions)
+ {
List<CDOIDAndVersion> newObjects = new ArrayList<CDOIDAndVersion>();
List<CDORevisionKey> changedObjects = new ArrayList<CDORevisionKey>();
List<CDOIDAndVersion> detachedObjects = new ArrayList<CDOIDAndVersion>();
@@ -232,9 +241,14 @@ public final class CDORevisionUtil
if (startRevision == null && endRevision != null)
{
+ if (useStartVersions)
+ {
+ ((InternalCDORevision)endRevision).setVersion(0);
+ }
+
newObjects.add(endRevision);
}
- else if (endRevision == null && startRevision != null)
+ else if (startRevision != null && endRevision == null)
{
detachedObjects.add(CDOIDUtil.createIDAndVersion(id, CDOBranchVersion.UNSPECIFIED_VERSION));
}
@@ -242,6 +256,11 @@ public final class CDORevisionUtil
{
if (!startRevision.equals(endRevision))
{
+ if (useStartVersions)
+ {
+ ((InternalCDORevision)endRevision).setVersion(startRevision.getVersion());
+ }
+
CDORevisionDelta delta = endRevision.compare(startRevision);
if (!delta.isEmpty())
{
diff --git a/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java b/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java
index aea0f1b6c6..517e724b1d 100644
--- a/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java
+++ b/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java
@@ -582,7 +582,7 @@ public class CDOWorkspaceImpl extends Notifier implements InternalCDOWorkspace
public CDOChangeSetData getLocalChanges()
{
Set<CDOID> ids = base.getIDs();
- return CDORevisionUtil.createChangeSetData(ids, base, this);
+ return CDORevisionUtil.createChangeSetData(ids, base, this, true);
}
public CDOSessionConfigurationFactory getRemoteSessionConfigurationFactory()

Back to the top