X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=57913b2670d0bb0d9188e67ee5de383ad89a1cd5;hb=4276233daae926e02a1bbb8939645242f99918c7;hp=6f32230b30153a1bbf07d6666fcb3d611b82354f;hpb=5d8f3ac133544177412ec3c533e5f5f92a7b1c35;p=Sone.git
diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java
index 6f32230..57913b2 100644
--- a/src/main/java/net/pterodactylus/sone/core/Core.java
+++ b/src/main/java/net/pterodactylus/sone/core/Core.java
@@ -35,6 +35,19 @@ 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.ImageInsertFinishedEvent;
+import net.pterodactylus.sone.core.event.MarkPostKnownEvent;
+import net.pterodactylus.sone.core.event.MarkPostReplyKnownEvent;
+import net.pterodactylus.sone.core.event.MarkSoneKnownEvent;
+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.core.event.PostRemovedEvent;
+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;
@@ -70,6 +83,8 @@ 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.common.eventbus.Subscribe;
import com.google.inject.Inject;
import freenet.keys.FreenetURI;
@@ -79,7 +94,7 @@ import freenet.keys.FreenetURI;
*
* @author David âBombeâ Roden
*/
-public class Core extends AbstractService implements IdentityListener, UpdateListener, SoneProvider, PostProvider, SoneInsertListener, ImageInsertListener {
+public class Core extends AbstractService implements IdentityListener, UpdateListener, SoneProvider, PostProvider {
/** The logger. */
private static final Logger logger = Logging.getLogger(Core.class);
@@ -93,8 +108,8 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
/** The preferences. */
private final Preferences preferences = new Preferences(options);
- /** The core listener manager. */
- private final CoreListenerManager coreListenerManager = new CoreListenerManager(this);
+ /** The event bus. */
+ private final EventBus eventBus;
/** The configuration. */
private Configuration configuration;
@@ -193,41 +208,20 @@ 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;
this.identityManager = identityManager;
this.soneDownloader = new SoneDownloader(this, freenetInterface);
- this.imageInserter = new ImageInserter(this, freenetInterface);
+ this.imageInserter = new ImageInserter(freenetInterface);
this.updateChecker = new UpdateChecker(freenetInterface);
this.webOfTrustUpdater = webOfTrustUpdater;
- }
-
- //
- // LISTENER MANAGEMENT
- //
-
- /**
- * Adds a new core listener.
- *
- * @param coreListener
- * The listener to add
- */
- public void addCoreListener(CoreListener coreListener) {
- coreListenerManager.addListener(coreListener);
- }
-
- /**
- * Removes a core listener.
- *
- * @param coreListener
- * The listener to remove
- */
- public void removeCoreListener(CoreListener coreListener) {
- coreListenerManager.removeListener(coreListener);
+ this.eventBus = eventBus;
}
//
@@ -363,7 +357,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
@Override
public Sone getSone(String id, boolean create) {
synchronized (sones) {
- if (!sones.containsKey(id)) {
+ if (!sones.containsKey(id) && create) {
Sone sone = new Sone(id, false);
sones.put(id, sone);
}
@@ -419,7 +413,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);
}
@@ -782,7 +776,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
public void lockSone(Sone sone) {
synchronized (lockedSones) {
if (lockedSones.add(sone)) {
- coreListenerManager.fireSoneLocked(sone);
+ eventBus.post(new SoneLockedEvent(sone));
}
}
}
@@ -797,7 +791,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
public void unlockSone(Sone sone) {
synchronized (lockedSones) {
if (lockedSones.remove(sone)) {
- coreListenerManager.fireSoneUnlocked(sone);
+ eventBus.post(new SoneUnlockedEvent(sone));
}
}
}
@@ -827,8 +821,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
sone.setKnown(true);
/* TODO - load posts ân stuff */
sones.put(ownIdentity.getId(), sone);
- final SoneInserter soneInserter = new SoneInserter(this, freenetInterface, sone);
- soneInserter.addSoneInsertListener(this);
+ final SoneInserter soneInserter = new SoneInserter(this, eventBus, freenetInterface, sone);
soneInserters.put(sone, soneInserter);
sone.setStatus(SoneStatus.idle);
loadSone(sone);
@@ -885,7 +878,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);
@@ -1093,7 +1086,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
for (Post post : storedSone.getPosts()) {
posts.remove(post.getId());
if (!sone.getPosts().contains(post)) {
- coreListenerManager.firePostRemoved(post);
+ eventBus.post(new PostRemovedEvent(post));
}
}
}
@@ -1106,7 +1099,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
knownPosts.add(post.getId());
post.setKnown(true);
} else if (!knownPosts.contains(post.getId())) {
- coreListenerManager.fireNewPostFound(post);
+ eventBus.post(new NewPostFoundEvent(post));
}
}
posts.put(post.getId(), post);
@@ -1118,7 +1111,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
for (PostReply reply : storedSone.getReplies()) {
replies.remove(reply.getId());
if (!sone.getReplies().contains(reply)) {
- coreListenerManager.fireReplyRemoved(reply);
+ eventBus.post(new PostReplyRemovedEvent(reply));
}
}
}
@@ -1131,7 +1124,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
knownReplies.add(reply.getId());
reply.setKnown(true);
} else if (!knownReplies.contains(reply.getId())) {
- coreListenerManager.fireNewReplyFound(reply);
+ eventBus.post(new NewPostReplyFoundEvent(reply));
}
}
replies.put(reply.getId(), reply);
@@ -1208,7 +1201,6 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
}
sones.remove(sone.getId());
SoneInserter soneInserter = soneInserters.remove(sone);
- soneInserter.removeSoneInsertListener(this);
soneInserter.stop();
}
webOfTrustUpdater.removeContext((OwnIdentity) sone.getIdentity(), "Sone");
@@ -1222,7 +1214,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
/**
* Marks the given Sone as known. If the Sone was not {@link Post#isKnown()
- * known} before, a {@link CoreListener#markSoneKnown(Sone)} event is fired.
+ * known} before, a {@link MarkSoneKnownEvent} is fired.
*
* @param sone
* The Sone to mark as known
@@ -1233,7 +1225,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
synchronized (knownSones) {
knownSones.add(sone.getId());
}
- coreListenerManager.fireMarkSoneKnown(sone);
+ eventBus.post(new MarkSoneKnownEvent(sone));
touchConfiguration();
}
}
@@ -1535,7 +1527,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
synchronized (posts) {
posts.put(post.getId(), post);
}
- coreListenerManager.fireNewPostFound(post);
+ eventBus.post(new NewPostFoundEvent(post));
sone.addPost(post);
touchConfiguration();
localElementTicker.registerEvent(System.currentTimeMillis() + 10 * 1000, new Runnable() {
@@ -1566,7 +1558,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
synchronized (posts) {
posts.remove(post.getId());
}
- coreListenerManager.firePostRemoved(post);
+ eventBus.post(new PostRemovedEvent(post));
markPostKnown(post);
touchConfiguration();
}
@@ -1581,7 +1573,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
public void markPostKnown(Post post) {
post.setKnown(true);
synchronized (knownPosts) {
- coreListenerManager.fireMarkPostKnown(post);
+ eventBus.post(new MarkPostKnownEvent(post));
if (knownPosts.add(post.getId())) {
touchConfiguration();
}
@@ -1674,7 +1666,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
replies.put(reply.getId(), reply);
}
synchronized (knownReplies) {
- coreListenerManager.fireNewReplyFound(reply);
+ eventBus.post(new NewPostReplyFoundEvent(reply));
}
sone.addReply(reply);
touchConfiguration();
@@ -1724,7 +1716,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
public void markReplyKnown(PostReply reply) {
reply.setKnown(true);
synchronized (knownReplies) {
- coreListenerManager.fireMarkReplyKnown(reply);
+ eventBus.post(new MarkPostReplyKnownEvent(reply));
if (knownReplies.add(reply.getId())) {
touchConfiguration();
}
@@ -1928,7 +1920,6 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
public void serviceStop() {
synchronized (sones) {
for (Entry soneInserter : soneInserters.entrySet()) {
- soneInserter.getValue().removeSoneInsertListener(this);
soneInserter.getValue().stop();
saveSone(soneInserter.getKey());
}
@@ -2405,7 +2396,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
synchronized (knownPosts) {
for (Post post : sone.getPosts()) {
posts.remove(post.getId());
- coreListenerManager.firePostRemoved(post);
+ eventBus.post(new PostRemovedEvent(post));
}
}
}
@@ -2413,14 +2404,14 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
synchronized (knownReplies) {
for (PostReply reply : sone.getReplies()) {
replies.remove(reply.getId());
- coreListenerManager.fireReplyRemoved(reply);
+ eventBus.post(new PostReplyRemovedEvent(reply));
}
}
}
synchronized (sones) {
sones.remove(identity.getId());
}
- coreListenerManager.fireSoneRemoved(sone);
+ eventBus.post(new SoneRemovedEvent(sone));
}
//
@@ -2432,78 +2423,21 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
*/
@Override
public void updateFound(Version version, long releaseTime, long latestEdition) {
- coreListenerManager.fireUpdateFound(version, releaseTime, latestEdition);
- }
-
- //
- // INTERFACE ImageInsertListener
- //
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void insertStarted(Sone sone) {
- coreListenerManager.fireSoneInserting(sone);
+ eventBus.post(new UpdateFoundEvent(version, releaseTime, latestEdition));
}
/**
- * {@inheritDoc}
- */
- @Override
- public void insertFinished(Sone sone, long insertDuration) {
- coreListenerManager.fireSoneInserted(sone, insertDuration);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void insertAborted(Sone sone, Throwable cause) {
- coreListenerManager.fireSoneInsertAborted(sone, cause);
- }
-
- //
- // SONEINSERTLISTENER METHODS
- //
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void imageInsertStarted(Image image) {
- logger.log(Level.WARNING, String.format("Image insert started for %s...", image));
- coreListenerManager.fireImageInsertStarted(image);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void imageInsertAborted(Image image) {
- logger.log(Level.WARNING, String.format("Image insert aborted for %s.", image));
- coreListenerManager.fireImageInsertAborted(image);
- }
-
- /**
- * {@inheritDoc}
+ * Deletes the temporary image.
+ *
+ * @param imageInsertFinishedEvent
+ * The event
*/
- @Override
- public void imageInsertFinished(Image image, FreenetURI key) {
- logger.log(Level.WARNING, String.format("Image insert finished for %s: %s", image, key));
- image.setKey(key.toString());
- deleteTemporaryImage(image.getId());
+ @Subscribe
+ public void imageInsertFinished(ImageInsertFinishedEvent imageInsertFinishedEvent) {
+ logger.log(Level.WARNING, String.format("Image insert finished for %s: %s", imageInsertFinishedEvent.image(), imageInsertFinishedEvent.resultingUri()));
+ imageInsertFinishedEvent.image().setKey(imageInsertFinishedEvent.resultingUri().toString());
+ deleteTemporaryImage(imageInsertFinishedEvent.image().getId());
touchConfiguration();
- coreListenerManager.fireImageInsertFinished(image);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void imageInsertFailed(Image image, Throwable cause) {
- logger.log(Level.WARNING, String.format("Image insert failed for %s." + image), cause);
- coreListenerManager.fireImageInsertFailed(image, cause);
}
/**