@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); } }
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 visitIterationStrategyStack(IterationStrategyStack bean) { Processor parent = bean.getParent(); Set<Port> mentionedPorts = new HashSet<Port>(); if (parent != null) { if (checkComplete) { 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); } } } } } }
@Override public boolean accept(Visitor visitor) { if (visitor.visitEnter(this)) { List<Iterable<? extends WorkflowBean>> children = new ArrayList<Iterable<? extends WorkflowBean>>(); 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); }
Map<InputProcessorPort, Integer> inputDepths = new HashMap<InputProcessorPort, Integer>(); for (InputProcessorPort input : p.getInputPorts()) { DataLink mainIncomingLink = validatorState.get().getMainIncomingDataLink(input); if (mainIncomingLink == null) {
public void removePortsBindingForUnknownPorts(ProcessorBinding binding) { // First, remove ports no longer owned by processor Iterator<ProcessorInputPortBinding> inputBindings = binding .getInputPortBindings().iterator(); Activity activity = binding.getBoundActivity(); Processor processor = binding.getBoundProcessor(); for (ProcessorInputPortBinding ip : iterable(inputBindings)) { if (!activity.getInputPorts().contains(ip.getBoundActivityPort())) { inputBindings.remove(); continue; } if (!processor.getInputPorts().contains(ip.getBoundProcessorPort())) { inputBindings.remove(); continue; } } Iterator<ProcessorOutputPortBinding> outputBindings = binding .getOutputPortBindings().iterator(); for (ProcessorOutputPortBinding op : iterable(outputBindings)) { if (!activity.getOutputPorts().contains(op.getBoundActivityPort())) { outputBindings.remove(); continue; } if (!processor.getOutputPorts() .contains(op.getBoundProcessorPort())) { outputBindings.remove(); continue; } } }
@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 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 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 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); } } }
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());
new OutputActivityPort(a, "new5"); p.getInputPorts().removeByName("in2"); a.getOutputPorts().removeByName("out1");
wf1.getProcessors().add(p4); InputProcessorPort p4_x2 = new InputProcessorPort(p4, "X2"); p4.getInputPorts().add(p4_x2); p4.getInputPorts().add(new InputProcessorPort(p4, "Y1")); OutputProcessorPort p4_y = new OutputProcessorPort(p4, "Y"); p4.getOutputPorts().add(p4_y); pNested.getInputPorts().add(pNested_i); OutputProcessorPort pNested_o = new OutputProcessorPort(pNested, "O"); pNested.getOutputPorts().add(pNested_o);
@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()); }
assertEquals(1, binding.getInputPortBindings().size()); ProcessorInputPortBinding inBinding = binding.getInputPortBindings().iterator().next(); assertEquals(p.getInputPorts().getByName("in1"), inBinding.getBoundProcessorPort()); assertEquals(a.getInputPorts().getByName("in1"), inBinding.getBoundActivityPort());
@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); }