diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo')
6 files changed, 88 insertions, 4 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/AbstractObjectConflictResolver.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/AbstractObjectConflictResolver.java index 42ffba2878..dfa0b2a037 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/AbstractObjectConflictResolver.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/AbstractObjectConflictResolver.java @@ -176,8 +176,8 @@ public abstract class AbstractObjectConflictResolver extends AbstractConflictRes CDOChangeSetData localChangeSet = transaction.getChangeSetData(); transaction.rollback(); - transaction.applyChangeSetData(remoteChangeSet, transaction, transaction, transaction); - transaction.applyChangeSetData(localChangeSet, transaction, transaction, transaction); + transaction.applyChangeSet(remoteChangeSet, transaction, transaction, transaction); + transaction.applyChangeSet(localChangeSet, transaction, transaction, transaction); } private CDOChangeSetData createChangeSet(List<CDORevisionDelta> revisionDeltas) diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java index 5f5cedceda..1032720deb 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java @@ -13,6 +13,7 @@ package org.eclipse.emf.spi.cdo; import org.eclipse.emf.cdo.CDOObject; import org.eclipse.emf.cdo.CDOObjectReference; import org.eclipse.emf.cdo.common.CDOCommonRepository; +import org.eclipse.emf.cdo.common.CDOCommonRepository.IDGenerationLocation; import org.eclipse.emf.cdo.common.CDOCommonSession.Options.PassiveUpdateMode; import org.eclipse.emf.cdo.common.branch.CDOBranch; import org.eclipse.emf.cdo.common.branch.CDOBranchPoint; @@ -270,14 +271,16 @@ public interface CDOSessionProtocol extends CDOProtocol, PackageLoader, BranchLo private List<InternalCDOPackageUnit> packageUnits = new ArrayList<InternalCDOPackageUnit>(); + private IDGenerationLocation repositoryIDGenerationLocation; + /** - * @since 4.0 + * @since 4.1 */ public OpenSessionResult(int sessionID, String userID, String repositoryUUID, CDOCommonRepository.Type repositoryType, CDOCommonRepository.State repositoryState, String storeType, Set<CDOID.ObjectType> objectIDTypes, long repositoryCreationTime, long lastUpdateTime, CDOID rootResourceID, boolean repositorySupportingAudits, boolean repositorySupportingBranches, boolean repositorySupportingEcore, - boolean repositoryEnsuringReferentialIntegrity) + boolean repositoryEnsuringReferentialIntegrity, IDGenerationLocation repositoryIDGenerationLocation) { this.sessionID = sessionID; this.userID = userID; @@ -293,6 +296,7 @@ public interface CDOSessionProtocol extends CDOProtocol, PackageLoader, BranchLo this.repositorySupportingBranches = repositorySupportingBranches; this.repositorySupportingEcore = repositorySupportingEcore; this.repositoryEnsuringReferentialIntegrity = repositoryEnsuringReferentialIntegrity; + this.repositoryIDGenerationLocation = repositoryIDGenerationLocation; } public int getSessionID() @@ -387,6 +391,14 @@ public interface CDOSessionProtocol extends CDOProtocol, PackageLoader, BranchLo return repositoryEnsuringReferentialIntegrity; } + /** + * @since 4.1 + */ + public IDGenerationLocation getRepositoryIDGenerationLocation() + { + return repositoryIDGenerationLocation; + } + public RepositoryTimeResult getRepositoryTimeResult() { return repositoryTimeResult; diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOSavepoint.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOSavepoint.java index 04fe7b61f5..7f42eb937d 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOSavepoint.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOSavepoint.java @@ -36,4 +36,9 @@ public interface InternalCDOSavepoint extends CDOSavepoint, InternalCDOUserSavep public Set<CDOID> getSharedDetachedObjects(); public void recalculateSharedDetachedObjects(); + + /** + * @since 4.1 + */ + public boolean isNewObject(CDOID id); } diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOSession.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOSession.java index bc075db5d7..c82f67d8ad 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOSession.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOSession.java @@ -15,6 +15,7 @@ import org.eclipse.emf.cdo.common.branch.CDOBranch; import org.eclipse.emf.cdo.common.branch.CDOBranchPoint; import org.eclipse.emf.cdo.common.commit.CDOCommitInfo; import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.id.CDOIDGenerator; import org.eclipse.emf.cdo.common.lob.CDOLobStore; import org.eclipse.emf.cdo.common.protocol.CDOAuthenticator; import org.eclipse.emf.cdo.common.revision.CDORevision; @@ -120,6 +121,11 @@ public interface InternalCDOSession extends CDOSession, PackageProcessor, Packag public void setExceptionHandler(CDOSession.ExceptionHandler exceptionHandler); /** + * @since 4.1 + */ + public void setIDGenerator(CDOIDGenerator idGenerator); + + /** * @since 3.0 */ public void setFetchRuleManager(CDOFetchRuleManager fetchRuleManager); diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOTransaction.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOTransaction.java index 60db5d4a3f..773970b7e1 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOTransaction.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOTransaction.java @@ -21,6 +21,7 @@ import org.eclipse.emf.cdo.common.revision.CDORevisionProvider; import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta; import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta; import org.eclipse.emf.cdo.eresource.CDOResourceFolder; +import org.eclipse.emf.cdo.internal.common.commit.CDOChangeSetDataImpl; import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision; import org.eclipse.emf.cdo.transaction.CDOCommitContext; import org.eclipse.emf.cdo.transaction.CDOTransaction; @@ -29,6 +30,8 @@ import org.eclipse.net4j.util.collection.Pair; import org.eclipse.emf.spi.cdo.CDOSessionProtocol.CommitTransactionResult; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -73,9 +76,18 @@ public interface InternalCDOTransaction extends CDOTransaction, InternalCDOUserT public void detachObject(InternalCDOObject object); + /** + * @deprecated {@link #createIDForNewObject()} is called since 4.1. + */ + @Deprecated public CDOIDTemp getNextTemporaryID(); /** + * @since 4.1 + */ + public CDOID createIDForNewObject(); + + /** * @since 4.0 */ public void registerAttached(InternalCDOObject object, boolean isNew); @@ -94,12 +106,24 @@ public interface InternalCDOTransaction extends CDOTransaction, InternalCDOUserT * {@link #merge(CDOBranchPoint, org.eclipse.emf.cdo.transaction.CDOMerger) merge} or if the merge was not in * a {@link CDOBranch#isLocal() local} branch. * @since 4.0 + * @deprecated Use {@link #applyChangeSet(CDOChangeSetData, CDORevisionProvider, CDORevisionProvider, CDOBranchPoint)} */ + @Deprecated public Pair<CDOChangeSetData, Pair<Map<CDOID, CDOID>, List<CDOID>>> applyChangeSetData( CDOChangeSetData changeSetData, CDORevisionProvider ancestorProvider, CDORevisionProvider targetProvider, CDOBranchPoint source); /** + * @param source + * May be <code>null</code> if changeSetData does not result from a + * {@link #merge(CDOBranchPoint, org.eclipse.emf.cdo.transaction.CDOMerger) merge} or if the merge was not in + * a {@link CDOBranch#isLocal() local} branch. + * @since 4.1 + */ + public ApplyChangeSetResult applyChangeSet(CDOChangeSetData changeSetData, CDORevisionProvider ancestorProvider, + CDORevisionProvider targetProvider, CDOBranchPoint source); + + /** * @since 4.0 */ public Map<InternalCDOObject, InternalCDORevision> getCleanRevisions(); @@ -122,4 +146,36 @@ public interface InternalCDOTransaction extends CDOTransaction, InternalCDOUserT public void postCommit(CommitTransactionResult result); } + + /** + * @author Eike Stepper + * @since 4.1 + */ + public final class ApplyChangeSetResult + { + private CDOChangeSetData changeSetData = new CDOChangeSetDataImpl(); + + private Map<CDOID, CDOID> idMappings = new HashMap<CDOID, CDOID>(); + + private List<CDOID> adjustedObjects = new ArrayList<CDOID>(); + + public ApplyChangeSetResult() + { + } + + public CDOChangeSetData getChangeSetData() + { + return changeSetData; + } + + public Map<CDOID, CDOID> getIDMappings() + { + return idMappings; + } + + public List<CDOID> getAdjustedObjects() + { + return adjustedObjects; + } + } } diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOView.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOView.java index b445bc9f8f..345a1ae2ce 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOView.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOView.java @@ -118,6 +118,11 @@ public interface InternalCDOView extends CDOView, CDOIDProvider, ILifecycle */ public boolean isObjectLocked(CDOObject object, LockType lockType, boolean byOthers); + /** + * @since 4.1 + */ + public boolean isObjectNew(CDOID id); + public void handleAddAdapter(InternalCDOObject eObject, Adapter adapter); public void handleRemoveAdapter(InternalCDOObject eObject, Adapter adapter); |