Example usage for org.apache.commons.scxml SCXMLListener SCXMLListener

List of usage examples for org.apache.commons.scxml SCXMLListener SCXMLListener

Introduction

In this page you can find the example usage for org.apache.commons.scxml SCXMLListener SCXMLListener.

Prototype

SCXMLListener

Source Link

Usage

From source file:org.dishevelled.piccolo.identify.StateMachineSupport.java

/**
 * Create a new state machine support class to be delegated to
 * by the specified delegator with the specified state machine.
 *
 * @param delegator object delegating to this state machine support
 *    class, must not be null/* w  ww.j  av  a  2 s  .co m*/
 * @param stateMachine state machine for this support class, must
 *    not be null
 */
StateMachineSupport(final Object delegator, final SCXML stateMachine) {
    if (delegator == null) {
        throw new IllegalArgumentException("delegator must not be null");
    }
    if (stateMachine == null) {
        throw new IllegalArgumentException("stateMachine must not be null");
    }
    this.delegator = delegator;

    Evaluator evaluator = new JexlEvaluator();
    EventDispatcher dispatcher = new SimpleDispatcher();
    ErrorReporter errorReporter = new NoopErrorReporter();
    Context rootContext = new JexlContext();
    SCXMLListener listener = new SCXMLListener() {
        @Override
        public void onEntry(final TransitionTarget entered) {
            invoke(entered.getId());
        }

        @Override
        public void onExit(final TransitionTarget exited) {
            // empty
        }

        @Override
        public void onTransition(final TransitionTarget to, final TransitionTarget from,
                final Transition transition) {
            // empty
        }
    };

    executor = new SCXMLExecutor(evaluator, dispatcher, errorReporter);
    executor.setStateMachine(stateMachine);
    executor.setSuperStep(false);
    executor.setRootContext(rootContext);
    executor.addListener(stateMachine, listener);

    try {
        executor.go();
    } catch (ModelException e) {
        // ignore
    }
}