šŸ”€ Merge branch 'release/v82'
[Sone.git] / src / main / java / net / pterodactylus / sone / core / SoneDownloaderImpl.java
index 8b257dd..43a87fb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Sone - SoneDownloaderImpl.java - Copyright Ā© 2010ā€“2016 David Roden
+ * Sone - SoneDownloaderImpl.java - Copyright Ā© 2010ā€“2020 David Roden
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +17,6 @@
 
 package net.pterodactylus.sone.core;
 
-import static freenet.support.io.Closer.close;
 import static java.lang.String.format;
 import static java.lang.System.currentTimeMillis;
 import static java.util.concurrent.TimeUnit.DAYS;
@@ -55,28 +54,19 @@ public class SoneDownloaderImpl extends AbstractService implements SoneDownloade
        private static final int MAX_PROTOCOL_VERSION = 0;
 
        /** The core. */
-       private final Core core;
+       private final UpdatedSoneProcessor updatedSoneProcessor;
        private final SoneParser soneParser;
 
        /** The Freenet interface. */
        private final FreenetInterface freenetInterface;
 
        /** The sones to update. */
-       private final Set<Sone> sones = new HashSet<Sone>();
+       private final Set<Sone> sones = new HashSet<>();
 
-       /**
-        * Creates a new Sone downloader.
-        *
-        * @param core
-        *              The core
-        * @param freenetInterface
-        *              The Freenet interface
-        * @param soneParser
-        */
        @Inject
-       SoneDownloaderImpl(Core core, FreenetInterface freenetInterface, SoneParser soneParser) {
+       SoneDownloaderImpl(UpdatedSoneProcessor updatedSoneProcessor, FreenetInterface freenetInterface, SoneParser soneParser) {
                super("Sone Downloader", false);
-               this.core = core;
+               this.updatedSoneProcessor = updatedSoneProcessor;
                this.freenetInterface = freenetInterface;
                this.soneParser = soneParser;
        }
@@ -170,7 +160,7 @@ public class SoneDownloaderImpl extends AbstractService implements SoneDownloade
                        if (parsedSone != null) {
                                if (!fetchOnly) {
                                        parsedSone.setStatus((parsedSone.getTime() == 0) ? SoneStatus.unknown : SoneStatus.idle);
-                                       core.updateSone(parsedSone);
+                                       updatedSoneProcessor.updateSone(parsedSone);
                                        addSone(parsedSone);
                                }
                        }
@@ -192,22 +182,19 @@ 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 {
-                       soneInputStream = soneBucket.getInputStream();
-                       Sone parsedSone = soneParser.parseSone(originalSone,
-                                       soneInputStream);
+               try (InputStream soneInputStream = soneBucket.getInputStream()) {
+                       Sone parsedSone = soneParser.parseSone(originalSone, soneInputStream);
                        if (parsedSone != null) {
+                               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);
+                       soneBucket.free();
                }
                return null;
        }