From 314be56fa3e4ac53dac18ae0282439559209f4b3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Sat, 16 Oct 2010 04:14:05 +0200 Subject: [PATCH] Change Sone downloading logic. --- src/main/java/net/pterodactylus/sone/core/Core.java | 13 +++++++++++-- .../java/net/pterodactylus/sone/core/SoneDownloader.java | 5 ++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index cf61941..eb517fc 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -135,7 +135,6 @@ public class Core extends AbstractService { public Sone getSone(String soneId) { if (!soneCache.containsKey(soneId)) { Sone sone = new Sone(soneId); - soneDownloader.addSone(sone); soneCache.put(soneId, sone); } return soneCache.get(soneId); @@ -210,6 +209,17 @@ public class Core extends AbstractService { // /** + * Adds a Sone to watch for updates. The Sone needs to be completely + * initialized. + * + * @param sone + * The Sone to watch for updates + */ + public void addSone(Sone sone) { + soneDownloader.addSone(sone); + } + + /** * Adds the given Sone. * * @param sone @@ -219,7 +229,6 @@ public class Core extends AbstractService { if (localSones.add(sone)) { SoneInserter soneInserter = new SoneInserter(freenetInterface, sone); soneInserter.start(); - soneDownloader.removeSone(sone); soneInserters.put(sone, soneInserter); } } diff --git a/src/main/java/net/pterodactylus/sone/core/SoneDownloader.java b/src/main/java/net/pterodactylus/sone/core/SoneDownloader.java index 8e9db39..9f6ce5e 100644 --- a/src/main/java/net/pterodactylus/sone/core/SoneDownloader.java +++ b/src/main/java/net/pterodactylus/sone/core/SoneDownloader.java @@ -111,7 +111,10 @@ public class SoneDownloader extends AbstractService { logger.log(Level.FINE, "Starting fetch for Sone “%s” from %s…", new Object[] { sone, sone.getRequestUri().setMetaString(new String[] { "sone.xml" }) }); FetchResult fetchResult = freenetInterface.fetchUri(sone.getRequestUri().setMetaString(new String[] { "sone.xml" })); logger.log(Level.FINEST, "Got %d bytes back.", fetchResult.size()); - parseSone(sone, fetchResult); + Sone parsedSone = parseSone(sone, fetchResult); + if (parsedSone != null) { + core.addSone(parsedSone); + } } /** -- 2.7.4