public Activity makeActivity() { activity = new Activity(); activity.setName("HelloScript"); activity.setType(URI .create("http://ns.taverna.org.uk/2010/activity/beanshell")); personName = new InputActivityPort(activity, "personName"); personName.setDepth(0); hello = new OutputActivityPort(activity, "hello"); hello.setDepth(0); hello.setGranularDepth(0); return activity; }
new InputActivityPort(activity, portName); } else { new OutputActivityPort(activity, portName);
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 testIncompatibleGranularDepth() { OutputActivityPort oap = new OutputActivityPort(); oap.setDepth(new Integer(0)); oap.setGranularDepth(new Integer(1));
@Test public void testCorrectnessOfGranularDepthSpecifiedIncorrectly() { OutputActivityPort oap = new OutputActivityPort(); oap.setDepth(new Integer(3)); oap.setGranularDepth(new Integer(-2)); oap.setName("fred"); oap.setParent(null); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(oap, false, rcvl); Set<NegativeValueProblem> negativeValueProblems = rcvl.getNegativeValueProblems(); assertEquals(1, negativeValueProblems.size()); if (!negativeValueProblems.isEmpty()) { NegativeValueProblem problem = negativeValueProblems.iterator().next(); assertEquals(problem.getBean(), oap); assertEquals(problem.getFieldName(), "granularDepth"); assertEquals(problem.getFieldValue(), Integer.valueOf("-2")); } Set<NullFieldProblem> nullFieldProblems = rcvl.getNullFieldProblems(); assertEquals(0, nullFieldProblems.size()); // only done when completeness check assertEquals(0, rcvl.getIncompatibleGranularDepthProblems().size()); }
@Test public void testCorrectnessOfMissingGranularDepth() { OutputActivityPort oap = new OutputActivityPort(); oap.setDepth(new Integer(3)); oap.setGranularDepth(null); oap.setName("fred"); oap.setParent(null); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(oap, false, rcvl); Set<NegativeValueProblem> negativeValueProblems = rcvl.getNegativeValueProblems(); assertEquals(0, negativeValueProblems.size()); Set<NullFieldProblem> nullFieldProblems = rcvl.getNullFieldProblems(); assertEquals(0, nullFieldProblems.size()); // only done when completeness check assertEquals(0, rcvl.getIncompatibleGranularDepthProblems().size()); }
@Test public void testCompletenessOfSpecifiedBoundActivityPort() { ProcessorOutputPortBinding pipb = new ProcessorOutputPortBinding(); pipb.setBoundActivityPort(new OutputActivityPort()); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(pipb, true, rcvl); Set<NullFieldProblem> nullFieldProblems = rcvl.getNullFieldProblems(); boolean problem = false; for (NullFieldProblem nlp : nullFieldProblems) { if (nlp.getBean().equals(pipb) && nlp.getFieldName().equals("boundActivityPort")) { problem = true; } } assertFalse(problem); }
@Test public void testCompletenessOfGranularDepthSpecifiedIncorrectly() { OutputActivityPort oap = new OutputActivityPort(); oap.setDepth(new Integer(3)); oap.setGranularDepth(new Integer(-2));
@Test public void testCompletenessOfMissingGranularDepth() { OutputActivityPort oap = new OutputActivityPort(); oap.setDepth(new Integer(3)); oap.setGranularDepth(null); oap.setName("fred"); oap.setParent(null); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(oap, true, rcvl); Set<NegativeValueProblem> negativeValueProblems = rcvl.getNegativeValueProblems(); assertEquals(0, negativeValueProblems.size()); Set<NullFieldProblem> nullFieldProblems = rcvl.getNullFieldProblems(); assertEquals(2, nullFieldProblems.size()); // granular depth and parent boolean granularDepthFieldProblem = false; for (NullFieldProblem nlp : nullFieldProblems) { if (nlp.getBean().equals(oap) && nlp.getFieldName().equals("granularDepth")) { granularDepthFieldProblem = true; } } assertTrue(granularDepthFieldProblem); assertEquals(0, rcvl.getIncompatibleGranularDepthProblems().size()); }
protected void parseOutputActivityPort( uk.org.taverna.scufl2.rdfxml.jaxb.OutputActivityPort original) { OutputActivityPort port = new OutputActivityPort(); mapBean(original.getAbout(), port); port.setParent(getParserState().getCurrent(Activity.class)); port.setName(original.getName()); if (original.getPortDepth() != null) { port.setDepth(original.getPortDepth().getValue()); } if (original.getGranularPortDepth() != null) { port.setGranularDepth(original.getGranularPortDepth().getValue()); } }
@Override public void addDynamicPorts(uk.org.taverna.scufl2.api.activity.Activity scufl2Activity, Configuration configuration) throws ActivityNotFoundException, ActivityConfigurationException { Activity<?> activity = createActivity(scufl2Activity.getConfigurableType(), configuration); Set<ActivityInputPort> inputPorts = activity.getInputPorts(); for (ActivityInputPort inputPort : inputPorts) { InputActivityPort inputActivityPort = new InputActivityPort(scufl2Activity, inputPort.getName()); inputActivityPort.setDepth(inputPort.getDepth()); } Set<OutputPort> outputPorts = activity.getOutputPorts(); for (OutputPort outputPort : outputPorts) { OutputActivityPort outputActivityPort = new OutputActivityPort(scufl2Activity, outputPort.getName()); outputActivityPort.setDepth(outputPort.getDepth()); outputActivityPort.setGranularDepth(outputPort.getGranularDepth()); } }
@Test public void testCorrectnessOfOutOfScopeActivityPort1() { ProcessorBinding pb = new ProcessorBinding(); Processor processor = new Processor(); pb.setBoundProcessor(processor); ProcessorOutputPortBinding pipb = new ProcessorOutputPortBinding(); pipb.setParent(pb); OutputActivityPort orphanPort = new OutputActivityPort(); pipb.setBoundActivityPort(orphanPort); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(pipb, false, rcvl); Set<OutOfScopeValueProblem> outOfScopeValueProblems = rcvl.getOutOfScopeValueProblems(); boolean problem = false; for (OutOfScopeValueProblem nlp : outOfScopeValueProblems) { if (nlp.getBean().equals(pipb) && nlp.getFieldName().equals("boundActivityPort") && nlp.getValue().equals(orphanPort)) { problem = true; } } assertTrue(problem); }
@Test public void testCorrectnessOfInScopeActivityPort() { ProcessorBinding pb = new ProcessorBinding(); Activity activity = new Activity(); pb.setBoundActivity(activity); ProcessorOutputPortBinding pipb = new ProcessorOutputPortBinding(); pipb.setParent(pb); OutputActivityPort port = new OutputActivityPort(); port.setParent(activity); pipb.setBoundActivityPort(port); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(pipb, false, rcvl); Set<OutOfScopeValueProblem> outOfScopeValueProblems = rcvl.getOutOfScopeValueProblems(); boolean problem = false; for (OutOfScopeValueProblem nlp : outOfScopeValueProblems) { if (nlp.getBean().equals(pipb) && nlp.getFieldName().equals("boundActivityPort") && nlp.getValue().equals(port)) { problem = true; } } assertFalse(problem); }
new OutputProcessorPort(p, "new3"); new OutputProcessorPort(p, "new4"); new OutputActivityPort(a, "new4"); new OutputActivityPort(a, "new5");
@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()); }
OutputActivityPort elsewherePort = new OutputActivityPort(); elsewherePort.setParent(otherActivity);
@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); }
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);
new OutputActivityPort(a, "out1"); new OutputActivityPort(a, "out3"); new OutputActivityPort(a, "out4"); // additional out4
@Test public void createActivityPortsFromProcessorWithOverwrite() throws Exception { Processor p = new Processor(); new InputProcessorPort(p, "in1"); new OutputProcessorPort(p, "out1"); new OutputProcessorPort(p, "out2").setDepth(1); Activity a = new Activity(); new InputActivityPort(a, "other"); OutputActivityPort toBeOverWritten = new OutputActivityPort(a, "out1"); toBeOverWritten.setDepth(1); assertEquals(a, toBeOverWritten.getParent()); scufl2Tools.createActivityPortsFromProcessor(a, p); // Still there assertNotNull(a.getInputPorts().getByName("other")); // but out1 has been overwritten OutputActivityPort aOut1 = a.getOutputPorts().getByName("out1"); assertNull(aOut1.getDepth()); assertNotSame(toBeOverWritten, aOut1); }