diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction')
-rw-r--r-- | plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java index 901728748d..a323935063 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java @@ -285,6 +285,31 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa conflict -= resolved; } + @Override + public void getCDOIDAndVersion(Map<CDOID, CDOIDAndVersion> uniqueObjects, Collection<? extends CDOObject> cdoObjects) + { + Map<CDOID, CDORevisionDelta> deltaMap = getRevisionDeltas(); + + for (CDOObject cdoObject : cdoObjects) + { + CDORevision cdoRevision = CDOStateMachine.INSTANCE.readNoLoad((InternalCDOObject)cdoObject); + CDOID cdoId = cdoObject.cdoID(); + if (cdoRevision != null && !cdoId.isTemporary() && !uniqueObjects.containsKey(cdoId)) + { + int version = cdoRevision.getVersion(); + if (deltaMap != null) + { + CDORevisionDelta delta = deltaMap.get(cdoId); + if (delta != null) + { + version = delta.getOriginVersion(); + } + } + uniqueObjects.put(cdoId, CDOIDUtil.createIDAndVersion(cdoId, version)); + } + } + } + /** * @since 2.0 */ |