public CacheStrongReference(InternalCDORevision revision) { super(revision); id = revision.getID(); branch = revision.getBranch(); version = revision.getVersion(); }
@Override public final EClass eClass() { return revision.getEClass(); }
public ListDeltaVisitor(IDBStoreAccessor accessor, InternalCDORevision originalRevision, int oldVersion, int newVersion, long timestamp) { this.accessor = accessor; this.originalRevision = originalRevision; id = this.originalRevision.getID(); this.oldVersion = oldVersion; this.newVersion = newVersion; lastIndex = originalRevision.getList(getFeature()).size() - 1; this.timestamp = timestamp; }
private void applyIDMappings(InternalCDORevision revision, Map<CDOID, CDOID> idMappings, CDOReferenceAdjuster idMapper) { if (revision != null) { CDOID newID = idMappings.get(revision.getID()); if (newID != null) { revision.setID(newID); } revision.adjustReferences(idMapper); } }
public void internalReattach(InternalCDOObject object, InternalCDOTransaction transaction) InternalCDORevision cleanRevision = transaction.getCleanRevisions().get(object).copy(); CDOID id = cleanRevision.getID(); revision.setID(id); revision.setBranchPoint(cleanRevision.getBranch().getHead()); revision.setVersion(cleanRevision.getVersion()); CDORevisionDelta revisionDelta = revision.compare(cleanRevision); if (revisionDelta.isEmpty())
public InternalCDORevision readRevision(CDOID id, CDOBranchPoint branchPoint, int listChunk, CDORevisionCacheAdder cache) { if (TRACER.isEnabled()) { TRACER.format("Selecting revision {0} from {1}", id, branchPoint); //$NON-NLS-1$ } IMappingStrategy mappingStrategy = getStore().getMappingStrategy(); EClass eClass = getObjectType(id); if (eClass != null) { InternalCDORevision revision = getStore().createRevision(eClass, id); revision.setBranchPoint(branchPoint); // This is part of the search criterion, being replaced later IClassMapping mapping = mappingStrategy.getClassMapping(eClass); if (mapping.readRevision(this, revision, listChunk)) { int version = revision.getVersion(); if (version < CDOBranchVersion.UNSPECIFIED_VERSION) { return new DetachedCDORevision(eClass, id, revision.getBranch(), -version, revision.getTimeStamp(), revision.getRevised()); } return revision; } } // Reading failed - revision does not exist. return null; }
if (revision.getBranch().isLocal()) CDOID oldID = revision.getID(); CDOID newID = createIDForNewObject(null); idMappings.put(oldID, newID); revision.setID(newID); revision.setVersion(0); revision.adjustReferences(idMapper);
CDOID id = revision.getID(); if (getObjectIfExists(id) == null) revision.adjustReferences(CDOObjectToCDOIDAdjuster.INSTANCE); InternalCDOObject object = newInstance(revision.getEClass()); object.cdoInternalSetView(this); final InternalCDORevision copyRevision = revision.copy(); copyRevision.setID(tempId); copyRevision.setVersion(0);
private InternalCDORevision unmarshallRevision(DBObject doc, DBObject embedded, CDOID id, CDOBranchPoint branchPoint) { int classID = (Integer)embedded.get(REVISIONS_CLASS); EClass eClass = store.getClasses().getClass(classID); CDOBranch branch = branchPoint.getBranch(); int version = (Integer)embedded.get(REVISIONS_VERSION); long revised = getRevised(id, branch, Math.abs(version), doc, embedded); if (version < CDOBranchVersion.FIRST_VERSION) { long timeStamp = branchPoint.getTimeStamp(); return new DetachedCDORevision(eClass, id, branch, -version, timeStamp, revised); } CDOID resourceID = idHandler.read(embedded, REVISIONS_RESOURCE); CDOID containerID = idHandler.read(embedded, REVISIONS_CONTAINER); int featureID = (Integer)embedded.get(REVISIONS_FEATURE); InternalCDORevision result = store.createRevision(eClass, id); result.setBranchPoint(branchPoint); result.setRevised(revised); result.setVersion(version); result.setResourceID(resourceID); result.setContainerID(containerID); result.setContainingFeatureID(featureID); unmarshallRevision(embedded, result); return result; }
private void applyNewObjects(List<CDOIDAndVersion> newObjects, List<CDOIDAndVersion> result) { for (CDOIDAndVersion key : newObjects) { InternalCDORevision revision = (InternalCDORevision)key; CDOID id = revision.getID(); if (getObjectIfExists(id) == null) { revision = revision.copy(); revision.setBranchPoint(getBranchPoint()); revision.setVersion(0); InternalCDOObject object = newInstance(revision.getEClass()); object.cdoInternalSetView(this); object.cdoInternalSetRevision(revision); object.cdoInternalSetState(CDOState.NEW); object.cdoInternalPostLoad(); registerObject(object); registerAttached(object, true); result.add(revision); dirty = true; } } }
.createRevision(EresourcePackage.Literals.CDO_RESOURCE); rootResource.setBranchPoint(head); rootResource.setContainerID(CDOID.NULL); rootResource.setContainingFeatureID(0); rootResource.setID(id); rootResource.setResourceID(id);
/** * @since 4.0 */ public void resolveAllElementProxies(CDORevision revision) { InternalCDORevision internalRevision = (InternalCDORevision)revision; if (!internalRevision.isUnchunked()) { CDOCollectionLoadingPolicy policy = options().getCollectionLoadingPolicy(); for (EReference reference : internalRevision.getClassInfo().getAllPersistentReferences()) { if (reference.isMany()) { CDOList list = internalRevision.getList(reference); for (Iterator<Object> it = list.iterator(); it.hasNext();) { Object element = it.next(); if (element instanceof CDOElementProxy) { policy.resolveAllProxies(internalRevision, reference); break; } } } } internalRevision.setUnchunked(); } }
private void collectLobs(InternalCDORevision revision, Map<ByteArrayWrapper, CDOLob<?>> lobs) { EStructuralFeature[] features = revision.getClassInfo().getAllPersistentFeatures(); for (int i = 0; i < features.length; i++) { EStructuralFeature feature = features[i]; if (CDOModelUtil.isLob(feature.getEType())) { CDOLob<?> lob = (CDOLob<?>)revision.getValue(feature); if (lob != null) { lobs.put(new ByteArrayWrapper(lob.getID()), lob); } } } }
/** * @since 4.0 */ protected void revisionToInstanceContainer() { CDOPermission permission = revision.getPermission(); if (permission != CDOPermission.WRITE) { revision.setPermission(CDOPermission.WRITE); } try { Object containerID = revision.getContainerID(); InternalEObject container = getEObjectFromPotentialID(view, null, containerID); EObject oldContainer = instance.eContainer(); if (oldContainer != container) { setInstanceContainer(container, revision.getContainingFeatureID()); } } finally { if (permission != CDOPermission.WRITE) { revision.setPermission(permission); } } }
public void process(IDBStoreAccessor accessor, InternalCDORevisionDelta delta, long created) { this.accessor = accessor; this.created = created; id = delta.getID(); branchId = delta.getBranch().getID(); oldVersion = delta.getVersion(); if (TRACER.isEnabled()) { TRACER.format("FeatureDeltaWriter: old version: {0}, new version: {1}", oldVersion, oldVersion + 1); //$NON-NLS-1$ } InternalCDORevision originalRevision = (InternalCDORevision)accessor.getStore().getRepository() .getRevisionManager().getRevisionByVersion(id, delta, 0, true); newRevision = originalRevision.copy(); newRevision.setVersion(oldVersion + 1); newRevision.setBranchPoint(delta.getBranch().getPoint(created)); // process revision delta tree delta.accept(this); long revised = newRevision.getTimeStamp() - 1; reviseOldRevision(accessor, id, delta.getBranch(), revised); writeValues(accessor, newRevision); }
private void readChangeSet(CDOChangeSetSegment segment, List<InternalCDORevision> list, Set<CDOID> ids) { long startTime = segment.getTimeStamp(); long endTime = segment.getEndTime(); boolean listCheckDone = false; for (InternalCDORevision revision : list) { CDOID id = revision.getID(); if (!listCheckDone) { if (ids.contains(id)) { return; } if (revision.getBranch() != segment.getBranch()) { return; } listCheckDone = true; } if (CDOCommonUtil.isValidTimeStamp(revision.getTimeStamp(), startTime, endTime)) { ids.add(id); } } }
private void applyNewObjects(List<CDOIDAndVersion> newObjects, List<CDOIDAndVersion> result) { for (CDOIDAndVersion key : newObjects) { InternalCDORevision revision = (InternalCDORevision)key; CDOID id = revision.getID(); if (getObjectIfExists(id) == null) { // XXX (apeteri): replace actual instances with temp CDOIDs revision.adjustReferences(CDOObjectToCDOIDAdjuster.INSTANCE); InternalCDOObject object = newInstance(revision.getEClass()); object.cdoInternalSetView(this); object.cdoInternalSetRevision(revision); object.cdoInternalSetID(id); object.cdoInternalSetState(CDOState.NEW); object.cdoInternalPostLoad(); registerObject(object); registerAttached(object, true); result.add(revision); dirty = true; } } }
/** * @deprecated Not used. */ @Deprecated protected void ensureChunks(InternalCDORevision revision, int referenceChunk, IStoreAccessor accessor) { for (EStructuralFeature feature : revision.getClassInfo().getAllPersistentFeatures()) { if (feature.isMany()) { MoveableList<Object> list = revision.getList(feature); int chunkEnd = Math.min(referenceChunk, list.size()); accessor = ensureChunk(revision, feature, accessor, list, 0, chunkEnd); } } }
private InternalCDOObject newInstance(InternalCDORevision revision) { InternalCDOObject object = newInstance(revision.getEClass()); object.cdoInternalSetID(revision.getID()); object.cdoInternalSetRevision(revision); object.cdoInternalSetState(CDOState.NEW); object.cdoInternalSetView(this); return object; }
EClass eClass = localRevision.getEClass(); for (int v = baseRevision.getVersion(); v < localRevision.getVersion(); v++) if (localRevision.getVersion() != remoteRevision.getVersion()) accessor.rawDelete(id, localRevision.getVersion(), localBranch, eClass, new Monitor()); localRevision.setVersion(remoteRevision.getVersion()); adjustRevisionBranch(localRevision); accessor.rawStore(localRevision, new Monitor());