Require a local Sone when rescuing.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Tue, 2 Dec 2014 21:09:56 +0000 (22:09 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Tue, 2 Dec 2014 21:36:29 +0000 (22:36 +0100)
src/main/java/net/pterodactylus/sone/core/Core.java
src/main/java/net/pterodactylus/sone/core/SoneRescuer.java
src/main/java/net/pterodactylus/sone/web/RescuePage.java
src/test/java/net/pterodactylus/sone/core/SoneRescuerTest.java

index b485445..84e7499 100644 (file)
@@ -156,7 +156,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider,
 
        /** Sone rescuers. */
        /* synchronize access on this on sones. */
-       private final Map<Sone, SoneRescuer> soneRescuers = new HashMap<Sone, SoneRescuer>();
+       private final Map<LocalSone, SoneRescuer> soneRescuers = new HashMap<LocalSone, SoneRescuer>();
 
        /** All known Sones. */
        private final Set<String> knownSones = new HashSet<String>();
@@ -269,9 +269,8 @@ public class Core extends AbstractService implements SoneProvider, PostProvider,
         *            The local Sone to get the rescuer for
         * @return The Sone rescuer for the given Sone
         */
-       public SoneRescuer getSoneRescuer(Sone sone) {
+       public SoneRescuer getSoneRescuer(LocalSone sone) {
                checkNotNull(sone, "sone must not be null");
-               checkArgument(sone.isLocal(), "sone must be local");
                synchronized (soneRescuers) {
                        SoneRescuer soneRescuer = soneRescuers.get(sone);
                        if (soneRescuer == null) {
index f45e351..6f8d6c8 100644 (file)
@@ -17,6 +17,7 @@
 
 package net.pterodactylus.sone.core;
 
+import net.pterodactylus.sone.data.LocalSone;
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.util.service.AbstractService;
 import freenet.keys.FreenetURI;
@@ -36,7 +37,7 @@ public class SoneRescuer extends AbstractService {
        private final SoneDownloader soneDownloader;
 
        /** The Sone being rescued. */
-       private final Sone sone;
+       private final LocalSone sone;
 
        /** Whether the rescuer is currently fetching a Sone. */
        private volatile boolean fetching;
@@ -57,7 +58,7 @@ public class SoneRescuer extends AbstractService {
         * @param sone
         *            The Sone to rescue
         */
-       public SoneRescuer(Core core, SoneDownloader soneDownloader, Sone sone) {
+       public SoneRescuer(Core core, SoneDownloader soneDownloader, LocalSone sone) {
                super("Sone Rescuer for " + sone.getName());
                this.core = core;
                this.soneDownloader = soneDownloader;
index 569aaaa..24a8f11 100644 (file)
@@ -20,7 +20,7 @@ package net.pterodactylus.sone.web;
 import static net.pterodactylus.sone.utils.NumberParsers.parseLong;
 
 import net.pterodactylus.sone.core.SoneRescuer;
-import net.pterodactylus.sone.data.Sone;
+import net.pterodactylus.sone.data.LocalSone;
 import net.pterodactylus.sone.web.page.FreenetRequest;
 import net.pterodactylus.util.template.Template;
 import net.pterodactylus.util.template.TemplateContext;
@@ -56,7 +56,7 @@ public class RescuePage extends SoneTemplatePage {
        @Override
        protected void processTemplate(FreenetRequest request, TemplateContext templateContext) throws RedirectException {
                super.processTemplate(request, templateContext);
-               Sone currentSone = getCurrentSone(request.getToadletContext(), false).get();
+               LocalSone currentSone = getCurrentSone(request.getToadletContext(), false).get();
                SoneRescuer soneRescuer = webInterface.getCore().getSoneRescuer(currentSone);
                if (request.getMethod() == Method.POST) {
                        if ("true".equals(request.getHttpRequest().getPartAsStringFailsafe("fetch", 4))) {
index ede6f13..8331863 100644 (file)
@@ -10,6 +10,7 @@ import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import net.pterodactylus.sone.data.LocalSone;
 import net.pterodactylus.sone.data.Sone;
 
 import freenet.keys.FreenetURI;
@@ -30,7 +31,7 @@ public class SoneRescuerTest {
        private static final long SOME_OTHER_EDITION = 15L;
        private final Core core = mock(Core.class);
        private final SoneDownloader soneDownloader = mock(SoneDownloader.class);
-       private final Sone sone = mock(Sone.class);
+       private final LocalSone sone = mock(LocalSone.class);
        private SoneRescuer soneRescuer;
 
        @Before