protected Set<InputWorkflowPort> parseInputPorts( AnnotatedGranularDepthPorts originalPorts) throws ReaderException { Set<InputWorkflowPort> createdPorts = new HashSet<>(); for (AnnotatedGranularDepthPort originalPort : originalPorts.getPort()) { InputWorkflowPort newPort = new InputWorkflowPort(parserState.get() .getCurrentWorkflow(), originalPort.getName()); newPort.setDepth(originalPort.getDepth().intValue()); if (!originalPort.getGranularDepth() .equals(originalPort.getDepth())) { String message = "Specific input port granular depth not " + "supported in scufl2, port " + originalPort.getName() + " has depth " + originalPort.getDepth() + " and granular depth " + originalPort.getGranularDepth(); if (isStrict()) throw new ReaderException(message); logger.warning(message); } parseAnnotations(newPort, originalPort.getAnnotations()); createdPorts.add(newPort); } return createdPorts; }
private void inheritDataLinkDepthsFromWorkflowInputPorts() { Workflow workflow = validatorState.get().getWorkflow(); for (InputWorkflowPort iwp : workflow.getInputPorts()) { Integer iwpDepth = iwp.getDepth(); validatorState.get().getEventListener() .depthResolution(iwp, iwpDepth); validatorState.get().setPortResolvedDepth(iwp, iwpDepth); for (DataLink dl : validatorState.get().getOutgoingDataLinks(iwp)) { validatorState.get().getEventListener() .depthResolution(dl, iwpDepth); validatorState.get().setDataLinkResolvedDepth(dl, iwpDepth); } } }
protected void parseInputWorkflowPort( org.apache.taverna.scufl2.xml.InputWorkflowPort original) { org.apache.taverna.scufl2.api.port.InputWorkflowPort port = new org.apache.taverna.scufl2.api.port.InputWorkflowPort(); port.setName(original.getName()); if (original.getPortDepth() != null) port.setDepth(original.getPortDepth().getValue()); port.setParent(getParserState().getCurrent(Workflow.class)); mapBean(getParserState().getCurrentBase().resolve(original.getAbout()), port); }
@Test public void testCorrectnessOfMergePositionSpecifiedCorrectly() { Workflow w = new Workflow(); DataLink dataLink = new DataLink(); dataLink.setParent(w); InputWorkflowPort iwp = new InputWorkflowPort(); iwp.setParent(w); OutputWorkflowPort owp = new OutputWorkflowPort(); owp.setParent(w); dataLink.setReceivesFrom(iwp); dataLink.setSendsTo(owp); Integer mergePosition = Integer.valueOf(3); dataLink.setMergePosition(mergePosition); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(dataLink, false, rcvl); Set<NegativeValueProblem> negativeValueProblems = rcvl.getNegativeValueProblems(); assertEquals(Collections.EMPTY_SET, negativeValueProblems); }
private void parseWorkflowInput(SourceType st) { Workflow currentWorkflow = parserState.get().getCurrentWorkflow(); InputWorkflowPort iwp = new InputWorkflowPort(currentWorkflow, sanitiseName(st.getName())); parserState.get().addMapping(st, iwp); // Cannot do anything about the depths }
.createInputWorkflowPort(); inP.setInputWorkflowPort(inPort); inPort.setName(ip.getName()); URI portURI = uriTools.relativeUriForBean(ip, ip.getParent()); inPort.setAbout(portURI.toASCIIString()); PortDepth portDepth = makePortDepth(ip.getDepth()); inPort.setPortDepth(portDepth); workflow.getInputWorkflowPort().add(inP);
@Test public void workflowInputPorts() throws Exception { NamedSet<InputWorkflowPort> inputPorts = workflowBundle .getMainWorkflow().getInputPorts(); assertEquals(1, inputPorts.size()); assertEquals("yourName", inputPorts.getByName("yourName").getName()); assertEquals(0, inputPorts.getByName("yourName").getDepth().intValue()); }
/** * Constructs an <code>InputWorkflowPort</code> for the specified * <code>Workflow</code> with the specified name. * <p> * The <code>InputPort</code> is added to the <code>Workflow</code> (if the * <code>Workflow</code> is not <code>null</code>). * * @param parent * the <code>Workflow</code> to add this <code>Port</code> to. * Can be <code>null</code> * @param name * the name of the <code>Port</code>. <strong>Must not</strong> * be <code>null</code> or an empty String. */ public InputWorkflowPort(Workflow parent, String name) { super(name); setParent(parent); }
Collection<Annotation> portAnnotations = wf.getInputPorts().getByName("a").getAnnotations(); assertEquals(2, portAnnotations.size()); for (Annotation ann : portAnnotations) {
dataLink.setParent(w); InputWorkflowPort iwp = new InputWorkflowPort(); iwp.setParent(otherWorkflow);
@Test public void ignoringNull() throws Exception { ports.add(new InputWorkflowPort(null, "p3")); ports.add(new InputWorkflowPort(null, "p1")); ports.add(new InputWorkflowPort(wf, "p2")); Collections.sort(ports); assertNamesEqual(ports, "p1", "p2", "p3"); }
/** * Set the <code>InputWorkflowPort</code>s to be the contents of the * specified set. * <p> * <code>InputWorkflowPort</code>s can be added by using * {@link #getInputWorkflowPorts()}.add(inputPort). * * @param inputPorts * the <code>InputWorkflowPort</code>s. <strong>Must not</strong> * be null */ public void setInputPorts(Set<InputWorkflowPort> inputPorts) { this.inputPorts.clear(); for (InputWorkflowPort inputPort : inputPorts) inputPort.setParent(this); }
dataLink.setParent(w); InputWorkflowPort iwp = new InputWorkflowPort(); iwp.setParent(w);
@Test public void testDataLinkInheritanceFromInputWorkflowPorts() { WorkflowBundle wb = new WorkflowBundle(); Workflow w = new Workflow(); wb.setMainWorkflow(w); InputWorkflowPort a = new InputWorkflowPort(w, "a"); a.setDepth(0); InputWorkflowPort b = new InputWorkflowPort(w, "b"); b.setDepth(7); OutputWorkflowPort outA = new OutputWorkflowPort(w, "outA"); OutputWorkflowPort outB = new OutputWorkflowPort(w, "outB"); DataLink aLink = new DataLink(w, a, outA); DataLink bLink = new DataLink(w, b, outB); StructuralValidator sv = new StructuralValidator(); ReportStructuralValidationListener l = new ReportStructuralValidationListener(); sv.checkStructure(wb, l); ValidatorState vs = sv.getValidatorState(); assertEquals(0, l.getIncompleteWorkflows().size()); assertEquals(Integer.valueOf(0), vs.getDataLinkResolvedDepth(aLink)); assertEquals(Integer.valueOf(7), vs.getDataLinkResolvedDepth(bLink)); assertEquals(Integer.valueOf(0), vs.getPortResolvedDepth(outA)); assertEquals(Integer.valueOf(7), vs.getPortResolvedDepth(outB)); }
@Test public void orderedByName() throws Exception { ports.add(new InputWorkflowPort(wf, "p3")); ports.add(new InputWorkflowPort(wf, "p1")); ports.add(new InputWorkflowPort(wf, "p2")); Collections.sort(ports); assertNamesEqual(ports, "p1", "p2", "p3"); }
dataLink.setParent(w); InputWorkflowPort iwp = new InputWorkflowPort(); iwp.setParent(w);
@Test public void testMergingToOutputWorkflowPort() { WorkflowBundle wb = new WorkflowBundle(); Workflow w = new Workflow(); wb.setMainWorkflow(w); InputWorkflowPort a = new InputWorkflowPort(w, "a"); a.setDepth(0); InputWorkflowPort b = new InputWorkflowPort(w, "b"); b.setDepth(7); OutputWorkflowPort outA = new OutputWorkflowPort(w, "outA"); OutputWorkflowPort outB = new OutputWorkflowPort(w, "outB"); DataLink aLink = new DataLink(w, a, outA); aLink.setMergePosition(0); DataLink bLink = new DataLink(w, b, outA); bLink.setMergePosition(1); DataLink aLink2 = new DataLink(w, a, outB); aLink2.setMergePosition(1); DataLink bLink2 = new DataLink(w, b, outB); bLink2.setMergePosition(0); StructuralValidator sv = new StructuralValidator(); ReportStructuralValidationListener l = new ReportStructuralValidationListener(); sv.checkStructure(wb, l); ValidatorState vs = sv.getValidatorState(); assertEquals(0, l.getIncompleteWorkflows().size()); assertEquals(Integer.valueOf(0), vs.getDataLinkResolvedDepth(aLink)); assertEquals(Integer.valueOf(7), vs.getDataLinkResolvedDepth(bLink)); assertEquals(Integer.valueOf(1), vs.getPortResolvedDepth(outA)); assertEquals(Integer.valueOf(8), vs.getPortResolvedDepth(outB)); }
@Test public void orderedByClassName() throws Exception { ports.add(new InputWorkflowPort(wf, "p3")); ports.add(new OutputWorkflowPort(wf, "p1")); ports.add(new InputWorkflowPort(wf, "p2")); Collections.sort(ports); assertNamesEqual(ports, "p2", "p3", "p1"); }
@Test public void testInScopePorts() { Workflow w = new Workflow(); DataLink dataLink = new DataLink(); dataLink.setParent(w); InputWorkflowPort iwp = new InputWorkflowPort(); iwp.setParent(w); OutputWorkflowPort owp = new OutputWorkflowPort(); owp.setParent(w); dataLink.setReceivesFrom(iwp); dataLink.setSendsTo(owp); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(dataLink, true, rcvl); Set<OutOfScopeValueProblem> outOfScopeValueProblems = rcvl.getOutOfScopeValueProblems(); assertEquals(Collections.EMPTY_SET, outOfScopeValueProblems); }
public Workflow makeMainWorkflow() { workflow = new Workflow(); workflow.setName("HelloWorld"); // NOTE: setWorkflowIdentifier should only be called when loading a // workflow // which already has an ID workflow.setIdentifier(URI .create("http://ns.taverna.org.uk/2010/workflow/00626652-55ae-4a9e-80d4-c8e9ac84e2ca/")); InputWorkflowPort yourName = new InputWorkflowPort(workflow, "yourName"); yourName.setDepth(0); OutputWorkflowPort results = new OutputWorkflowPort(workflow, "results"); // Not needed: // workflow.getInputPorts().add(yourName); // workflow.getOutputPorts().add(results); workflow.getProcessors().add(makeProcessor()); workflow.getProcessors().add(makeProcessor2()); // Make links DataLink directLink = new DataLink(workflow, yourName, results); directLink.setMergePosition(1); DataLink greetingLink = new DataLink(workflow, processorGreeting, results); greetingLink.setMergePosition(0); nameLink = new DataLink(workflow, yourName, processorName); condition = new BlockingControlLink(processor, wait4me); return workflow; }