private Choose readChoose(Step parent, XdmNode node) { checkAttributes(node, new String[] { "name" }, false); String stepName = checkNCName(node.getAttributeValue(_name)); Choose step = new Choose(runtime, node, stepName); checkExtensionAttributes(node, step); step.setParentDecl((DeclareStep) parent); step.parent = parent; Vector<XdmNode> rest = readSignature(step); if (rest == null) { throw XProcException.staticError(15, node, "A p:choose must contain at least one p:when."); } for (XdmNode child : rest) { if (XProcConstants.p_when.equals(child.getNodeName())) { When substep = readWhen(step, child); step.addStep(substep); } else if (XProcConstants.p_otherwise.equals(child.getNodeName())) { Otherwise substep = readOtherwise(step, child); step.addStep(substep); } else { throw new UnsupportedOperationException("Not valid in a choose: " + child.getNodeName()); } } step.checkPrimaryIO(); return step; }
@Override protected void setEnvironment(Environment newEnvironment) { Environment env = new Environment(newEnvironment); patchEnvironment(env); super.setEnvironment(env); // Now what about my subpipeline for (Step step : subpipeline()) { Environment senv = new Environment(env); step.setEnvironment(senv); } }
protected void augmentIO() { if (getInput("#xpath-context") == null) { Input isource = new Input(runtime, node); isource.setPort("#xpath-context"); addInput(isource); } // Assume that everything will be OK when we validate... if (subpipeline.size() > 0) { Step step = subpipeline.get(0); for (Input input : step.inputs()) { Input cinput = new Input(runtime, step.getNode()); cinput.setPort(input.getPort()); cinput.setPrimary(input.getPrimary()); cinput.setSequence(input.getSequence()); addInput(cinput); } for (Output output : step.outputs()) { Output coutput = new Output(runtime, step.getNode()); coutput.setPort(output.getPort()); coutput.setPrimary(output.getPrimary()); coutput.setSequence(output.getSequence()); addOutput(coutput); } } super.augmentIO(); }
if (s1input.getPrimary() != input.getPrimary()) { valid = false; error("Input port " + input.getPort() + " has different primary status.", XProcConstants.staticError(7)); error("Input port " + input.getPort() + " is extra.", XProcConstants.staticError(7)); if (!port.startsWith("|") && !port.startsWith("#") && step.getInput(port) == null) { valid = false; error("Input port " + port + " missing.", XProcConstants.staticError(7)); if (outputs.containsKey(output.getPort())) { Output s1output = outputs.get(output.getPort()); Output chooseOut = getOutput(output.getPort()); if (s1output.getPrimary() != output.getPrimary()) { valid = false; error("Output port " + output.getPort() + " has different primary status.", XProcConstants.staticError(7)); error("Output port " + output.getPort() + " is extra.", XProcConstants.staticError(7)); if (!port.endsWith("|") && step.getOutput(port) == null) { valid = false; error("Output port " + port + " missing.", XProcConstants.staticError(7)); error("Choose must contain when or otherwise", XProcConstants.staticError(27));
protected void augmentIO() { if (getInput("#xpath-context") == null) { Input isource = new Input(runtime, node); isource.setPort("#xpath-context"); addInput(isource); } // Assume that everything will be OK when we validate... if (subpipeline.size() > 0) { Step step = subpipeline.get(0); for (Input input : step.inputs()) { Input cinput = new Input(runtime, step.getNode()); cinput.setPort(input.getPort()); cinput.setPrimary(input.getPrimary()); cinput.setSequence(input.getSequence()); addInput(cinput); } for (Output output : step.outputs()) { Output coutput = new Output(runtime, step.getNode()); coutput.setPort(output.getPort()); coutput.setPrimary(output.getPrimary()); coutput.setSequence(output.getSequence()); addOutput(coutput); } } super.augmentIO(); }
if (s1input.getPrimary() != input.getPrimary()) { valid = false; error("Input port " + input.getPort() + " has different primary status.", XProcConstants.staticError(7)); error("Input port " + input.getPort() + " is extra.", XProcConstants.staticError(7)); if (!port.startsWith("|") && !port.startsWith("#") && step.getInput(port) == null) { valid = false; error("Input port " + port + " missing.", XProcConstants.staticError(7)); if (outputs.containsKey(output.getPort())) { Output s1output = outputs.get(output.getPort()); Output chooseOut = getOutput(output.getPort()); if (s1output.getPrimary() != output.getPrimary()) { valid = false; error("Output port " + output.getPort() + " has different primary status.", XProcConstants.staticError(7)); error("Output port " + output.getPort() + " is extra.", XProcConstants.staticError(7)); if (!port.endsWith("|") && step.getOutput(port) == null) { valid = false; error("Output port " + port + " missing.", XProcConstants.staticError(7)); error("Choose must contain when or otherwise", XProcConstants.staticError(27));
private Choose readChoose(Step parent, XdmNode node) { checkAttributes(node, new String[] { "name" }, false); String stepName = checkNCName(node.getAttributeValue(_name)); Choose step = new Choose(runtime, node, stepName); checkExtensionAttributes(node, step); step.setParentDecl((DeclareStep) parent); step.parent = parent; Vector<XdmNode> rest = readSignature(step); if (rest == null) { throw XProcException.staticError(15, node, "A p:choose must contain at least one p:when."); } for (XdmNode child : rest) { if (XProcConstants.p_when.equals(child.getNodeName())) { When substep = readWhen(step, child); step.addStep(substep); } else if (XProcConstants.p_otherwise.equals(child.getNodeName())) { Otherwise substep = readOtherwise(step, child); step.addStep(substep); } else { throw new UnsupportedOperationException("Not valid in a choose: " + child.getNodeName()); } } step.checkPrimaryIO(); return step; }
@Override protected void setEnvironment(Environment newEnvironment) { Environment env = new Environment(newEnvironment); patchEnvironment(env); super.setEnvironment(env); // Now what about my subpipeline for (Step step : subpipeline()) { Environment senv = new Environment(env); step.setEnvironment(senv); } }