X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Freactor%2Fengine%2FEngine.java;h=4ba78877ac9a42ec8228f433a6e0372d0dee1b3c;hb=83b112233f6ff6b5f8f42b607857eac86a3addff;hp=a8c9f4e9ab170b5df2a261004cc7e54b622bb9a8;hpb=da24ae72789e842a3dc66444a69f3ff547e83a00;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/reactor/engine/Engine.java b/src/main/java/net/pterodactylus/reactor/engine/Engine.java index a8c9f4e..4ba7887 100644 --- a/src/main/java/net/pterodactylus/reactor/engine/Engine.java +++ b/src/main/java/net/pterodactylus/reactor/engine/Engine.java @@ -27,6 +27,7 @@ import net.pterodactylus.reactor.Query; 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; @@ -122,6 +123,9 @@ public class Engine extends AbstractExecutionThreadService { 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); @@ -133,16 +137,20 @@ public class Engine extends AbstractExecutionThreadService { /* 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()); }