package org.webpieces.javasm.impl; import org.webpieces.javasm.api.Memento; import org.webpieces.javasm.api.State; import org.webpieces.util.logging.Logger; import org.webpieces.util.logging.LoggerFactory; import com.webpieces.util.locking.PermitQueue; /** */ public class StateMachineState implements Memento { private static final long serialVersionUID = 1L; private Logger log; private String id; private State state; private StateMachineImpl stateMachine; private PermitQueue<State> permitQueue; public StateMachineState(String rawMapId, String stateMachineId, State state, StateMachineImpl sm) { this.id = rawMapId+","+stateMachineId; this.state = state; this.stateMachine = sm; String name = Memento.class.getPackage().getName(); log = LoggerFactory.getLogger(name+"."+rawMapId+"."+stateMachineId); permitQueue = new PermitQueue<>(1); } @Override public String toString() { return "["+id+", state="+state+"] "; } public State getCurrentState() { return state; } public void setCurrentState(State state) { if(state == null) throw new IllegalArgumentException("name cannot be null"); this.state = state; } public StateMachineImpl getStateMachine() { return stateMachine; } public Logger getLogger() { return log; } public PermitQueue<State> getPermitQueue() { return permitQueue; } }