throw forwardFatalError(dynamicProcess,
"Default values cannot be specified for " +
"mandatory parameter '" + name + "'");
} else {
ParameterBlock parameters = model.getParameterBlock();
TValue boundValue = parameters.query(name);
if (boundValue != null) {
if (boundValue.getComplexity() == Complexity.COMPLEX &&
complexity == Complexity.SIMPLE) {
throw forwardFatalError(dynamicProcess,
"A complex binding has been provided for the " +
"simple parameter " + name);
} else {
model.transition(TemplateSchema.VALUE_START);
dynamicProcess.getPipelineContext()
.getFlowControlManager().exitCurrentElement();
// Record the fact that the existing binding value is
// "good"
boundValue.verify();
model.transition(TemplateSchema.VALUE_END);
action = new EndParameterAction(model);
}
} else if (use == Use.REQUIRED) {
throw forwardFatalError(dynamicProcess,
"No binding has been provided for required " +
"parameter " + name);
} else {
// The parameter is optional and has no existing binding
if (defaultValue != null) {
TValue value = model.createSimpleValue(defaultValue);
model.addDefaultValue(name, value);
action = new EndParameterAction(model);
} else {