@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); }
@Override public void visitIterationStrategyStack(IterationStrategyStack bean) { Processor parent = bean.getParent(); if (parent != null && checkComplete) { Set<Port> mentionedPorts = new HashSet<>(); for (IterationStrategyTopNode node : bean) mentionedPorts.addAll(getReferencedPorts(node)); NamedSet<InputProcessorPort> inputPorts = parent.getInputPorts(); if (inputPorts != null) for (Port p : inputPorts) if (!mentionedPorts.contains(p)) listener.portMissingFromIterationStrategyStack(p, bean); } }
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 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); }
private InputProcessorPort findOrCreateProcessorInputPort(Processor p, String name, Integer depth) { InputProcessorPort port = p.getInputPorts().getByName(name); if (port == null) { port = new InputProcessorPort(); port.setParent(p); port.setName(name); port.setDepth(depth); } return port; }
@Test public void processorInputPorts() throws Exception { Processor hello = workflowBundle.getMainWorkflow().getProcessors() .getByName("Hello"); assertEquals(1, hello.getInputPorts().size()); assertEquals("name", hello.getInputPorts().getByName("name").getName()); assertEquals(0, hello.getInputPorts().getByName("name").getDepth() .intValue()); }
@Test public void uriForDatalink() throws Exception { Processor hello = wfBundle.getMainWorkflow().getProcessors() .getByName("Hello"); List<DataLink> nameLinks = scufl2Tools.datalinksTo(hello .getInputPorts().getByName("name")); URI uri = uriTools.uriForBean(nameLinks.get(0)); assertEquals(HELLOWORLD_URI + "datalink?from=in/yourName&to=processor/Hello/in/name", uri.toASCIIString()); }
@Test public void resolveDataLink() throws Exception { Processor hello = wfBundle.getMainWorkflow().getProcessors() .getByName("Hello"); List<DataLink> datalinks = scufl2Tools.datalinksTo(hello .getInputPorts().getByName("name")); assertSame( datalinks.get(0), uriTools.resolveUri( HELLOWORLD_URI .resolve("datalink?from=in/yourName&to=processor/Hello/in/name"), wfBundle)); }
@Test public void resolveProcessorInput() throws Exception { Processor hello = wfBundle.getMainWorkflow().getProcessors() .getByName("Hello"); InputProcessorPort helloName = hello.getInputPorts().getByName("name"); assertSame(helloName, uriTools.resolveUri(HELLO_URI.resolve("in/name"), wfBundle)); }
public void createActivityPortsFromProcessor(Activity activity, Processor processor) { for (InputProcessorPort processorPort : processor.getInputPorts()) new InputActivityPort(activity, processorPort.getName()) .setDepth(processorPort.getDepth()); for (OutputProcessorPort processorPort : processor.getOutputPorts()) { OutputActivityPort activityPort = new OutputActivityPort(activity, processorPort.getName()); activityPort.setDepth(processorPort.getDepth()); activityPort.setGranularDepth(processorPort.getGranularDepth()); } }
@Test public void uriForProcessorInPort() throws Exception { Processor hello = wfBundle.getMainWorkflow().getProcessors() .getByName("Hello"); URI uri = uriTools.uriForBean(hello.getInputPorts().getByName("name")); assertEquals(HELLO_URI + "in/name", uri.toASCIIString()); }
@Test public void processorPortBindingForInputProcessorPort() throws Exception { Profile profile = workflowBundle.getMainProfile(); Processor hello = workflowBundle.getMainWorkflow().getProcessors() .getByName("Hello"); InputProcessorPort port = hello.getInputPorts().getByName("name"); ProcessorBinding processorBinding = profile.getProcessorBindings() .getByName("Hello"); ProcessorInputPortBinding inputPortBinding = processorBinding .getInputPortBindings().iterator().next(); assertSame(inputPortBinding, scufl2Tools.processorPortBindingForPort(port, profile)); }
@Test public void resolveProcessorBindingIn() throws Exception { Processor hello = wfBundle.getMainWorkflow().getProcessors() .getByName("Hello"); ProcessorInputPortBinding binding = scufl2Tools .processorPortBindingForPort( hello.getInputPorts().getByName("name"), wfBundle.getMainProfile()); assertSame(binding, uriTools.resolveUri( PROFILE_URI.resolve("processorbinding/Hello/in/name"), wfBundle)); }
public void bindActivityToProcessorByMatchingPorts(ProcessorBinding binding) { Activity activity = binding.getBoundActivity(); Processor processor = binding.getBoundProcessor(); for (InputActivityPort activityPort : activity.getInputPorts()) { InputProcessorPort processorPort = processor.getInputPorts() .getByName(activityPort.getName()); if (processorPort != null && processorPortBindingInternalInBinding(processorPort, binding) == null) new ProcessorInputPortBinding(binding, processorPort, activityPort); } for (OutputProcessorPort processorPort : processor.getOutputPorts()) { OutputActivityPort activityPort = activity.getOutputPorts() .getByName(processorPort.getName()); if (activityPort != null && processorPortBindingInternalInBinding(activityPort, binding) == null) new ProcessorOutputPortBinding(binding, activityPort, processorPort); } }
@Test public void simpleDot() throws Exception { assertEquals(1, concat.getIterationStrategyStack().size()); IterationStrategyTopNode top = concat.getIterationStrategyStack().get(0); assertTrue(top instanceof DotProduct); assertEquals(2, top.size()); IterationStrategyNode node1 = top.get(0); assertTrue(node1 instanceof PortNode); PortNode portNode1 = (PortNode) node1; assertEquals(0, portNode1.getDesiredDepth().intValue()); assertEquals(concat.getInputPorts().getByName("string1"), portNode1.getInputProcessorPort()); IterationStrategyNode node2 = top.get(1); assertTrue(node2 instanceof PortNode); PortNode portNode2 = (PortNode) node2; assertEquals(0, portNode2.getDesiredDepth().intValue()); assertEquals(concat.getInputPorts().getByName("string2"), portNode2.getInputProcessorPort()); assertEquals(concat.getInputPorts().getByName("string2"), portNode2.getInputProcessorPort()); }
@Test public void processorPortsWait4Me() throws Exception { Processor wait4me = workflowBundle.getMainWorkflow().getProcessors() .getByName("wait4me"); assertEquals(0, wait4me.getInputPorts().size()); assertEquals(0, wait4me.getOutputPorts().size()); }
@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()); }
@Test public void iterationStrategy() throws Exception { Processor hello = workflowBundle.getMainWorkflow().getProcessors() .getByName("Hello"); assertEquals(1, hello.getIterationStrategyStack().size()); IterationStrategyTopNode iterationStrategyTopNode = hello .getIterationStrategyStack().get(0); assertTrue(iterationStrategyTopNode instanceof CrossProduct); CrossProduct cross = (CrossProduct) iterationStrategyTopNode; assertEquals(1, cross.size()); PortNode portNode = (PortNode) cross.get(0); assertEquals(hello.getInputPorts().getByName("name"), portNode.getInputProcessorPort()); assertEquals(0, portNode.getDesiredDepth().intValue()); }
@Test public void createProcessorFromActivity() throws Exception { Profile profile = new Profile(); Activity a = new Activity(); a.setParent(profile); new InputActivityPort(a, "in1"); new InputActivityPort(a, "in2").setDepth(1); new OutputActivityPort(a, "out1"); new OutputActivityPort(a, "out2").setDepth(0); OutputActivityPort aOut3 = new OutputActivityPort(a, "out3"); aOut3.setDepth(2); aOut3.setGranularDepth(1); ProcessorBinding binding = scufl2Tools.createProcessorAndBindingFromActivity(a); Processor p = binding.getBoundProcessor(); assertEquals(profile, binding.getParent()); assertEquals(2, p.getInputPorts().size()); assertEquals(3, p.getOutputPorts().size()); assertEquals(2, binding.getInputPortBindings().size()); assertEquals(3, binding.getOutputPortBindings().size()); assertEquals(a, binding.getBoundActivity()); assertEquals(p, binding.getBoundProcessor()); }
@Test public void createProcessorPortsFromActivityWithOverwrite() throws Exception { Activity a = new Activity(); new InputActivityPort(a, "in1"); new OutputActivityPort(a, "out1"); new OutputActivityPort(a, "out2").setDepth(1); Processor p = new Processor(); new InputProcessorPort(p, "other"); OutputProcessorPort toBeOverWritten = new OutputProcessorPort(p, "out1"); toBeOverWritten.setDepth(1); assertEquals(p, toBeOverWritten.getParent()); scufl2Tools.createProcessorPortsFromActivity(p, a); // Still there assertNotNull(p.getInputPorts().getByName("other")); // but out1 has been overwritten OutputProcessorPort pOut1 = p.getOutputPorts().getByName("out1"); assertNull(pOut1.getDepth()); assertNotSame(toBeOverWritten, pOut1); }