import net.pterodactylus.rhynodge.Trigger;
import net.pterodactylus.rhynodge.output.DefaultOutput;
import net.pterodactylus.rhynodge.output.Output;
+import net.pterodactylus.rhynodge.states.OutputState;
/**
* {@link Trigger} implementation that always triggers.
*/
public class AlwaysTrigger implements Trigger {
+ private State currentState;
+
+ /**
+ * {@inheritDoc}
+ * <p>
+ * This implementation returns the current state.
+ */
+ @Override
+ public State mergeStates(State previousState, State currentState) {
+ this.currentState = currentState;
+ return currentState;
+ }
+
/**
* {@inheritDoc}
+ * <p>
+ * This implementation always returns {@code true}.
*/
@Override
- public boolean triggers(State currentState, State previousState) {
+ public boolean triggers() {
return true;
}
*/
@Override
public Output output(Reaction reaction) {
- return new DefaultOutput("true").addText("text/plain", "true").addText("text/html", "<div>true</div>");
+ DefaultOutput output = new DefaultOutput(reaction.name());
+ if (currentState instanceof OutputState) {
+ OutputState outputState = (OutputState) currentState;
+ if (outputState.plainTextOutput().isPresent()) {
+ output = output.addText("text/plain", outputState.plainTextOutput().get());
+ }
+ if (outputState.htmlOutput().isPresent()) {
+ output = output.addText("text/html", outputState.htmlOutput().get());
+ }
+ return output;
+ }
+ return output.addText("text/plain", "true").addText("text/html", "<div>true</div>");
}
}