in src/main/java/org/apache/commons/scxml2/model/If.java [86:119]
public void execute(final ActionExecutionContext exctx) throws ModelException, SCXMLExpressionException {
final EnterableState parentState = getParentEnterableState();
final Context ctx = exctx.getContext(parentState);
final Evaluator eval = exctx.getEvaluator();
Boolean rslt;
try {
rslt = eval.evalCond(ctx, cond);
if (rslt == null) {
if (exctx.getAppLog().isDebugEnabled()) {
exctx.getAppLog().debug("Treating as false because the cond expression was evaluated as null: '"
+ cond + "'");
}
rslt = Boolean.FALSE;
}
} catch (final SCXMLExpressionException e) {
rslt = Boolean.FALSE;
exctx.getInternalIOProcessor().addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION, TriggerEvent.ERROR_EVENT).build());
exctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR, "Treating as false due to error: "
+ e.getMessage(), this);
}
execute = rslt;
// The "if" statement is a "container"
for (final Action aa : actions) {
if (execute && !(aa instanceof ElseIf)) {
aa.execute(exctx);
} else if (execute && aa instanceof ElseIf) {
break;
} else if (aa instanceof Else) {
execute = true;
} else if (aa instanceof ElseIf) {
execute = eval.evalCond(ctx, ((ElseIf) aa).getCond());
}
}
}