- @Override
- protected void serviceStop() {
- for (Sone sone : sones) {
- freenetInterface.unregisterUsk(sone);
+ public Sone parseSone(Sone originalSone, FetchResult fetchResult, FreenetURI requestUri) {
+ logger.log(Level.FINEST, "Parsing FetchResult (%d bytes, %s) for %s…", new Object[] { fetchResult.size(), fetchResult.getMimeType(), originalSone });
+ Bucket soneBucket = fetchResult.asBucket();
+ InputStream soneInputStream = null;
+ try {
+ soneInputStream = soneBucket.getInputStream();
+ Sone parsedSone = parseSone(originalSone, soneInputStream);
+ if (parsedSone != null) {
+ parsedSone.setRequestUri(requestUri.setMetaString(new String[0]));
+ }
+ return parsedSone;
+ } catch (IOException ioe1) {
+ logger.log(Level.WARNING, "Could not parse Sone from " + requestUri + "!", ioe1);
+ } finally {
+ Closer.close(soneInputStream);
+ soneBucket.free();