import net.pterodactylus.reactor.Reaction;
import net.pterodactylus.reactor.Trigger;
import net.pterodactylus.reactor.states.AbstractState;
+import net.pterodactylus.reactor.states.FailedState;
import org.apache.log4j.Logger;
try {
logger.debug("Querying system...");
state = query.state();
+ if (state == null) {
+ state = FailedState.INSTANCE;
+ }
logger.debug("System queried.");
} catch (Throwable t1) {
logger.warn("Querying system failed!", t1);
/* convert states. */
for (Filter filter : nextReaction.filters()) {
- net.pterodactylus.reactor.State newState = filter.filter(state);
- logger.debug(String.format("Old state is %s, new state is %s.", state, newState));
- state = newState;
+ if (state.success()) {
+ net.pterodactylus.reactor.State newState = filter.filter(state);
+ logger.debug(String.format("Old state is %s, new state is %s.", state, newState));
+ state = newState;
+ }
+ }
+ if (state.success()) {
+ reactionExecution.addState(state);
}
- reactionExecution.addState(state);
/* only run trigger if we have collected two states. */
Trigger trigger = nextReaction.trigger();
boolean triggerHit = false;
- if (reactionExecution.previousState() != null) {
+ if ((reactionExecution.previousState() != null) && state.success()) {
logger.debug("Checking Trigger for changes...");
triggerHit = trigger.triggers(reactionExecution.currentState(), reactionExecution.previousState());
}