Custom semantics can be created by sub-classing this implementation.
This implementation is full stateless and all methods are public accessible to make it easier to extend, reuse and test its behavior.
101102103104105106107108
throws SCXMLExpressionException { XPath xpath = getXPath(ctx); try { return (Boolean) xpath.evaluate(expr, dummyContextNode, XPathConstants.BOOLEAN); } catch (XPathExpressionException xee) { throw new SCXMLExpressionException(xee.getMessage(), xee); } }
117118119120121122123124
replaceFirst("DataNode("); XPath xpath = getXPath(ctx); try { return (Node) xpath.evaluate(evalExpr, dummyContextNode, XPathConstants.NODE); } catch (XPathExpressionException xee) { throw new SCXMLExpressionException(xee.getMessage(), xee); } }
143144145146147148149150151152153
* Get configures XPath from the factory. */ @SuppressWarnings("unchecked") private XPath getXPath(final Context ctx) throws SCXMLExpressionException { if (!(ctx instanceof XPathContext)) { throw new SCXMLExpressionException("XPathEvaluator needs XPathContext"); } XPathContext xctx = (XPathContext) ctx; factory.setXPathVariableResolver(xctx); fnResolver.setContext(xctx); XPath xpath = factory.newXPath();
391392393394395396397398399400401
try { wait = Long.parseLong(numericDelay); } catch (NumberFormatException nfe) { appLog.error(nfe.getMessage(), nfe); throw new SCXMLExpressionException(nfe.getMessage(), nfe); } wait *= multiplier; } return wait;
107108109110111112113114
// ... evaluate return engine.eval(jsExpression,new JSBindings(context,bindings)); } catch (Exception x) { throw new SCXMLExpressionException("Error evaluating ['" + expression + "'] " + x); } }
135136137138139140141
if (object instanceof Boolean) { return (Boolean) object; } throw new SCXMLExpressionException("Invalid boolean expression: " + expression); }
167168169170171172173174
// ... evaluate return (Node) engine.eval(jsExpression,new JSBindings(context,bindings)); } catch (Exception x) { throw new SCXMLExpressionException("Error evaluating ['" + expression + "'] " + x); } }
109110111112113114115116117
executor.go(); } catch (ModelException me) { throw new InvokerException(me.getMessage(), me.getCause()); } if (executor.getCurrentStatus().isFinal()) { TriggerEvent te = new TriggerEvent("done.invoke."+parentStateId, TriggerEvent.SIGNAL_EVENT); new AsyncTrigger(parentIOProcessor, te).start(); } }
129130131132133134135136137
executor.triggerEvent(evt); } catch (ModelException me) { throw new InvokerException(me.getMessage(), me.getCause()); } if (!doneBefore && executor.getCurrentStatus().isFinal()) { TriggerEvent te = new TriggerEvent("done.invoke."+parentStateId,TriggerEvent.SIGNAL_EVENT); new AsyncTrigger(parentIOProcessor, te).start(); } }
141142143144145146147148149150
*/ public void cancel() throws InvokerException { cancelled = true; try { executor.triggerEvent(new TriggerEvent("cancel.invoke."+parentStateId, TriggerEvent.CANCEL_EVENT)); } catch (ModelException me) { throw new InvokerException(me.getMessage(), me.getCause()); } }