Convert “new Sound found” into EventBus-based event.
[Sone.git] / src / main / java / net / pterodactylus / sone / core / Core.java
index 6f32230..629c2d5 100644 (file)
@@ -35,6 +35,7 @@ import java.util.logging.Logger;
 import net.pterodactylus.sone.core.Options.DefaultOption;
 import net.pterodactylus.sone.core.Options.Option;
 import net.pterodactylus.sone.core.Options.OptionWatcher;
+import net.pterodactylus.sone.core.event.NewSoneFoundEvent;
 import net.pterodactylus.sone.data.Album;
 import net.pterodactylus.sone.data.Client;
 import net.pterodactylus.sone.data.Image;
@@ -70,6 +71,7 @@ import net.pterodactylus.util.version.Version;
 
 import com.google.common.base.Predicate;
 import com.google.common.collect.Collections2;
+import com.google.common.eventbus.EventBus;
 import com.google.inject.Inject;
 
 import freenet.keys.FreenetURI;
@@ -96,6 +98,9 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
        /** The core listener manager. */
        private final CoreListenerManager coreListenerManager = new CoreListenerManager(this);
 
+       /** The event bus. */
+       private final EventBus eventBus;
+
        /** The configuration. */
        private Configuration configuration;
 
@@ -193,9 +198,11 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
         *            The identity manager
         * @param webOfTrustUpdater
         *            The WebOfTrust updater
+        * @param eventBus
+        *            The event bus
         */
        @Inject
-       public Core(Configuration configuration, FreenetInterface freenetInterface, IdentityManager identityManager, WebOfTrustUpdater webOfTrustUpdater) {
+       public Core(Configuration configuration, FreenetInterface freenetInterface, IdentityManager identityManager, WebOfTrustUpdater webOfTrustUpdater, EventBus eventBus) {
                super("Sone Core");
                this.configuration = configuration;
                this.freenetInterface = freenetInterface;
@@ -204,6 +211,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                this.imageInserter = new ImageInserter(this, freenetInterface);
                this.updateChecker = new UpdateChecker(freenetInterface);
                this.webOfTrustUpdater = webOfTrustUpdater;
+               this.eventBus = eventBus;
        }
 
        //
@@ -419,7 +427,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                                sone = new Sone(id, true);
                                sones.put(id, sone);
                        }
-                       if (!sone.isLocal()) {
+                       if ((sone != null) && !sone.isLocal()) {
                                sone = new Sone(id, true);
                                sones.put(id, sone);
                        }
@@ -885,7 +893,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                                }
                                sone.setKnown(!newSone);
                                if (newSone) {
-                                       coreListenerManager.fireNewSoneFound(sone);
+                                       eventBus.post(new NewSoneFoundEvent(sone));
                                        for (Sone localSone : getLocalSones()) {
                                                if (localSone.getOptions().getBooleanOption("AutoFollow").get()) {
                                                        followSone(localSone, sone);