State state = runQuery();
state = runStateThroughFilters(state);
if (!state.success()) {
- logger.info(format("Reaction %s failed.", reaction.name()));
+ logger.info(format("Reaction %s failed in %s.", reaction.name(), state));
saveStateWithIncreasedFailCount(state);
errorEmailAction.execute(createErrorOutput(reaction, state));
return;
reactionState.saveState(newState);
if (trigger.triggers()) {
logger.info(format("Trigger was hit for %s, executing action...", reaction.name()));
- reaction.action().execute(trigger.output(reaction));
+ reaction.action().execute(newState.output(reaction));
}
logger.info(format("Reaction %s finished.", reaction.name()));
}
private Output createErrorOutput(Reaction reaction, State state) {
DefaultOutput output = new DefaultOutput(String.format("Error while processing “%s!”", reaction.name()));
- output.addText("text/plain; charset=utf-8", createEmailText(reaction, state));
+ output.addText("text/plain", createErrorEmailText(reaction, state));
+ output.addText("text/html", createErrorEmailText(reaction, state));
return output;
}
- private String createEmailText(Reaction reaction, State state) {
+ private String createErrorEmailText(Reaction reaction, State state) {
StringBuilder emailText = new StringBuilder();
- emailText.append(String.format("An error occured while processing “.”\n\n", reaction.name()));
+ emailText.append(String.format("An error occured while processing “%s.”\n\n", reaction.name()));
appendExceptionToEmailText(state.exception(), emailText);
return emailText.toString();
}