🐛 Fix broken change detection
[rhynodge.git] / src / main / java / net / pterodactylus / rhynodge / loader / ReactionLoader.java
index 100e42f..94009af 100644 (file)
@@ -27,10 +27,10 @@ import net.pterodactylus.rhynodge.Action;
 import net.pterodactylus.rhynodge.Filter;
 import net.pterodactylus.rhynodge.Query;
 import net.pterodactylus.rhynodge.Reaction;
-import net.pterodactylus.rhynodge.Trigger;
 import net.pterodactylus.rhynodge.Watcher;
 import net.pterodactylus.rhynodge.loader.Chain.Parameter;
 import net.pterodactylus.rhynodge.loader.Chain.Part;
+import net.pterodactylus.rhynodge.Merger;
 
 /**
  * Creates {@link Reaction}s from {@link Chain}s.
@@ -56,28 +56,40 @@ public class ReactionLoader {
                        throw new IllegalArgumentException("Chain is not enabled.");
                }
 
+               Reaction reaction;
+
                /* create action. */
                Action action = createObject(chain.action().name(), "net.pterodactylus.rhynodge.actions", extractParameters(chain.action().parameters()));
 
                /* do we have a reaction defined? */
                if (chain.watcher() != null) {
+
+                       /* create watcher. */
                        Watcher watcher = createObject(chain.watcher().name(), "net.pterodactylus.rhynodge.watchers", extractParameters(chain.watcher().parameters()));
-                       return new Reaction(chain.name(), watcher.query(), watcher.filters(), watcher.trigger(), action);
-               }
 
-               /* create query. */
-               Query query = createObject(chain.query().name(), "net.pterodactylus.rhynodge.queries", extractParameters(chain.query().parameters()));
+                       /* create reaction. */
+                       reaction = new Reaction(chain.name(), watcher.query(), watcher.filters(), watcher.merger(), action);
 
-               /* create filters. */
-               List<Filter> filters = new ArrayList<Filter>();
-               for (Part filterPart : chain.filters()) {
-                       filters.add(ReactionLoader.<Filter> createObject(filterPart.name(), "net.pterodactylus.rhynodge.filters", extractParameters(filterPart.parameters())));
-               }
+               } else {
+
+                       /* create query. */
+                       Query query = createObject(chain.query().name(), "net.pterodactylus.rhynodge.queries", extractParameters(chain.query().parameters()));
 
-               /* create trigger. */
-               Trigger trigger = createObject(chain.trigger().name(), "net.pterodactylus.rhynodge.triggers", extractParameters(chain.trigger().parameters()));
+                       /* create filters. */
+                       List<Filter> filters = new ArrayList<Filter>();
+                       for (Part filterPart : chain.filters()) {
+                               filters.add(ReactionLoader.<Filter> createObject(filterPart.name(), "net.pterodactylus.rhynodge.filters", extractParameters(filterPart.parameters())));
+                       }
+
+                       /* create merger. */
+                       Merger merger = createObject(chain.merger().name(), "net.pterodactylus.rhynodge.mergers", extractParameters(chain.merger().parameters()));
+
+                       /* create reaction. */
+                       reaction = new Reaction(chain.name(), query, filters, merger, action);
+               }
 
-               return new Reaction(chain.name(), query, filters, trigger, action).setUpdateInterval(TimeUnit.SECONDS.toMillis(chain.updateInterval()));
+               reaction.setUpdateInterval(TimeUnit.SECONDS.toMillis(chain.updateInterval()));
+               return reaction;
        }
 
        //