Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2010-07-07 16:55:10 +0000
committerEike Stepper2010-07-07 16:55:10 +0000
commitc4d3ed8b70f2118652389b604a48c8846866f0ee (patch)
tree371a60f9a72c160a7e8ee7868ab2ab6b02a60c21 /plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal
parente226589b37d964e9d58de60b4ecdc8a66f52a96f (diff)
downloadcdo-c4d3ed8b70f2118652389b604a48c8846866f0ee.tar.gz
cdo-c4d3ed8b70f2118652389b604a48c8846866f0ee.tar.xz
cdo-c4d3ed8b70f2118652389b604a48c8846866f0ee.zip
[319090] Provide a CDOConflictResolver that uses a CDOMerger
https://bugs.eclipse.org/bugs/show_bug.cgi?id=319090
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal')
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitDelegationRequest.java14
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java16
3 files changed, 24 insertions, 11 deletions
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java
index d89382912e..e7d23897d1 100644
--- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java
@@ -48,6 +48,7 @@ import org.eclipse.net4j.util.io.StringIO;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
import org.eclipse.net4j.util.om.trace.PerfTracer;
+import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.spi.cdo.AbstractQueryIterator;
@@ -260,9 +261,9 @@ public class CDOClientProtocol extends SignalProtocol<CDOSession> implements CDO
}
public CommitTransactionResult commitDelegation(CDOBranch branch, String userID, String comment,
- CDOCommitData commitData, OMMonitor monitor)
+ CDOCommitData commitData, Map<CDOID, EClass> detachedObjectTypes, OMMonitor monitor)
{
- return send(new CommitDelegationRequest(this, branch, userID, comment, commitData), monitor);
+ return send(new CommitDelegationRequest(this, branch, userID, comment, commitData, detachedObjectTypes), monitor);
}
public CommitTransactionResult commitXATransactionPhase1(InternalCDOXACommitContext xaContext, OMMonitor monitor)
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitDelegationRequest.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitDelegationRequest.java
index 3c90c2573c..37d2687cc9 100644
--- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitDelegationRequest.java
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitDelegationRequest.java
@@ -19,7 +19,10 @@ import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry.MetaInstanceMapper;
+import org.eclipse.emf.ecore.EClass;
+
import java.io.IOException;
+import java.util.Map;
/**
* @author Eike Stepper
@@ -32,14 +35,17 @@ public class CommitDelegationRequest extends CommitTransactionRequest
private String userID;
+ private Map<CDOID, EClass> detachedObjectTypes;
+
public CommitDelegationRequest(CDOClientProtocol protocol, CDOBranch branch, String userID, String comment,
- CDOCommitData commitData)
+ CDOCommitData commitData, Map<CDOID, EClass> detachedObjectTypes)
{
super(protocol, CDOProtocolConstants.SIGNAL_COMMIT_DELEGATION, UNKNOWN_TRANSACTION_ID, comment, false,
CDOIDProvider.NOOP, commitData);
this.branch = branch;
this.userID = userID;
+ this.detachedObjectTypes = detachedObjectTypes;
}
@Override
@@ -50,6 +56,12 @@ public class CommitDelegationRequest extends CommitTransactionRequest
}
@Override
+ protected EClass getObjectType(CDOID id)
+ {
+ return detachedObjectTypes.get(id);
+ }
+
+ @Override
protected void remapMetaInstanceID(MetaInstanceMapper metaInstanceMapper, CDOIDTemp oldID, CDOID newID)
{
// Do nothing
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java
index 59a61be615..48110849dc 100644
--- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java
@@ -195,26 +195,26 @@ public class CommitTransactionRequest extends RequestWithMonitoring<CommitTransa
TRACER.format("Writing {0} detached objects", detachedObjects.size()); //$NON-NLS-1$
}
- CDOTransaction transaction = null;
boolean ensuringReferentialIntegrity = getSession().getRepositoryInfo().isEnsuringReferentialIntegrity();
- if (ensuringReferentialIntegrity)
- {
- transaction = (CDOTransaction)getSession().getView(transactionID);
- }
-
for (CDOIDAndVersion detachedObject : detachedObjects)
{
CDOID id = detachedObject.getID();
out.writeCDOID(id);
if (ensuringReferentialIntegrity)
{
- CDOObject object = transaction.getObject(id);
- EClass eClass = object.eClass();
+ EClass eClass = getObjectType(id);
out.writeCDOClassifierRef(eClass);
}
}
}
+ protected EClass getObjectType(CDOID id)
+ {
+ CDOTransaction transaction = (CDOTransaction)getSession().getView(transactionID);
+ CDOObject object = transaction.getObject(id);
+ return object.eClass();
+ }
+
@Override
protected final CommitTransactionResult confirming(ExtendedDataInputStream in, OMMonitor monitor) throws Exception
{

Back to the top