X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneInserter.java;h=04254d491c1ab17b4c741ef32696ce3369f6a321;hb=48ac9dedd81abd3d2ef58110e39e09a91fa3c659;hp=a1bb90349d5e376029557f0be4136f9dd794cf4d;hpb=7017646bf42cb265b6df539bb6def40b91d2f968;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/SoneInserter.java b/src/main/java/net/pterodactylus/sone/core/SoneInserter.java index a1bb903..04254d4 100644 --- a/src/main/java/net/pterodactylus/sone/core/SoneInserter.java +++ b/src/main/java/net/pterodactylus/sone/core/SoneInserter.java @@ -19,6 +19,8 @@ package net.pterodactylus.sone.core; import static com.google.common.base.Preconditions.checkArgument; import static net.pterodactylus.sone.data.Album.NOT_EMPTY; +import static net.pterodactylus.sone.data.Sone.TO_FREENET_URI; +import static net.pterodactylus.sone.data.Sone.TO_INSERT_URI; import java.io.InputStreamReader; import java.io.StringWriter; @@ -26,6 +28,7 @@ import java.nio.charset.Charset; import java.util.HashMap; import java.util.HashSet; import java.util.Map; +import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; @@ -51,13 +54,14 @@ import net.pterodactylus.util.template.TemplateException; import net.pterodactylus.util.template.TemplateParser; import net.pterodactylus.util.template.XmlFilter; +import freenet.client.async.ManifestElement; +import freenet.keys.FreenetURI; +import freenet.support.api.Bucket; + import com.google.common.collect.FluentIterable; import com.google.common.collect.Ordering; import com.google.common.eventbus.EventBus; -import freenet.client.async.ManifestElement; -import freenet.keys.FreenetURI; - /** * A Sone inserter is responsible for inserting a Sone if it has changed. * @@ -183,9 +187,6 @@ public class SoneInserter extends AbstractService { // SERVICE METHODS // - /** - * {@inheritDoc} - */ @Override protected void serviceRun() { long lastModificationTime = 0; @@ -247,7 +248,7 @@ public class SoneInserter extends AbstractService { break; } sone.setTime(insertTime); - sone.setLatestEdition(finalUri.getEdition()); + sone.modify().setLatestEdition(finalUri.getEdition()).update(); core.touchConfiguration(); success = true; logger.log(Level.INFO, String.format("Inserted Sone “%s” at %s.", sone.getName(), finalUri)); @@ -255,6 +256,7 @@ public class SoneInserter extends AbstractService { eventBus.post(new SoneInsertAbortedEvent(sone, se1)); logger.log(Level.WARNING, String.format("Could not insert Sone “%s”!", sone.getName()), se1); } finally { + insertInformation.freeBuckets(); sone.setStatus(SoneStatus.idle); } @@ -291,6 +293,7 @@ public class SoneInserter extends AbstractService { /** All properties of the Sone, copied for thread safety. */ private final Map soneProperties = new HashMap(); + private final Set buckets = new HashSet(); /** * Creates a new insert information container. @@ -302,8 +305,8 @@ public class SoneInserter extends AbstractService { soneProperties.put("id", sone.getId()); soneProperties.put("name", sone.getName()); soneProperties.put("time", sone.getTime()); - soneProperties.put("requestUri", sone.getRequestUri()); - soneProperties.put("insertUri", sone.getInsertUri()); + soneProperties.put("requestUri", TO_FREENET_URI.apply(sone)); + soneProperties.put("insertUri", TO_INSERT_URI.apply(sone)); soneProperties.put("profile", sone.getProfile()); soneProperties.put("posts", Ordering.from(Post.TIME_COMPARATOR).sortedCopy(sone.getPosts())); soneProperties.put("replies", Ordering.from(Reply.TIME_COMPARATOR).reverse().sortedCopy(sone.getReplies())); @@ -356,6 +359,12 @@ public class SoneInserter extends AbstractService { return manifestEntries; } + public void freeBuckets() { + for (Bucket bucket : buckets) { + bucket.free(); + } + } + // // PRIVATE METHODS // @@ -401,9 +410,6 @@ public class SoneInserter extends AbstractService { return null; } finally { Closer.close(writer); - if (bucket != null) { - bucket.free(); - } } }