public void clearWorkflowData() { for (DataLink dl : workflow.getDataLinks()) dataLinkResolvedDepthMap.remove(dl); for (InputWorkflowPort iwp : workflow.getInputPorts()) { senderDataLinkMap.remove(iwp); portResolvedDepthMap.remove(iwp); } for (Processor p : workflow.getProcessors()) { for (InputProcessorPort ipp : p.getInputPorts()) { portResolvedDepthMap.remove(ipp); receiverDataLinkMap.remove(ipp); } for (OutputProcessorPort opp : p.getOutputPorts()) { portResolvedDepthMap.remove(opp); senderDataLinkMap.remove(opp); } } for (OutputWorkflowPort owp : workflow.getOutputPorts()) { portResolvedDepthMap.remove(owp); receiverDataLinkMap.remove(owp); } } }
@Override public void setParent(Processor parent) { if (this.parent == parent) return; if (this.parent != null && this.parent.getIterationStrategyStack() == this) this.parent.setIterationStrategyStack(null); this.parent = parent; if (parent != null && parent.getIterationStrategyStack() != this) parent.setIterationStrategyStack(this); }
@Override public boolean accept(Visitor visitor) { if (visitor.visitEnter(this)) { List<Iterable<? extends WorkflowBean>> children = new ArrayList<>(); children.add(getInputPorts()); children.add(getOutputPorts()); outer: for (Iterable<? extends WorkflowBean> it : children) for (WorkflowBean bean : it) if (!bean.accept(visitor)) break outer; if (getIterationStrategyStack() != null) getIterationStrategyStack().accept(visitor); } return visitor.visitLeave(this); }
Processor p = new Processor(); scufl2Tools.createProcessorPortsFromActivity(p, a); assertEquals(2, p.getInputPorts().size()); InputProcessorPort pIn1 = p.getInputPorts().getByName("in1"); assertNull(pIn1.getDepth()); InputProcessorPort pIn2 = p.getInputPorts().getByName("in2"); assertEquals(1, pIn2.getDepth().intValue()); assertEquals(3, p.getOutputPorts().size()); OutputProcessorPort pOut1 = p.getOutputPorts().getByName("out1"); assertEquals(null, pOut1.getDepth()); assertEquals(null, pOut1.getGranularDepth()); OutputProcessorPort pOut2 = p.getOutputPorts().getByName("out2"); assertEquals(0, pOut2.getDepth().intValue()); assertEquals(null, pOut2.getGranularDepth()); OutputProcessorPort pOut3 = p.getOutputPorts().getByName("out3"); assertEquals(2, pOut3.getDepth().intValue()); assertEquals(1, pOut3.getGranularDepth().intValue());
case Processor: level = Level.Processor; processor = new Processor(); processor.setName(parseName(scanner)); processor.setParent(workflow); workflow.getProcessors().add(processor); return; Processor proc = workflow.getProcessors().getByName( procPort[0]); senderPort = proc.getOutputPorts().getByName(procPort[1]); } else senderPort = workflow.getInputPorts().getByName(firstLink); Processor proc = workflow.getProcessors().getByName( procPort[0]); receiverPort = proc.getInputPorts().getByName(procPort[1]); } else receiverPort = workflow.getOutputPorts().getByName( if (level == Level.InputPortBindings) { InputProcessorPort processorPort = processorBinding .getBoundProcessor().getInputPorts() .getByName(firstLink); InputActivityPort activityPort = processorBinding .getByName(firstLink); OutputProcessorPort processorPort = processorBinding .getBoundProcessor().getOutputPorts()
public Processor createConstant(Workflow workflow, Profile profile, String name) { Processor processor = new Processor(null, name); workflow.getProcessors().addWithUniqueName(processor); processor.setParent(workflow); OutputProcessorPort valuePort = new OutputProcessorPort(processor, CONSTANT_VALUE_PORT); valuePort.setDepth(0); valuePort.setGranularDepth(0); Activity activity = createActivityFromProcessor(processor, profile); activity.setType(CONSTANT); createConfigurationFor(activity, CONSTANT_CONFIG); return processor; }
@Test public void simpleCrossProduct() throws Exception { assertEquals(1, coloursLisr.getIterationStrategyStack().size()); IterationStrategyTopNode top = coloursLisr.getIterationStrategyStack().get(0); assertTrue(top instanceof CrossProduct); assertEquals(1, top.size()); IterationStrategyNode node = top.get(0); assertTrue(node instanceof PortNode); PortNode portNode = (PortNode) node; assertEquals(0, portNode.getDesiredDepth().intValue()); assertEquals(coloursLisr.getInputPorts().getByName("string"), portNode.getInputProcessorPort()); }
@Override public void setParent(Processor parent) { if (this.parent != null && this.parent != parent) this.parent.getOutputPorts().remove(this); this.parent = parent; if (parent != null) parent.getOutputPorts().add(this); }
@Override public void setParent(Processor parent) { if (this.parent != null && this.parent != parent) this.parent.getInputPorts().remove(this); this.parent = parent; if (parent != null) parent.getInputPorts().add(this); }
@Test public void testCorrectnessOfMissingIterationStrategyStack() { Processor p = new Processor(); p.setIterationStrategyStack(null); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(p, false, rcvl); Set<NullFieldProblem> nullFieldProblems = rcvl.getNullFieldProblems(); assertEquals(Collections.EMPTY_SET, nullFieldProblems); // only done when completeness check }
public Processor makeProcessor2() { wait4me = new Processor(workflow, "wait4me"); // FIXME: Should not need to make default iteration stack makeIterationStrategyStack().setParent(wait4me); return processor; }
@Test public void cloneProcessor() throws Exception { Workflow wf = originalWfBundle.getMainWorkflow(); Processor original = wf.getProcessors().getByName("Hello"); Processor clone = (Processor) original.clone(); assertEquals(clone.getName(), original.getName()); assertNotNull(original.getParent()); assertNull(clone.getParent()); wf.getProcessors().addWithUniqueName(clone); assertTrue(!clone.getName().equals(original.getName())); // Now it is safe to set the parent without loosing original clone.setParent(wf); assertSame(original, wf.getProcessors().getByName("Hello")); assertSame(clone, wf.getProcessors().getByName(clone.getName())); }
@Test public void nullParentNotCopied() throws Exception { Workflow wf = new Workflow(); Processor orphan = new Processor(); orphan.setName("orphan"); // NOTE: NOT calling // orphan.setParent(wf) wf.getProcessors().add(orphan); assertNull(orphan.getParent()); Workflow clone = (Workflow) wf.clone(); assertTrue(clone.getProcessors().isEmpty()); orphan.setParent(wf); Workflow clone2 = (Workflow) wf.clone(); assertEquals(Collections.singleton("orphan"), clone2.getProcessors() .getNames()); }
@Override public void visitProcessor(Processor bean) { if (checkComplete && bean.getIterationStrategyStack() == null) listener.nullField(bean, "iterationStrategyStack"); }
protected Set<Processor> parseProcessors(Processors originalProcessors) throws ReaderException, JAXBException { HashSet<Processor> newProcessors = new HashSet<>(); for (org.apache.taverna.scufl2.xml.t2flow.jaxb.Processor origProc : originalProcessors .getProcessor()) { Processor newProc = new Processor(parserState.get() .getCurrentWorkflow(), origProc.getName()); parserState.get().setCurrentProcessor(newProc); newProc.setInputPorts(parseProcessorInputPorts(newProc, origProc.getInputPorts())); newProc.setOutputPorts(parseProcessorOutputPorts(newProc, origProc.getOutputPorts())); parseDispatchStack(origProc .getDispatchStack()); newProc.setIterationStrategyStack(parseIterationStrategyStack(origProc .getIterationStrategyStack())); parseAnnotations(newProc, origProc.getAnnotations()); newProcessors.add(newProc); int i = 0; for (Activity origActivity : origProc.getActivities().getActivity()) parseActivityBinding(origActivity, i++); } parserState.get().setCurrentProcessor(null); return newProcessors; }
@Test public void setParents() throws Exception { // Deliberately orphan a profile and a processor Profile profile = workflowBundle.getProfiles().getByName("tavernaWorkbench"); profile.setParent(null); workflowBundle.getProfiles().add(profile); processor.setParent(null); workflow.getProcessors().add(processor); assertNull(processor.getParent()); assertNull(profile.getParent()); scufl2Tools.setParents(workflowBundle); assertNotNull(processor.getParent()); assertNotNull(profile.getParent()); }