@Override public void format(HtmlWriter writer) throws IOException { writer.writeStart("pre"); State state = getState(); ObjectType type = state.getType(); if (type != null) { writer.writeHtml(type.getInternalName()); writer.writeHtml(": "); } writer.writeStart( "a", "target", "_blank", "href", StringUtils.addQueryParameters( "/_debug/query", "where", "id = " + state.getId(), "action", "Run")); writer.writeHtml(getLabel()); writer.writeEnd(); writer.writeElement("br"); writer.writeHtml(ObjectUtils.toJson(state.getSimpleValues(), true)); writer.writeEnd(); }
@Override public boolean setPriority(final int priority) { if (priority < Priority.MIN_PRIORITY || priority > Priority.MAX_PRIORITY) { throw new IllegalArgumentException("Priority out of bounds: " + priority); } State state; State newState; do { state = _stateRef.get(); if (state.getType() != StateType.INIT) { return false; } newState = new State(state.getType(), priority); } while (!_stateRef.compareAndSet(state, newState)); return true; }
public void verify() { for (State state : states) { if (state.getType() == StateType.start) if (startState == null) startState = state; else throw new IllegalStateException( "Found multiple start states. There should only one start state for a state machine."); } currentState = startState; }
protected boolean transitionDone() { State state; State newState; do { state = _stateRef.get(); if (state.getType() == StateType.DONE) { return false; } newState = state.transitionDone(); } while (!_stateRef.compareAndSet(state, newState)); return true; }
protected void transitionPending() { State state; State newState; do { state = _stateRef.get(); if (state.getType() != StateType.RUN) { return; } newState = state.transitionPending(); } while (!_stateRef.compareAndSet(state, newState)); markTaskPending(); }
protected boolean transitionCancel(final Exception reason) { State state; State newState; do { state = _stateRef.get(); final StateType type = state.getType(); if (type == StateType.RUN || type == StateType.DONE) { return false; } newState = state.transitionDone(); } while (!_stateRef.compareAndSet(state, newState)); return true; }
protected boolean transitionRun(final TraceBuilder traceBuilder) { State state; State newState; do { state = _stateRef.get(); if (state.getType() != StateType.INIT) { return false; } newState = state.transitionRun(); } while (!_stateRef.compareAndSet(state, newState)); _traceBuilder = traceBuilder; traceBuilder.addShallowTrace(_shallowTraceBuilder); return true; }
@Override public BeanInfo[] getAdditionalBeanInfo() { State state = getState(); return state.getDatabase().getEnvironment().getAdditionalBeanInfoByType(state.getType()); }
public boolean isEnded() { if (currentState == null) return false; return currentState.getType() == StateType.end; }