🔀 Merge other next branch
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Wed, 7 Aug 2019 06:15:08 +0000 (08:15 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Wed, 7 Aug 2019 06:15:08 +0000 (08:15 +0200)
src/main/java/net/pterodactylus/sone/core/FreenetInterface.java
src/main/java/net/pterodactylus/sone/core/SoneDownloaderImpl.java
src/test/kotlin/net/pterodactylus/sone/core/FreenetInterfaceTest.kt

index 1ed2024..b3b32b3 100644 (file)
@@ -327,7 +327,7 @@ public class FreenetInterface {
                };
                try {
                        node.clientCore.uskManager.subscribe(USK.create(uri), uskCallback, true, requestClient);
-                       uriUskCallbacks.put(uri, uskCallback);
+                       uriUskCallbacks.put(USK.create(uri).clearCopy().getURI(), uskCallback);
                } catch (MalformedURLException mue1) {
                        logger.log(Level.WARNING, String.format("Could not subscribe to USK: %s", uri), mue1);
                }
@@ -340,12 +340,12 @@ public class FreenetInterface {
         *            The URI to unregister the USK watcher for
         */
        public void unregisterUsk(FreenetURI uri) {
-               USKCallback uskCallback = uriUskCallbacks.remove(uri);
-               if (uskCallback == null) {
-                       logger.log(Level.INFO, String.format("Could not unregister unknown USK: %s", uri));
-                       return;
-               }
                try {
+                       USKCallback uskCallback = uriUskCallbacks.remove(USK.create(uri).clearCopy().getURI());
+                       if (uskCallback == null) {
+                               logger.log(Level.INFO, String.format("Could not unregister unknown USK: %s", uri));
+                               return;
+                       }
                        node.clientCore.uskManager.unsubscribe(USK.create(uri), uskCallback);
                } catch (MalformedURLException mue1) {
                        logger.log(Level.INFO, String.format("Could not unregister invalid USK: %s", uri), mue1);
index ba1c632..55c8167 100644 (file)
@@ -183,7 +183,7 @@ public class SoneDownloaderImpl extends AbstractService implements SoneDownloade
         * @return The parsed Sone, or {@code null} if the Sone could not be parsed
         */
        private Sone parseSone(Sone originalSone, FetchResult fetchResult, FreenetURI requestUri) {
-               logger.log(Level.FINEST, String.format("Parsing FetchResult (%d bytes, %s) for %s…", fetchResult.size(), fetchResult.getMimeType(), originalSone));
+               logger.finest(() -> format("Parsing FetchResult (%d bytes, %s) for %s…", fetchResult.size(), fetchResult.getMimeType(), originalSone));
                Bucket soneBucket = fetchResult.asBucket();
                InputStream soneInputStream = null;
                try {
@@ -191,12 +191,12 @@ public class SoneDownloaderImpl extends AbstractService implements SoneDownloade
                        Sone parsedSone = soneParser.parseSone(originalSone,
                                        soneInputStream);
                        if (parsedSone != null) {
-                               logger.log(Level.FINER, "Sone %s was successfully parsed.", parsedSone);
+                               logger.finer(() -> format("Sone %s was successfully parsed.", parsedSone));
                                parsedSone.setLatestEdition(requestUri.getEdition());
                        }
                        return parsedSone;
                } catch (Exception e1) {
-                       logger.log(Level.WARNING, String.format("Could not parse Sone from %s!", requestUri), e1);
+                       logger.log(Level.WARNING, e1, () -> format("Could not parse Sone from %s!", requestUri));
                } finally {
                        close(soneInputStream);
                        close(soneBucket);
index 1893acc..cdf0dfb 100644 (file)
@@ -32,6 +32,7 @@ import org.mockito.ArgumentMatchers.eq
 import org.mockito.Mockito.*
 import java.io.*
 import java.util.*
+import kotlin.test.Test
 
 /**
  * Unit test for [FreenetInterface].
@@ -458,4 +459,13 @@ class FreenetInterfaceTest {
                verifyNoMoreInteractions(backgroundFetchCallback)
        }
 
+       @Test
+       fun `unregistering a registered USK with different edition unregisters USK`() {
+               val callback = mock<Callback>()
+               val uri = createRandom(randomSource, "test-123").uri.uskForSSK()
+               freenetInterface.registerUsk(uri, callback)
+               freenetInterface.unregisterUsk(uri.setSuggestedEdition(234))
+               verify(uskManager).unsubscribe(any<USK>(), any<USKCallback>())
+       }
+
 }