X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FImageInserter.java;h=cdab2ba29baca7ed347e808f8e293804ff1e5e6e;hp=4fc7e89dc57d13df8784ecc94120ce5d13059324;hb=87630ec07d4de0e516133d29a3135f81716e5383;hpb=a47643aed43d118ca68044f95451bb5374cdb332 diff --git a/src/main/java/net/pterodactylus/sone/core/ImageInserter.java b/src/main/java/net/pterodactylus/sone/core/ImageInserter.java index 4fc7e89..cdab2ba 100644 --- a/src/main/java/net/pterodactylus/sone/core/ImageInserter.java +++ b/src/main/java/net/pterodactylus/sone/core/ImageInserter.java @@ -1,5 +1,5 @@ /* - * Sone - ImageInserter.java - Copyright © 2011–2012 David Roden + * Sone - ImageInserter.java - Copyright © 2011–2016 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,17 +17,24 @@ package net.pterodactylus.sone.core; +import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Preconditions.checkNotNull; +import static java.util.logging.Logger.getLogger; + import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; +import javax.inject.Inject; + import net.pterodactylus.sone.core.FreenetInterface.InsertToken; +import net.pterodactylus.sone.core.FreenetInterface.InsertTokenSupplier; import net.pterodactylus.sone.data.Image; import net.pterodactylus.sone.data.TemporaryImage; -import net.pterodactylus.util.logging.Logging; -import net.pterodactylus.util.validation.Validation; + +import com.google.common.base.Function; /** * The image inserter is responsible for inserting images using @@ -40,13 +47,11 @@ import net.pterodactylus.util.validation.Validation; public class ImageInserter { /** The logger. */ - private static final Logger logger = Logging.getLogger(ImageInserter.class); - - /** The core. */ - private final Core core; + private static final Logger logger = getLogger(ImageInserter.class.getName()); /** The freenet interface. */ private final FreenetInterface freenetInterface; + private final Function insertTokenSupplier; /** The tokens of running inserts. */ private final Map insertTokens = Collections.synchronizedMap(new HashMap()); @@ -54,19 +59,19 @@ public class ImageInserter { /** * Creates a new image inserter. * - * @param core - * The Sone core * @param freenetInterface * The freenet interface + * @param insertTokenSupplier + * The supplier for insert tokens */ - public ImageInserter(Core core, FreenetInterface freenetInterface) { - this.core = core; + @Inject + public ImageInserter(FreenetInterface freenetInterface, InsertTokenSupplier insertTokenSupplier) { this.freenetInterface = freenetInterface; + this.insertTokenSupplier = insertTokenSupplier; } /** - * Inserts the given image. The {@link #core} will automatically added as - * {@link ImageInsertListener} to the created {@link InsertToken}. + * Inserts the given image. * * @param temporaryImage * The temporary image data @@ -74,11 +79,12 @@ public class ImageInserter { * The image */ public void insertImage(TemporaryImage temporaryImage, Image image) { - Validation.begin().isNotNull("Temporary Image", temporaryImage).isNotNull("Image", image).check().isEqual("Image IDs", image.getId(), temporaryImage.getId()).check(); + checkNotNull(temporaryImage, "temporaryImage must not be null"); + checkNotNull(image, "image must not be null"); + checkArgument(image.getId().equals(temporaryImage.getId()), "image IDs must match"); try { - InsertToken insertToken = freenetInterface.new InsertToken(image); + InsertToken insertToken = insertTokenSupplier.apply(image); insertTokens.put(image.getId(), insertToken); - insertToken.addImageInsertListener(core); freenetInterface.insertImage(temporaryImage, image, insertToken); } catch (SoneException se1) { logger.log(Level.WARNING, "Could not insert image!", se1); @@ -98,7 +104,6 @@ public class ImageInserter { return; } insertToken.cancel(); - insertToken.removeImageInsertListener(core); } }