public static RevisionInfo read(CDODataInput in, CDOBranchPoint requestedBranchPoint) throws IOException { byte ordinal = in.readByte(); Type type = Type.values()[ordinal]; switch (type) { case AVAILABLE_NORMAL: return new Available.Normal(in, requestedBranchPoint); case AVAILABLE_POINTER: return new Available.Pointer(in, requestedBranchPoint); case AVAILABLE_DETACHED: return new Available.Detached(in, requestedBranchPoint); case MISSING: return new Missing(in, requestedBranchPoint); default: throw new IOException("Invalid revision info type: " + type); } }
checkArg(availableInfo.isDirect() == false, "Load is not needed"); break;
private RevisionInfo.Available createRevisionInfoAvailable(InternalCDORevision revision, CDOBranchPoint requestedBranchPoint) { if (revision instanceof PointerCDORevision) { PointerCDORevision pointer = (PointerCDORevision)revision; CDOBranchVersion target = pointer.getTarget(); InternalCDORevision targetRevision = target == null ? null : getCachedRevisionByVersion(pointer.getID(), target); if (targetRevision != null) { target = targetRevision; } return new RevisionInfo.Available.Pointer(pointer.getID(), requestedBranchPoint, pointer, target); } if (revision instanceof DetachedCDORevision) { DetachedCDORevision detached = (DetachedCDORevision)revision; return new RevisionInfo.Available.Detached(detached.getID(), requestedBranchPoint, detached); } return new RevisionInfo.Available.Normal(revision.getID(), requestedBranchPoint, revision); }
@Override public InternalCDORevision getResult() { if (isDirect()) { CDOBranchVersion branchVersion = getAvailableBranchVersion(); if (branchVersion instanceof InternalCDORevision) { return (InternalCDORevision)branchVersion; } } return super.getResult(); }
@Override public void processResult(InternalCDORevisionManager revisionManager, List<CDORevision> results, SyntheticCDORevision[] synthetics, int i) { if (!isLoadNeeded()) { setResult((InternalCDORevision)getAvailableBranchVersion()); } super.processResult(revisionManager, results, synthetics, i); } }