Convert “new post reply found” into EventBus-based event.
[Sone.git] / src / main / java / net / pterodactylus / sone / web / WebInterface.java
index 045cc11..7432e5f 100644 (file)
@@ -37,6 +37,9 @@ import java.util.logging.Logger;
 
 import net.pterodactylus.sone.core.Core;
 import net.pterodactylus.sone.core.CoreListener;
+import net.pterodactylus.sone.core.event.NewPostFoundEvent;
+import net.pterodactylus.sone.core.event.NewPostReplyFoundEvent;
+import net.pterodactylus.sone.core.event.NewSoneFoundEvent;
 import net.pterodactylus.sone.data.Album;
 import net.pterodactylus.sone.data.Image;
 import net.pterodactylus.sone.data.Post;
@@ -103,8 +106,6 @@ import net.pterodactylus.sone.web.ajax.UntrustAjaxPage;
 import net.pterodactylus.sone.web.page.FreenetRequest;
 import net.pterodactylus.sone.web.page.PageToadlet;
 import net.pterodactylus.sone.web.page.PageToadletFactory;
-import net.pterodactylus.util.collection.SetBuilder;
-import net.pterodactylus.util.collection.filter.Filters;
 import net.pterodactylus.util.logging.Logging;
 import net.pterodactylus.util.notify.Notification;
 import net.pterodactylus.util.notify.NotificationManager;
@@ -131,6 +132,12 @@ import net.pterodactylus.util.version.Version;
 import net.pterodactylus.util.web.RedirectPage;
 import net.pterodactylus.util.web.StaticPage;
 import net.pterodactylus.util.web.TemplatePage;
+
+import com.google.common.collect.Collections2;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.eventbus.Subscribe;
+import com.google.inject.Inject;
+
 import freenet.clients.http.SessionManager;
 import freenet.clients.http.SessionManager.Session;
 import freenet.clients.http.ToadletContainer;
@@ -215,6 +222,7 @@ public class WebInterface implements CoreListener {
         * @param sonePlugin
         *            The Sone plugin
         */
+       @Inject
        public WebInterface(SonePlugin sonePlugin) {
                this.sonePlugin = sonePlugin;
                formPassword = sonePlugin.pluginRespirator().getToadletContainer().getFormPassword();
@@ -458,7 +466,7 @@ public class WebInterface implements CoreListener {
         * @return The new posts
         */
        public Set<Post> getNewPosts() {
-               return new SetBuilder<Post>().addAll(newPostNotification.getElements()).addAll(localPostNotification.getElements()).get();
+               return ImmutableSet.<Post> builder().addAll(newPostNotification.getElements()).addAll(localPostNotification.getElements()).build();
        }
 
        /**
@@ -468,7 +476,7 @@ public class WebInterface implements CoreListener {
         * @return The new replies
         */
        public Set<PostReply> getNewReplies() {
-               return new SetBuilder<PostReply>().addAll(newReplyNotification.getElements()).addAll(localReplyNotification.getElements()).get();
+               return ImmutableSet.<PostReply> builder().addAll(newReplyNotification.getElements()).addAll(localReplyNotification.getElements()).build();
        }
 
        /**
@@ -725,15 +733,15 @@ public class WebInterface implements CoreListener {
        }
 
        /**
-        * Returns all {@link Core#isLocalSone(Sone) local Sone}s that are
-        * referenced by {@link SonePart}s in the given text (after parsing it using
+        * Returns all {@link Sone#isLocal() local Sone}s that are referenced by
+        * {@link SonePart}s in the given text (after parsing it using
         * {@link SoneTextParser}).
         *
         * @param text
         *            The text to parse
         * @return All mentioned local Sones
         */
-       private Set<Sone> getMentionedSones(String text) {
+       private Collection<Sone> getMentionedSones(String text) {
                /* we need no context to find mentioned Sones. */
                Set<Sone> mentionedSones = new HashSet<Sone>();
                try {
@@ -745,7 +753,7 @@ public class WebInterface implements CoreListener {
                } catch (IOException ioe1) {
                        logger.log(Level.WARNING, String.format("Could not parse post text: %s", text), ioe1);
                }
-               return Filters.filteredSet(mentionedSones, Sone.LOCAL_SONE_FILTER);
+               return Collections2.filter(mentionedSones, Sone.LOCAL_SONE_FILTER);
        }
 
        /**
@@ -770,15 +778,15 @@ public class WebInterface implements CoreListener {
        }
 
        //
-       // CORELISTENER METHODS
+       // EVENT HANDLERS
        //
 
        /**
         * {@inheritDoc}
         */
-       @Override
-       public void newSoneFound(Sone sone) {
-               newSoneNotification.add(sone);
+       @Subscribe
+       public void newSoneFound(NewSoneFoundEvent newSoneFoundEvent) {
+               newSoneNotification.add(newSoneFoundEvent.sone());
                if (!hasFirstStartNotification()) {
                        notificationManager.addNotification(newSoneNotification);
                }
@@ -787,8 +795,9 @@ public class WebInterface implements CoreListener {
        /**
         * {@inheritDoc}
         */
-       @Override
-       public void newPostFound(Post post) {
+       @Subscribe
+       public void newPostFound(NewPostFoundEvent newPostFoundEvent) {
+               Post post = newPostFoundEvent.post();
                boolean isLocal = post.getSone().isLocal();
                if (isLocal) {
                        localPostNotification.add(post);
@@ -809,8 +818,9 @@ public class WebInterface implements CoreListener {
        /**
         * {@inheritDoc}
         */
-       @Override
-       public void newReplyFound(PostReply reply) {
+       @Subscribe
+       public void newReplyFound(NewPostReplyFoundEvent newPostReplyFoundEvent) {
+               PostReply reply = newPostReplyFoundEvent.postReply();
                boolean isLocal = reply.getSone().isLocal();
                if (isLocal) {
                        localReplyNotification.add(reply);
@@ -828,6 +838,10 @@ public class WebInterface implements CoreListener {
                }
        }
 
+       //
+       // CORELISTENER METHODS
+       //
+
        /**
         * {@inheritDoc}
         */