@Override public void setParent(ProcessorBinding parent) { if (this.parent != null && this.parent != parent) this.parent.getInputPortBindings().remove(this); this.parent = parent; if (parent != null) parent.getInputPortBindings().add(this); }
@Override public boolean accept(Visitor visitor) { if (visitor.visitEnter(this)) { List<Iterable<? extends WorkflowBean>> children = new ArrayList<>(); if (getInputPortBindings() != null) children.add(getInputPortBindings()); if (getOutputPortBindings() != null) children.add(getOutputPortBindings()); outer: for (Iterable<? extends WorkflowBean> it : children) for (WorkflowBean bean : it) if (!bean.accept(visitor)) break outer; } return visitor.visitLeave(this); }
protected ProcessorPortBinding<?, ?> processorPortBindingInternalInBinding( Port port, ProcessorBinding procBinding) { Set<? extends ProcessorPortBinding<?, ?>> portBindings; if (port instanceof InputPort) portBindings = procBinding.getInputPortBindings(); else portBindings = procBinding.getOutputPortBindings(); for (ProcessorPortBinding<?, ?> portBinding : portBindings) { if (port instanceof ProcessorPort && portBinding.getBoundProcessorPort().equals(port)) return portBinding; if (port instanceof ActivityPort && portBinding.getBoundActivityPort().equals(port)) return portBinding; } return null; }
@Test public void uriForProcessorBindingIn() throws Exception { ProcessorBinding processorBinding = wfBundle.getMainProfile() .getProcessorBindings().getByName("Hello"); ProcessorInputPortBinding inputPortBinding = processorBinding .getInputPortBindings().iterator().next(); URI uri = uriTools.uriForBean(inputPortBinding); assertEquals(BUNDLE_URI + "profile/tavernaWorkbench/" + "processorbinding/Hello/in/name" + "", uri.toASCIIString()); }
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; } } }
processorInputPortBinding.setBoundProcessorPort(inputProcessorPort); parserState.get().getCurrentProcessorBinding() .getInputPortBindings().add(processorInputPortBinding);
@Test public void processorPortBindingForInputActivityPort() throws Exception { Profile profile = workflowBundle.getMainProfile(); Activity helloScript = profile.getActivities().getByName("HelloScript"); InputActivityPort port = helloScript.getInputPorts().getByName( "personName"); ProcessorBinding processorBinding = profile.getProcessorBindings() .getByName("Hello"); ProcessorInputPortBinding inputPortBinding = processorBinding .getInputPortBindings().iterator().next(); assertSame(inputPortBinding, scufl2Tools.processorPortBindingForPort(port, profile)); }
@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 portBindings() throws Exception { ProcessorBinding hello = profile.getProcessorBindings().getByName( "Hello"); assertEquals(1, hello.getInputPortBindings().size()); assertEquals(1, hello.getOutputPortBindings().size()); ProcessorInputPortBinding input = hello.getInputPortBindings() .iterator().next(); InputActivityPort inputActivityPort = profile.getActivities() .getByName("HelloScript").getInputPorts() .getByName("personName"); assertEquals(inputActivityPort, input.getBoundActivityPort()); InputProcessorPort inputProcessorPort = bundle.getMainWorkflow() .getProcessors().getByName("Hello").getInputPorts() .getByName("name"); assertEquals(inputProcessorPort, input.getBoundProcessorPort()); ProcessorOutputPortBinding output = hello.getOutputPortBindings() .iterator().next(); OutputActivityPort outputActivityPort = profile.getActivities() .getByName("HelloScript").getOutputPorts().getByName("hello"); assertEquals(outputActivityPort, output.getBoundActivityPort()); OutputProcessorPort outputProcessorPort = bundle.getMainWorkflow() .getProcessors().getByName("Hello").getOutputPorts() .getByName("greeting"); assertEquals(outputProcessorPort, output.getBoundProcessorPort()); }
for (ProcessorInputPortBinding ip : pb.getInputPortBindings()) links.add("'" + escapeName(ip.getBoundProcessorPort().getName()) + "' -> '" + escapeName(ip.getBoundActivityPort().getName()) + "'");
listener.nullField(bean, "boundActivity"); if (bean.getInputPortBindings() == null) listener.nullField(bean, "inputPortBindings"); if (bean.getOutputPortBindings() == null)
Set<String> namesIn = procPortNames(binding.getInputPortBindings()); Set<String> namesOut = procPortNames(binding.getOutputPortBindings()); assertEquals(new HashSet(Arrays.asList("in1", "new1", "new2")), namesIn);
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 createActivityFromProcessor() throws Exception { Processor p = new Processor(); new InputProcessorPort(p, "in1"); new InputProcessorPort(p, "in2").setDepth(1); new OutputProcessorPort(p, "out1"); new OutputProcessorPort(p, "out2").setDepth(0); OutputProcessorPort pOut3 = new OutputProcessorPort(p, "out3"); pOut3.setDepth(2); pOut3.setGranularDepth(1); Profile profile = new Profile(); Activity a = scufl2Tools.createActivityFromProcessor(p, profile); assertEquals(profile, a.getParent()); ProcessorBinding binding = scufl2Tools.processorBindingForProcessor(p, profile); assertEquals(2, a.getInputPorts().size()); assertEquals(3, a.getOutputPorts().size()); assertEquals(2, binding.getInputPortBindings().size()); assertEquals(3, binding.getOutputPortBindings().size()); assertEquals(a, binding.getBoundActivity()); assertEquals(p, binding.getBoundProcessor()); }
@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()); }