@Override public boolean equals(Object obj) { if (!(obj instanceof Revision)) return false; Revision other = (Revision) obj; if (getIdentifier() == null) return obj == this; return getIdentifier().equals(other.getIdentifier()); }
@Override public int hashCode() { if (getIdentifier() == null) return 0x01234567; return 0x01234567 ^ getIdentifier().hashCode(); }
@Override public String toString() { return getClass().getSimpleName() + " " + getIdentifier(); }
/** * Returns the identifier. * <p> * The the default identifier is based on #getIdentifierRoot() plus a random * UUID. * * @see {@link #setIdentifier(URI)} * @return the identifier */ @Override public URI getIdentifier() { if (getCurrentRevision() == null) return null; return getCurrentRevision().getIdentifier(); }
return revision.getIdentifier();
@Override protected void cloneInto(WorkflowBean clone, Cloning cloning) { Revision cloneRevision = (Revision) clone; cloneRevision.setAdditionOf(new LinkedHashSet<URI>(getAdditionOf())); cloneRevision.setChangeSpecificationType(getChangeSpecificationType()); if (getGeneratedAtTime() != null) cloneRevision.setGeneratedAtTime((Calendar) getGeneratedAtTime() .clone()); for (Revision source : getHadOriginalSources()) cloneRevision.getHadOriginalSources().add( cloning.cloneIfNotInCache(source)); cloneRevision.setIdentifier(getIdentifier()); cloneRevision.setModificationsOf(new LinkedHashSet<URI>( getModificationsOf())); cloneRevision.setPreviousRevision(cloning .cloneIfNotInCache(getPreviousRevision())); cloneRevision.setRemovalOf(new LinkedHashSet<URI>(getRemovalOf())); cloneRevision.setWasAttributedTo(new LinkedHashSet<URI>( getWasAttributedTo())); }
@Ignore @Test public void resolveRevisions() { Revision r1 = wfBundle.newRevision(); Revision r2 = wfBundle.newRevision(); Revision r3 = wfBundle.newRevision(); assertEquals(wfBundle, uriTools.resolveUri(r3.getIdentifier(), wfBundle)); assertEquals(r2, uriTools.resolveUri(r2.getIdentifier(), wfBundle)); assertEquals(r1, uriTools.resolveUri(r1.getIdentifier(), wfBundle)); }
@Test public void workflowWithoutRevisions() throws Exception { URL wfResource = getClass().getResource(WF_RANDOM); assertNotNull("Could not find workflow " + WF_RANDOM, wfResource); T2FlowParser parser = new T2FlowParser(); parser.setValidating(true); parser.setStrict(true); WorkflowBundle wfBundle = parser.parseT2Flow(wfResource.openStream()); List<String> expectedRevisions = Arrays.asList( "e87de19a-02c7-4106-ae81-0b8e28efb22c"); List<String> foundRevisions = new ArrayList<String>(); Revision revision = wfBundle.getMainWorkflow().getCurrentRevision(); while (revision != null) { URI revisionUri = revision.getIdentifier(); String revisionUUID = uriTools .relativePath(Workflow.WORKFLOW_ROOT, revisionUri) .toASCIIString().replace("/", ""); foundRevisions.add(revisionUUID); revision = revision.getPreviousRevision(); } assertEquals(expectedRevisions, foundRevisions); }
@Test public void revisionURIs() { Revision r1 = wfBundle.newRevision(); assertEquals(r1.getIdentifier(), uriTools.uriForBean(r1)); // assertEquals(r1, uriTools.resolveUri(r3.getIdentifier(), wfBundle)); }
@Test public void readSimpleWorkflow() throws Exception { URL wfResource = getClass().getResource(WF_ANNOTATED); assertNotNull("Could not find workflow " + WF_ANNOTATED, wfResource); T2FlowParser parser = new T2FlowParser(); parser.setValidating(true); parser.setStrict(true); WorkflowBundle wfBundle = parser.parseT2Flow(wfResource.openStream()); List<String> expectedRevisions = Arrays.asList( "9e1f7ffd-3bf9-4ba8-9c63-03b79b1858ad", "bb902d82-b0e4-46fc-bed5-950a3b38bb98"); List<String> foundRevisions = new ArrayList<String>(); Revision revision = wfBundle.getMainWorkflow().getCurrentRevision(); while (revision != null) { URI revisionUri = revision.getIdentifier(); String revisionUUID = uriTools .relativePath(Workflow.WORKFLOW_ROOT, revisionUri) .toASCIIString().replace("/", ""); foundRevisions.add(revisionUUID); revision = revision.getPreviousRevision(); } assertEquals(expectedRevisions, foundRevisions); }
assertEquals("http://example.com/test/v3", r3.getIdentifier().toASCIIString()); assertEquals("http://example.org/originalSource1", originals.get(0).getIdentifier().toASCIIString()); assertEquals("http://example.com/test/originalSource2", originals.get(1).getIdentifier().toASCIIString()); assertEquals("http://example.com/test/v2", r2.getIdentifier().toASCIIString()); assertEquals("http://example.net/v1", r1.getIdentifier().toASCIIString()); Revision r0 = r1.getPreviousRevision(); assertEquals("http://example.net/v0", r0.getIdentifier().toASCIIString()); assertEquals(null, r0.getPreviousRevision());
"Inconsistent previous revision: " + revision.getPreviousRevision() .getIdentifier() + " or " + r.getIdentifier()); revision.setPreviousRevision(r);