@Override public void setParent(Profile parent) { if (this.parent != null && this.parent != parent) this.parent.getProcessorBindings().remove(this); this.parent = parent; if (parent != null) parent.getProcessorBindings().add(this); }
public List<ProcessorBinding> processorBindingsForProcessor( Processor processor, Profile profile) { List<ProcessorBinding> bindings = new ArrayList<>(); for (ProcessorBinding pb : profile.getProcessorBindings()) if (pb.getBoundProcessor().equals(processor)) bindings.add(pb); Collections.sort(bindings, new BindingComparator()); return bindings; }
public List<ProcessorBinding> processorBindingsToActivity(Activity activity) { Profile profile = activity.getParent(); List<ProcessorBinding> bindings = new ArrayList<>(); for (ProcessorBinding pb : profile.getProcessorBindings()) if (pb.getBoundActivity().equals(activity)) bindings.add(pb); Collections.sort(bindings, new BindingComparator()); return bindings; }
@Override public boolean accept(Visitor visitor) { if (visitor.visitEnter(this)) { List<Iterable<? extends WorkflowBean>> children = new ArrayList<>(); children.add(getActivities()); children.add(getProcessorBindings()); children.add(getConfigurations()); outer: for (Iterable<? extends WorkflowBean> it : children) for (WorkflowBean bean : it) if (!bean.accept(visitor)) break outer; } return visitor.visitLeave(this); }
private void parseProcessorBinding(Scanner scanner) { level = Level.ProcessorBinding; processorBinding = new ProcessorBinding(); String bindingName = parseName(scanner); processorBinding.setName(bindingName); profile.getProcessorBindings().add(processorBinding); }
@Test public void uriForProcessorBindingOut() throws Exception { ProcessorBinding processorBinding = wfBundle.getMainProfile() .getProcessorBindings().getByName("Hello"); ProcessorOutputPortBinding outputPortBinding = processorBinding .getOutputPortBindings().iterator().next(); URI uri = uriTools.uriForBean(outputPortBinding); assertEquals(BUNDLE_URI + "profile/tavernaWorkbench/" + "processorbinding/Hello/out/greeting" + "", uri.toASCIIString()); }
@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()); }
@Override public void visitProfile(Profile bean) { Integer profilePosition = bean.getProfilePosition(); if (profilePosition != null && profilePosition < 0) listener.negativeValue(bean, "profilePosition", profilePosition); if (checkComplete) { if (bean.getProcessorBindings() == null) listener.nullField(bean, "processorBindings"); if (bean.getConfigurations() == null) listener.nullField(bean, "configurations"); // It may be OK for the profilePosition to be null if (bean.getActivities() == null) listener.nullField(bean, "activities"); } }
protected void parseActivityBinding(Activity origActivity, int activityPosition) throws ReaderException, JAXBException { ProcessorBinding processorBinding = new ProcessorBinding(); processorBinding.setName(parserState.get().getCurrentProcessor() .getName()); parserState.get().getCurrentProfile().getProcessorBindings() .addWithUniqueName(processorBinding); processorBinding.setBoundProcessor(parserState.get() .getCurrentProcessor()); parserState.get().setCurrentProcessorBinding(processorBinding); org.apache.taverna.scufl2.api.activity.Activity newActivity = parseActivityAndAddToProfile(origActivity); parserState.get().setCurrentActivity(newActivity); parserState.get().getCurrentProfile().getActivities().add(newActivity); processorBinding.setBoundActivity(newActivity); processorBinding.setActivityPosition(activityPosition); parserState.get().setCurrentConfigurable(newActivity); try { parseConfigurationAndAddToProfile(origActivity.getConfigBean()); } catch (JAXBException e) { if (isStrict()) throw e; logger.log(WARNING, "Can't configure activity" + newActivity, e); } parseActivityInputMap(origActivity.getInputMap()); parseActivityOutputMap(origActivity.getOutputMap()); parserState.get().setCurrentConfigurable(null); parserState.get().setCurrentActivity(null); parserState.get().setCurrentProcessorBinding(null); }
@Test public void resolveProcessorBinding() throws Exception { ProcessorBinding procBind = wfBundle.getMainProfile().getProcessorBindings() .getByName("Hello"); assertSame(procBind, uriTools.resolveUri( PROFILE_URI.resolve("processorbinding/Hello/"), wfBundle)); }
@Test public void uriForProcessorBinding() throws Exception { ProcessorBinding processorBinding = wfBundle.getMainProfile() .getProcessorBindings().getByName("Hello"); URI uri = uriTools.uriForBean(processorBinding); assertEquals(BUNDLE_URI + "profile/tavernaWorkbench/" + "processorbinding/Hello/", uri.toASCIIString()); }
@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 processorPortBindingForOutputActivityPort() throws Exception { Profile profile = workflowBundle.getMainProfile(); Activity helloScript = profile.getActivities().getByName("HelloScript"); OutputActivityPort port = helloScript.getOutputPorts().getByName( "hello"); ProcessorBinding processorBinding = profile.getProcessorBindings() .getByName("Hello"); ProcessorOutputPortBinding outputPortBinding = processorBinding .getOutputPortBindings().iterator().next(); assertSame(outputPortBinding, 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 processorPortBindingForOutputProcessorPort() throws Exception { Profile profile = workflowBundle.getMainProfile(); Processor hello = workflowBundle.getMainWorkflow().getProcessors() .getByName("Hello"); OutputProcessorPort port = hello.getOutputPorts().getByName("greeting"); ProcessorBinding processorBinding = profile.getProcessorBindings() .getByName("Hello"); ProcessorOutputPortBinding outputPortBinding = processorBinding .getOutputPortBindings().iterator().next(); assertSame(outputPortBinding, scufl2Tools.processorPortBindingForPort(port, profile)); }
@Test public void processorBinding() throws Exception { assertEquals(1, profile.getProcessorBindings().size()); ProcessorBinding hello = profile.getProcessorBindings().getByName( "Hello"); assertEquals(profile.getActivities().getByName("HelloScript"), hello.getBoundActivity()); assertEquals(bundle.getMainWorkflow().getProcessors() .getByName("Hello"), hello.getBoundProcessor()); assertEquals("Hello", hello.getName()); assertEquals(10, hello.getActivityPosition().intValue()); }
appendPorts(3, a); for (ProcessorBinding pb : p.getProcessorBindings()) { newLine(2); append("ProcessorBinding");
@Test public void cloneProfile() throws Exception { Profile original = originalWfBundle.getMainProfile(); assertEquals(originalWfBundle, original.getParent()); Profile clone = (Profile) original.clone(); assertNull(clone.getParent()); assertEquals(original.getName(), clone.getName()); ProcessorBinding originalBinding = original.getProcessorBindings() .getByName("Hello"); ProcessorBinding cloneBinding = clone.getProcessorBindings().getByName( "Hello"); assertNotSame(originalBinding, cloneBinding); assertNotSame(originalBinding.getBoundActivity(), cloneBinding.getBoundActivity()); // but processor is the same, as we did not clone the workflow assertSame(originalBinding.getBoundProcessor(), cloneBinding.getBoundProcessor()); }
@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()); }