diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java index eed6a6272b..d5d21ece13 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java @@ -8,6 +8,8 @@ * Contributors: * Simon McDuff - initial API and implementation * Eike Stepper - maintenance + * Simon McDuff - http://bugs.eclipse.org/204890 + * Simon McDuff - http://bugs.eclipse.org/213402 **************************************************************************/ package org.eclipse.emf.cdo.internal.common.revision.delta; @@ -35,18 +37,16 @@ import java.util.Map; */ public class CDOContainerFeatureDeltaImpl extends CDOFeatureDeltaImpl implements CDOContainerFeatureDelta { - /** - * TODO Move to CDOObjectContainerFeature - */ - private static CDOFeature CONTAINER_FEATURE = new ContainerFeature(); + private CDOID newResourceID; - private CDOID newContainerID; + private Object newContainerID; private int newContainerFeatureID; - public CDOContainerFeatureDeltaImpl(CDOID newContainerID, int newContainerFeatureID) + public CDOContainerFeatureDeltaImpl(CDOID newResourceID, Object newContainerID, int newContainerFeatureID) { super(CONTAINER_FEATURE); + this.newResourceID = newResourceID; this.newContainerID = newContainerID; this.newContainerFeatureID = newContainerFeatureID; } @@ -55,34 +55,33 @@ public class CDOContainerFeatureDeltaImpl extends CDOFeatureDeltaImpl implements { super(CONTAINER_FEATURE); newContainerFeatureID = in.readInt(); - newContainerID = in.readCDOID(); + newContainerID = in.readCDOID(); + newResourceID = in.readCDOID(); } - @Override - public void write(CDODataOutput out, CDOClass cdoClass) throws IOException + public Type getType() { - out.writeInt(getType().ordinal()); - out.writeInt(newContainerFeatureID); - out.writeCDOID(newContainerID); + return Type.CONTAINER; } - public int getContainerFeatureID() + public CDOID getResourceID() { - return newContainerFeatureID; + return newResourceID; } - public CDOID getContainerID() + public Object getContainerID() { return newContainerID; } - public Type getType() + public int getContainerFeatureID() { - return Type.CONTAINER; + return newContainerFeatureID; } public void apply(CDORevision revision) { + ((InternalCDORevision)revision).setResourceID(newResourceID); ((InternalCDORevision)revision).setContainerID(newContainerID); ((InternalCDORevision)revision).setContainingFeatureID(newContainerFeatureID); } @@ -90,9 +89,20 @@ public class CDOContainerFeatureDeltaImpl extends CDOFeatureDeltaImpl implements @Override public void adjustReferences(Map<CDOIDTemp, CDOID> idMappings) { + newResourceID = (CDOID)CDORevisionUtil.remapID(newResourceID, idMappings); newContainerID = (CDOID)CDORevisionUtil.remapID(newContainerID, idMappings); } + @Override + public void write(CDODataOutput out, CDOClass cdoClass) throws IOException + { + out.writeInt(getType().ordinal()); + out.writeInt(newContainerFeatureID); + newContainerID = out.getIDProvider().provideCDOID(newContainerID); + out.writeCDOID((CDOID)newContainerID); + out.writeCDOID(newResourceID); + } + public void accept(CDOFeatureDeltaVisitor visitor) { visitor.visit(this); @@ -101,7 +111,7 @@ public class CDOContainerFeatureDeltaImpl extends CDOFeatureDeltaImpl implements /** * @author Simon McDuff */ - private static final class ContainerFeature implements CDOFeature + public static final class ContainerFeature implements CDOFeature { public CDOClass getContainingClass() { |