diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/ReplicatorCommitContext.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/ReplicatorCommitContext.java | 342 |
1 files changed, 171 insertions, 171 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/ReplicatorCommitContext.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/ReplicatorCommitContext.java index 1e8e6db72f..e43a7a493b 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/ReplicatorCommitContext.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/ReplicatorCommitContext.java @@ -1,171 +1,171 @@ -/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.server.syncing;
-
-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.model.CDOPackageUnit;
-import org.eclipse.emf.cdo.common.revision.CDOIDAndVersion;
-import org.eclipse.emf.cdo.common.revision.CDORevisionKey;
-import org.eclipse.emf.cdo.internal.server.TransactionCommitContext;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
-import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
-import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta;
-import org.eclipse.emf.cdo.spi.server.InternalRepository;
-import org.eclipse.emf.cdo.spi.server.InternalTransaction;
-
-import org.eclipse.net4j.util.om.monitor.OMMonitor;
-
-import java.util.List;
-
-/**
- * TODO Optimize createCommitInfo()
- *
- * @author Eike Stepper
- */
-public final class ReplicatorCommitContext extends TransactionCommitContext
-{
- private final CDOCommitInfo commitInfo;
-
- public ReplicatorCommitContext(InternalTransaction transaction, CDOCommitInfo commitInfo)
- {
- super(transaction);
- this.commitInfo = commitInfo;
-
- setCommitComment(commitInfo.getComment());
-
- InternalCDOPackageUnit[] newPackageUnits = getNewPackageUnits(commitInfo, getPackageRegistry());
- setNewPackageUnits(newPackageUnits);
-
- InternalCDORevision[] newObjects = getNewObjects(commitInfo);
- setNewObjects(newObjects);
-
- InternalCDORevisionDelta[] dirtyObjectDeltas = getDirtyObjectDeltas(commitInfo);
- setDirtyObjectDeltas(dirtyObjectDeltas);
-
- CDOID[] detachedObjects = getDetachedObjects(commitInfo);
- setDetachedObjects(detachedObjects);
- }
-
- @Override
- public String getUserID()
- {
- return commitInfo.getUserID();
- }
-
- @Override
- protected long[] createTimeStamp(OMMonitor monitor)
- {
- InternalRepository repository = getTransaction().getSession().getManager().getRepository();
-
- long commitTimeStamp = commitInfo.getTimeStamp();
- if (commitTimeStamp == CDOBranchPoint.UNSPECIFIED_DATE)
- {
- commitTimeStamp = repository.getTimeStamp();
- }
-
- return repository.forceCommitTimeStamp(commitInfo.getTimeStamp(), monitor);
- }
-
- @Override
- protected void adjustForCommit()
- {
- // Do nothing
- }
-
- @Override
- public void applyIDMappings(OMMonitor monitor)
- {
- monitor.begin();
-
- try
- {
- notifyBeforeCommitting(monitor);
- }
- finally
- {
- monitor.done();
- }
- }
-
- @Override
- protected void lockObjects() throws InterruptedException
- {
- // Do nothing
- }
-
- @Override
- protected void checkXRefs()
- {
- // Do nothing
- }
-
- private static InternalCDOPackageUnit[] getNewPackageUnits(CDOCommitInfo commitInfo,
- InternalCDOPackageRegistry packageRegistry)
- {
- List<CDOPackageUnit> list = commitInfo.getNewPackageUnits();
- InternalCDOPackageUnit[] result = new InternalCDOPackageUnit[list.size()];
-
- int i = 0;
- for (CDOPackageUnit packageUnit : list)
- {
- result[i] = (InternalCDOPackageUnit)packageUnit;
- packageRegistry.putPackageUnit(result[i]);
- ++i;
- }
-
- return result;
- }
-
- private static InternalCDORevision[] getNewObjects(CDOCommitInfo commitInfo)
- {
- List<CDOIDAndVersion> list = commitInfo.getNewObjects();
- InternalCDORevision[] result = new InternalCDORevision[list.size()];
-
- int i = 0;
- for (CDOIDAndVersion revision : list)
- {
- result[i++] = (InternalCDORevision)revision;
- }
-
- return result;
- }
-
- private static InternalCDORevisionDelta[] getDirtyObjectDeltas(CDOCommitInfo commitInfo)
- {
- List<CDORevisionKey> list = commitInfo.getChangedObjects();
- InternalCDORevisionDelta[] result = new InternalCDORevisionDelta[list.size()];
-
- int i = 0;
- for (CDORevisionKey delta : list)
- {
- result[i++] = (InternalCDORevisionDelta)delta;
- }
-
- return result;
- }
-
- private static CDOID[] getDetachedObjects(CDOCommitInfo commitInfo)
- {
- List<CDOIDAndVersion> list = commitInfo.getDetachedObjects();
- CDOID[] result = new CDOID[list.size()];
-
- int i = 0;
- for (CDOIDAndVersion key : list)
- {
- result[i++] = key.getID();
- }
-
- return result;
- }
-}
+/* + * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.internal.server.syncing; + +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.model.CDOPackageUnit; +import org.eclipse.emf.cdo.common.revision.CDOIDAndVersion; +import org.eclipse.emf.cdo.common.revision.CDORevisionKey; +import org.eclipse.emf.cdo.internal.server.TransactionCommitContext; +import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry; +import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit; +import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision; +import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta; +import org.eclipse.emf.cdo.spi.server.InternalRepository; +import org.eclipse.emf.cdo.spi.server.InternalTransaction; + +import org.eclipse.net4j.util.om.monitor.OMMonitor; + +import java.util.List; + +/** + * TODO Optimize createCommitInfo() + * + * @author Eike Stepper + */ +public final class ReplicatorCommitContext extends TransactionCommitContext +{ + private final CDOCommitInfo commitInfo; + + public ReplicatorCommitContext(InternalTransaction transaction, CDOCommitInfo commitInfo) + { + super(transaction); + this.commitInfo = commitInfo; + + setCommitComment(commitInfo.getComment()); + + InternalCDOPackageUnit[] newPackageUnits = getNewPackageUnits(commitInfo, getPackageRegistry()); + setNewPackageUnits(newPackageUnits); + + InternalCDORevision[] newObjects = getNewObjects(commitInfo); + setNewObjects(newObjects); + + InternalCDORevisionDelta[] dirtyObjectDeltas = getDirtyObjectDeltas(commitInfo); + setDirtyObjectDeltas(dirtyObjectDeltas); + + CDOID[] detachedObjects = getDetachedObjects(commitInfo); + setDetachedObjects(detachedObjects); + } + + @Override + public String getUserID() + { + return commitInfo.getUserID(); + } + + @Override + protected long[] createTimeStamp(OMMonitor monitor) + { + InternalRepository repository = getTransaction().getSession().getManager().getRepository(); + + long commitTimeStamp = commitInfo.getTimeStamp(); + if (commitTimeStamp == CDOBranchPoint.UNSPECIFIED_DATE) + { + commitTimeStamp = repository.getTimeStamp(); + } + + return repository.forceCommitTimeStamp(commitInfo.getTimeStamp(), monitor); + } + + @Override + protected void adjustForCommit() + { + // Do nothing + } + + @Override + public void applyIDMappings(OMMonitor monitor) + { + monitor.begin(); + + try + { + notifyBeforeCommitting(monitor); + } + finally + { + monitor.done(); + } + } + + @Override + protected void lockObjects() throws InterruptedException + { + // Do nothing + } + + @Override + protected void checkXRefs() + { + // Do nothing + } + + private static InternalCDOPackageUnit[] getNewPackageUnits(CDOCommitInfo commitInfo, + InternalCDOPackageRegistry packageRegistry) + { + List<CDOPackageUnit> list = commitInfo.getNewPackageUnits(); + InternalCDOPackageUnit[] result = new InternalCDOPackageUnit[list.size()]; + + int i = 0; + for (CDOPackageUnit packageUnit : list) + { + result[i] = (InternalCDOPackageUnit)packageUnit; + packageRegistry.putPackageUnit(result[i]); + ++i; + } + + return result; + } + + private static InternalCDORevision[] getNewObjects(CDOCommitInfo commitInfo) + { + List<CDOIDAndVersion> list = commitInfo.getNewObjects(); + InternalCDORevision[] result = new InternalCDORevision[list.size()]; + + int i = 0; + for (CDOIDAndVersion revision : list) + { + result[i++] = (InternalCDORevision)revision; + } + + return result; + } + + private static InternalCDORevisionDelta[] getDirtyObjectDeltas(CDOCommitInfo commitInfo) + { + List<CDORevisionKey> list = commitInfo.getChangedObjects(); + InternalCDORevisionDelta[] result = new InternalCDORevisionDelta[list.size()]; + + int i = 0; + for (CDORevisionKey delta : list) + { + result[i++] = (InternalCDORevisionDelta)delta; + } + + return result; + } + + private static CDOID[] getDetachedObjects(CDOCommitInfo commitInfo) + { + List<CDOIDAndVersion> list = commitInfo.getDetachedObjects(); + CDOID[] result = new CDOID[list.size()]; + + int i = 0; + for (CDOIDAndVersion key : list) + { + result[i++] = key.getID(); + } + + return result; + } +} |