Convert update events to EventBus-based events.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Thu, 17 Jan 2013 05:36:17 +0000 (06:36 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Thu, 17 Jan 2013 05:38:00 +0000 (06:38 +0100)
src/main/java/net/pterodactylus/sone/core/Core.java
src/main/java/net/pterodactylus/sone/core/UpdateChecker.java
src/main/java/net/pterodactylus/sone/core/UpdateListener.java [deleted file]
src/main/java/net/pterodactylus/sone/core/UpdateListenerManager.java [deleted file]

index 57913b2..bd1bf37 100644 (file)
@@ -47,7 +47,6 @@ import net.pterodactylus.sone.core.event.PostReplyRemovedEvent;
 import net.pterodactylus.sone.core.event.SoneLockedEvent;
 import net.pterodactylus.sone.core.event.SoneRemovedEvent;
 import net.pterodactylus.sone.core.event.SoneUnlockedEvent;
-import net.pterodactylus.sone.core.event.UpdateFoundEvent;
 import net.pterodactylus.sone.data.Album;
 import net.pterodactylus.sone.data.Client;
 import net.pterodactylus.sone.data.Image;
@@ -79,7 +78,6 @@ import net.pterodactylus.util.validation.EqualityValidator;
 import net.pterodactylus.util.validation.IntegerRangeValidator;
 import net.pterodactylus.util.validation.OrValidator;
 import net.pterodactylus.util.validation.Validation;
-import net.pterodactylus.util.version.Version;
 
 import com.google.common.base.Predicate;
 import com.google.common.collect.Collections2;
@@ -94,7 +92,7 @@ import freenet.keys.FreenetURI;
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public class Core extends AbstractService implements IdentityListener, UpdateListener, SoneProvider, PostProvider {
+public class Core extends AbstractService implements IdentityListener, SoneProvider, PostProvider {
 
        /** The logger. */
        private static final Logger logger = Logging.getLogger(Core.class);
@@ -219,7 +217,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                this.identityManager = identityManager;
                this.soneDownloader = new SoneDownloader(this, freenetInterface);
                this.imageInserter = new ImageInserter(freenetInterface);
-               this.updateChecker = new UpdateChecker(freenetInterface);
+               this.updateChecker = new UpdateChecker(eventBus, freenetInterface);
                this.webOfTrustUpdater = webOfTrustUpdater;
                this.eventBus = eventBus;
        }
@@ -1886,7 +1884,6 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
        @Override
        public void serviceStart() {
                loadConfiguration();
-               updateChecker.addUpdateListener(this);
                updateChecker.start();
                identityManager.addIdentityListener(this);
                identityManager.start();
@@ -1927,7 +1924,6 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                saveConfiguration();
                webOfTrustUpdater.stop();
                updateChecker.stop();
-               updateChecker.removeUpdateListener(this);
                soneDownloader.stop();
                identityManager.removeIdentityListener(this);
                identityManager.stop();
@@ -2414,18 +2410,6 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                eventBus.post(new SoneRemovedEvent(sone));
        }
 
-       //
-       // INTERFACE UpdateListener
-       //
-
-       /**
-        * {@inheritDoc}
-        */
-       @Override
-       public void updateFound(Version version, long releaseTime, long latestEdition) {
-               eventBus.post(new UpdateFoundEvent(version, releaseTime, latestEdition));
-       }
-
        /**
         * Deletes the temporary image.
         *
index 5ccc96d..236ac12 100644 (file)
@@ -27,10 +27,15 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import net.pterodactylus.sone.core.FreenetInterface.Fetched;
+import net.pterodactylus.sone.core.event.UpdateFoundEvent;
 import net.pterodactylus.sone.main.SonePlugin;
 import net.pterodactylus.util.io.Closer;
 import net.pterodactylus.util.logging.Logging;
 import net.pterodactylus.util.version.Version;
+
+import com.google.common.eventbus.EventBus;
+import com.google.inject.Inject;
+
 import freenet.keys.FreenetURI;
 import freenet.support.api.Bucket;
 
@@ -50,12 +55,12 @@ public class UpdateChecker {
        /** The current latest known edition. */
        private static final int LATEST_EDITION = 55;
 
+       /** The event bus. */
+       private final EventBus eventBus;
+
        /** The Freenet interface. */
        private final FreenetInterface freenetInterface;
 
-       /** The update listener manager. */
-       private final UpdateListenerManager updateListenerManager = new UpdateListenerManager();
-
        /** The current URI of the homepage. */
        private FreenetURI currentUri;
 
@@ -71,38 +76,18 @@ public class UpdateChecker {
        /**
         * Creates a new update checker.
         *
+        * @param eventBus
+        *            The event bus
         * @param freenetInterface
         *            The freenet interface to use
         */
-       public UpdateChecker(FreenetInterface freenetInterface) {
+       @Inject
+       public UpdateChecker(EventBus eventBus, FreenetInterface freenetInterface) {
+               this.eventBus = eventBus;
                this.freenetInterface = freenetInterface;
        }
 
        //
-       // EVENT LISTENER MANAGEMENT
-       //
-
-       /**
-        * Adds the given listener to the list of registered listeners.
-        *
-        * @param updateListener
-        *            The listener to add
-        */
-       public void addUpdateListener(UpdateListener updateListener) {
-               updateListenerManager.addListener(updateListener);
-       }
-
-       /**
-        * Removes the given listener from the list of registered listeners.
-        *
-        * @param updateListener
-        *            The listener to remove
-        */
-       public void removeUpdateListener(UpdateListener updateListener) {
-               updateListenerManager.removeListener(updateListener);
-       }
-
-       //
        // ACCESSORS
        //
 
@@ -201,8 +186,7 @@ public class UpdateChecker {
         * Parses the properties of the latest version and fires events, if
         * necessary.
         *
-        * @see UpdateListener#updateFound(Version, long, long)
-        * @see UpdateListenerManager#fireUpdateFound(Version, long, long)
+        * @see UpdateFoundEvent
         * @param propertiesInputStream
         *            The input stream to parse
         * @param edition
@@ -240,7 +224,7 @@ public class UpdateChecker {
                        currentLatestVersion = version;
                        latestVersionDate = releaseTime;
                        logger.log(Level.INFO, String.format("Found new version: %s (%tc)", version, new Date(releaseTime)));
-                       updateListenerManager.fireUpdateFound(version, releaseTime, edition);
+                       eventBus.post(new UpdateFoundEvent(version, releaseTime, edition));
                }
        }
 
diff --git a/src/main/java/net/pterodactylus/sone/core/UpdateListener.java b/src/main/java/net/pterodactylus/sone/core/UpdateListener.java
deleted file mode 100644 (file)
index 2d52f16..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Sone - UpdateListener.java - Copyright © 2011–2012 David Roden
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-package net.pterodactylus.sone.core;
-
-import java.util.EventListener;
-
-import net.pterodactylus.util.version.Version;
-
-/**
- * Listener interface for {@link UpdateChecker} events.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
- */
-public interface UpdateListener extends EventListener {
-
-       /**
-        * Notifies a listener that a newer version than the current version was
-        * found.
-        *
-        * @param version
-        *            The version that was found
-        * @param releaseTime
-        *            The release time of the version
-        * @param latestEdition
-        *            The latest edition of the Sone homepage
-        */
-       public void updateFound(Version version, long releaseTime, long latestEdition);
-
-}
diff --git a/src/main/java/net/pterodactylus/sone/core/UpdateListenerManager.java b/src/main/java/net/pterodactylus/sone/core/UpdateListenerManager.java
deleted file mode 100644 (file)
index 31fdbed..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Sone - UpdateListenerManager.java - Copyright © 2011–2012 David Roden
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-package net.pterodactylus.sone.core;
-
-import net.pterodactylus.util.event.AbstractListenerManager;
-import net.pterodactylus.util.version.Version;
-
-/**
- * Listener manager for {@link UpdateListener} events.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
- */
-public class UpdateListenerManager extends AbstractListenerManager<Void, UpdateListener> {
-
-       /**
-        * Creates a new update listener manager.
-        */
-       public UpdateListenerManager() {
-               super(null);
-       }
-
-       //
-       // ACTIONS
-       //
-
-       /**
-        * Notifies all listeners that a new version has been found.
-        *
-        * @param version
-        *            The new version
-        * @param releaseTime
-        *            The release time of the new version
-        * @param latestEdition
-        *            The latest edition of the Sone homepage
-        */
-       void fireUpdateFound(Version version, long releaseTime, long latestEdition) {
-               for (UpdateListener updateListener : getListeners()) {
-                       updateListener.updateFound(version, releaseTime, latestEdition);
-               }
-       }
-
-}