public boolean setState(JobState state, boolean force) { JobState curr = getState(); if (force || (isEnabled() && curr.canTransition(state)) || (!isEnabled() && (state == JobState.IDLE)) || (!isEnabled() && (state == JobState.ERROR))) { // Note dependence on ordering! this.state = state.ordinal(); return true; } else if (state != curr) { log.warn( "[job.setstate] {}job {} cannot transition {} -> {}", (disabled) ? "disabled " : "", getId(), curr, state); for (StackTraceElement elt : Thread.currentThread().getStackTrace()) { log.warn(elt.toString()); } return false; } return true; }