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);
//
/**
+ * 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
if (localSones.add(sone)) {
SoneInserter soneInserter = new SoneInserter(freenetInterface, sone);
soneInserter.start();
- soneDownloader.removeSone(sone);
soneInserters.put(sone, soneInserter);
}
}
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);
+ }
}
/**