public PortNode(IterationStrategyParent parent, InputProcessorPort inputProcessorPort) { setParent(parent); setInputProcessorPort(inputProcessorPort); }
@Override protected void cloneInto(WorkflowBean clone, Cloning cloning) { PortNode cloneNode = (PortNode)clone; cloneNode.setDesiredDepth(getDesiredDepth()); cloneNode.setInputProcessorPort(cloning.cloneOrOriginal(getInputProcessorPort())); }
protected IterationStrategyNode parseIterationStrategyNode( IterationNode topNode) throws ReaderException { if (topNode instanceof PortProduct) { PortProduct portProduct = (PortProduct) topNode; PortNode portNode = new PortNode(); portNode.setDesiredDepth(portProduct.getDepth().intValue()); String name = portProduct.getName(); Processor processor = parserState.get().getCurrentProcessor(); InputProcessorPort inputProcessorPort = processor.getInputPorts() .getByName(name); portNode.setInputProcessorPort(inputProcessorPort); return portNode; } IterationStrategyNode node; if (topNode instanceof DotProduct) node = new org.apache.taverna.scufl2.api.iterationstrategy.DotProduct(); else if (topNode instanceof CrossProduct) node = new org.apache.taverna.scufl2.api.iterationstrategy.CrossProduct(); else throw new ReaderException("Invalid node " + topNode); @SuppressWarnings("unchecked") List<IterationStrategyNode> children = (List<IterationStrategyNode>) node; IterationNodeParent parent = (IterationNodeParent) topNode; for (IterationNode child : parent.getCrossOrDotOrPort()) children.add(parseIterationStrategyNode(child)); return node; }
protected void parsePortNode(PortNode original) { org.apache.taverna.scufl2.api.iterationstrategy.PortNode node = new org.apache.taverna.scufl2.api.iterationstrategy.PortNode(); node.setParent(getParserState().getCurrent( IterationStrategyParent.class)); if (original.getDesiredDepth() != null) node.setDesiredDepth(original.getDesiredDepth().getValue()); mapBean(getParserState().getCurrentBase().resolve(original.getAbout()), node); URI inputPortUri = getParserState().getCurrentBase().resolve( original.getIterateOverInputPort().getResource()); org.apache.taverna.scufl2.api.port.InputProcessorPort inputPort = (org.apache.taverna.scufl2.api.port.InputProcessorPort) resolveBeanUri(inputPortUri); node.setInputProcessorPort(inputPort); }
pn.setDesiredDepth(desiredDepth); InputProcessorPort ipp = new InputProcessorPort(); pn.setInputProcessorPort(ipp);
@Test public void testCorrectnessOfDesiredDepthSpecifiedIncorrectly() { PortNode pn = new PortNode(); Integer desiredDepth = new Integer(-3); pn.setDesiredDepth(desiredDepth); InputProcessorPort ipp = new InputProcessorPort(); pn.setInputProcessorPort(ipp); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(pn, false, rcvl); Set<NegativeValueProblem> negativeValueProblems = rcvl.getNegativeValueProblems(); assertEquals(1, negativeValueProblems.size()); if (!negativeValueProblems.isEmpty()) { NegativeValueProblem problem = negativeValueProblems.iterator().next(); assertEquals(problem.getBean(), pn); assertEquals(problem.getFieldName(), "desiredDepth"); assertEquals(problem.getFieldValue(), desiredDepth); } Set<NullFieldProblem> nullFieldProblems = rcvl.getNullFieldProblems(); assertEquals(Collections.EMPTY_SET, nullFieldProblems); // only done when completeness check }
@Test public void testCompletenessOfMissingDepth() { PortNode pn = new PortNode(); InputProcessorPort ipp = new InputProcessorPort(); pn.setInputProcessorPort(ipp); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(pn, true, rcvl); Set<NegativeValueProblem> negativeValueProblems = rcvl.getNegativeValueProblems(); assertEquals(Collections.EMPTY_SET, negativeValueProblems); Set<NullFieldProblem> nullFieldProblems = rcvl.getNullFieldProblems(); assertFalse(nullFieldProblems.isEmpty()); boolean depthFieldProblem = false; for (NullFieldProblem nlp : nullFieldProblems) { if (nlp.getBean().equals(pn) && nlp.getFieldName().equals("desiredDepth")) { depthFieldProblem = true; } } assertTrue(depthFieldProblem); }
cp.setParent(iss); PortNode pn = new PortNode(); pn.setInputProcessorPort(ipp); cp.add(pn); pn.setParent(cp);
pNode1.setInputProcessorPort(p1); cp.add(pNode1); PortNode duplicateNode = new PortNode(); duplicateNode.setInputProcessorPort(p1); cp.add(duplicateNode); iss.add(cp); pNode2.setInputProcessorPort(p2); PortNode pNode3 = new PortNode(); pNode3.setInputProcessorPort(p3); dp.add(pNode2); dp.add(pNode3);
pNode1.setInputProcessorPort(p1); cp.add(pNode1); iss.add(cp); pNode2.setInputProcessorPort(p2); PortNode pNode3 = new PortNode(); pNode3.setInputProcessorPort(p3); dp.add(pNode2); dp.add(pNode3); PortNode duplicateNode = new PortNode(); duplicateNode.setInputProcessorPort(p1); cp.add(duplicateNode); cp.add(dp);
@Test public void testCorrectnessOfMissingDepth() { PortNode pn = new PortNode(); InputProcessorPort ipp = new InputProcessorPort(); pn.setInputProcessorPort(ipp); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(pn, false, rcvl); Set<NegativeValueProblem> negativeValueProblems = rcvl.getNegativeValueProblems(); assertEquals(Collections.EMPTY_SET, negativeValueProblems); Set<NullFieldProblem> nullFieldProblems = rcvl.getNullFieldProblems(); assertEquals(Collections.EMPTY_SET, nullFieldProblems); // only done when completeness check }
pNode1.setInputProcessorPort(p1); cp.add(pNode1); iss.add(cp); pNode2.setInputProcessorPort(p2); dp.add(pNode2); iss.add(dp);
pNode1.setInputProcessorPort(p1); cp.add(pNode1); iss.add(cp); pNode2.setInputProcessorPort(p2); PortNode pNode3 = new PortNode(); pNode3.setInputProcessorPort(p3); dp.add(pNode2); dp.add(pNode3);
pNode1.setInputProcessorPort(p1); cp.add(pNode1); iss.add(cp); pNode2.setInputProcessorPort(p2); PortNode pNode3 = new PortNode(); pNode3.setInputProcessorPort(p3); dp.add(pNode2); dp.add(pNode3);
@Test public void testInScopeInputProcessorPort() { Processor p = new Processor(); InputProcessorPort ipp = new InputProcessorPort(); ipp.setParent(p); IterationStrategyStack iss = new IterationStrategyStack(); p.setIterationStrategyStack(iss); CrossProduct cp = new CrossProduct(); iss.add(cp); cp.setParent(iss); PortNode pn = new PortNode(); pn.setInputProcessorPort(ipp); cp.add(pn); pn.setParent(cp); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(pn, false, rcvl); Set<OutOfScopeValueProblem> outOfScopeValueProblems = rcvl.getOutOfScopeValueProblems(); assertEquals(Collections.EMPTY_SET, outOfScopeValueProblems); }