private CDORevision applyDelta(CDORevisionDelta revisionDelta) { CDOID id = revisionDelta.getID(); CDORevision changedObject = delegate.getRevision(id).copy(); revisionDelta.apply(changedObject); cachedRevisions.put(id, changedObject); return changedObject; } }
private void mergeChangedObject(CDORevisionKey key, Map<CDOID, CDOIDAndVersion> newMap, Map<CDOID, CDORevisionKey> changedMap) { CDOID id = key.getID(); if (key instanceof CDORevisionDelta) { CDORevisionDelta delta = (CDORevisionDelta)key; // Try to add the delta to existing new revision CDOIDAndVersion oldRevision = newMap.get(id); if (oldRevision instanceof CDORevision) { CDORevision newRevision = (CDORevision)oldRevision; delta.apply(newRevision); return; } // Try to add the delta to existing delta CDORevisionKey oldDelta = changedMap.get(id); if (oldDelta instanceof CDORevisionDelta) { InternalCDORevisionDelta newDelta = (InternalCDORevisionDelta)oldDelta; for (CDOFeatureDelta featureDelta : delta.getFeatureDeltas()) { newDelta.addFeatureDelta(featureDelta); } return; } } // Fall back changedMap.put(id, key); }
InternalCDORevision newCleanRevision = cleanRevision.copy(); newCleanRevision.setVersion(newVersion); remoteDelta.apply(newCleanRevision);
private Pair<InternalCDORevision, InternalCDORevision> createNewRevision(CDORevisionKey potentialDelta, CDOCommitInfo commitInfo) { if (potentialDelta instanceof CDORevisionDelta) { CDORevisionDelta delta = (CDORevisionDelta)potentialDelta; CDOID id = delta.getID(); InternalCDORevisionManager revisionManager = getRevisionManager(); InternalCDORevision oldRevision = revisionManager.getRevisionByVersion(id, potentialDelta, CDORevision.UNCHUNKED, false); if (oldRevision != null) { InternalCDORevision newRevision = oldRevision.copy(); newRevision.adjustForCommit(commitInfo.getBranch(), commitInfo.getTimeStamp()); CDORevisable target = delta.getTarget(); if (target != null) { newRevision.setVersion(target.getVersion()); } delta.apply(newRevision); newRevision.freeze(); return new Pair<InternalCDORevision, InternalCDORevision>(oldRevision, newRevision); } } return null; }
if (delta != null) delta.apply(cleanRevision);
if (delta != null) delta.apply(cleanRevision);
revisionDelta.apply(newRevision); newRevision.freeze();
delta.apply(newRevision); newRevision.setBranchPoint(target); cache.addRevision(newRevision);