De-generify main interfaces.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Wed, 2 Jan 2013 11:53:25 +0000 (12:53 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Wed, 2 Jan 2013 11:53:25 +0000 (12:53 +0100)
src/main/java/net/pterodactylus/reactor/Action.java
src/main/java/net/pterodactylus/reactor/Query.java
src/main/java/net/pterodactylus/reactor/Reaction.java
src/main/java/net/pterodactylus/reactor/Trigger.java
src/main/java/net/pterodactylus/reactor/queries/FileQuery.java
src/main/java/net/pterodactylus/reactor/triggers/FileExistenceTrigger.java

index 9d743b2..5c6a13f 100644 (file)
@@ -21,11 +21,9 @@ package net.pterodactylus.reactor;
  * An action is performed when a {@link Trigger} determines that two given
  * {@link State}s of a {@link Query} signify a change.
  *
- * @param <S>
- *            The type of the state
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public interface Action<S extends State> {
+public interface Action {
 
        /**
         * Performs the action.
@@ -35,6 +33,6 @@ public interface Action<S extends State> {
         * @param previousState
         *            The previous state of the system
         */
-       void execute(S currentState, S previousState);
+       void execute(State currentState, State previousState);
 
 }
index cc868bb..0b46a39 100644 (file)
@@ -20,11 +20,9 @@ package net.pterodactylus.reactor;
 /**
  * A query is used to retrieve the current {@link State} of a system.
  *
- * @param <S>
- *            The type of the state
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public interface Query<S extends State> {
+public interface Query {
 
        /**
         * Retrieves the current state of the system. The returned state is never
@@ -32,6 +30,6 @@ public interface Query<S extends State> {
         *
         * @return The current state of the system.
         */
-       public S state();
+       public State state();
 
 }
index f7a8c2c..e3cfb86 100644 (file)
@@ -21,26 +21,18 @@ package net.pterodactylus.reactor;
  * A {@code Reaction} binds together {@link Query}s, {@link Trigger}s, and
  * {@link Action}s, and it stores the intermediary {@link State}s.
  *
- * @param <S>
- *            The type of the state
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public class Reaction<S extends State> {
+public class Reaction {
 
        /** The query to run. */
-       private final Query<S> query;
+       private final Query query;
 
        /** The trigger to detect changes. */
-       private final Trigger<S> trigger;
+       private final Trigger trigger;
 
        /** The action to perform. */
-       private final Action<S> action;
-
-       /** The current state of the query. */
-       private S currentState;
-
-       /** The previous state of the query. */
-       private S previousState;
+       private final Action action;
 
        /** The interval in which to run queries (in milliseconds). */
        private long updateInterval;
@@ -55,7 +47,7 @@ public class Reaction<S extends State> {
         * @param action
         *            The action to perform
         */
-       public Reaction(Query<S> query, Trigger<S> trigger, Action<S> action) {
+       public Reaction(Query query, Trigger trigger, Action action) {
                this.query = query;
                this.trigger = trigger;
                this.action = action;
@@ -70,7 +62,7 @@ public class Reaction<S extends State> {
         *
         * @return The query to run
         */
-       public Query<S> query() {
+       public Query query() {
                return query;
        }
 
@@ -79,7 +71,7 @@ public class Reaction<S extends State> {
         *
         * @return The trigger to detect changes
         */
-       public Trigger<S> trigger() {
+       public Trigger trigger() {
                return trigger;
        }
 
@@ -88,29 +80,11 @@ public class Reaction<S extends State> {
         *
         * @return The action to perform
         */
-       public Action<S> action() {
+       public Action action() {
                return action;
        }
 
        /**
-        * Returns the current state of the query.
-        *
-        * @return The current state of the query
-        */
-       public S currentState() {
-               return currentState;
-       }
-
-       /**
-        * Returns the previous state of the query.
-        *
-        * @return The previous state of the query
-        */
-       public S previousState() {
-               return previousState;
-       }
-
-       /**
         * Returns the update interval of this reaction.
         *
         * @return The update interval of this reaction (in milliseconds)
@@ -126,7 +100,7 @@ public class Reaction<S extends State> {
         *            The update interval of this reaction (in milliseconds)
         * @return This reaction
         */
-       public Reaction<?> setUpdateInterval(long updateInterval) {
+       public Reaction setUpdateInterval(long updateInterval) {
                this.updateInterval = updateInterval;
                return this;
        }
index 449b4fe..c4e1aab 100644 (file)
@@ -25,11 +25,9 @@ import net.pterodactylus.reactor.states.FileState;
  * sizes but a trigger might only care about whether the file appeared or
  * disappeared since the last check.
  *
- * @param <S>
- *            The type of the state
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public interface Trigger<S extends State> {
+public interface Trigger {
 
        /**
         * Checks whether the given states warrant a change trigger.
@@ -41,6 +39,6 @@ public interface Trigger<S extends State> {
         * @return {@code true} if the given states warrant a change trigger,
         *         {@code false} otherwise
         */
-       boolean triggers(S currentState, S previousState);
+       boolean triggers(State currentState, State previousState);
 
 }
index 64a72f4..ac0e895 100644 (file)
@@ -22,6 +22,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import java.io.File;
 
 import net.pterodactylus.reactor.Query;
+import net.pterodactylus.reactor.State;
 import net.pterodactylus.reactor.states.FileState;
 
 /**
@@ -29,7 +30,7 @@ import net.pterodactylus.reactor.states.FileState;
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public class FileQuery implements Query<FileState> {
+public class FileQuery implements Query {
 
        /** The name of the file to query. */
        private final String filename;
@@ -52,7 +53,7 @@ public class FileQuery implements Query<FileState> {
         * {@inheritDoc}
         */
        @Override
-       public FileState state() {
+       public State state() {
                File file = new File(filename);
                if (!file.exists()) {
                        return new FileState(false, false, -1, -1);
index 2be86ea..33f1993 100644 (file)
 
 package net.pterodactylus.reactor.triggers;
 
+import net.pterodactylus.reactor.State;
 import net.pterodactylus.reactor.Trigger;
 import net.pterodactylus.reactor.states.FileState;
 
+import com.google.common.base.Preconditions;
+
 /**
  * A trigger that detects changes in the existence of a file.
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public class FileExistenceTrigger implements Trigger<FileState> {
+public class FileExistenceTrigger implements Trigger {
 
        //
        // TRIGGER METHODS
@@ -35,8 +38,10 @@ public class FileExistenceTrigger implements Trigger<FileState> {
         * {@inheritDoc}
         */
        @Override
-       public boolean triggers(FileState previousState, FileState currentState) {
-               return previousState.exists() != currentState.exists();
+       public boolean triggers(State previousState, State currentState) {
+               Preconditions.checkState(previousState instanceof FileState, "previousState is not a FileState");
+               Preconditions.checkState(currentState instanceof FileState, "currentState is not a FileState");
+               return ((FileState) previousState).exists() != ((FileState) currentState).exists();
        }
 
 }