X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=e59c8e69311f92d87cc7affea2a84ebfe5ca2911;hb=351ac6b0a5da732e79495cc1643295b4d6a4f233;hp=913355ade85460e95f11aa2741f3e837345538ee;hpb=a2b84c58896a768553f41b633829ab5d28e0c7b6;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index 913355a..e59c8e6 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -116,7 +116,7 @@ public class Core extends AbstractService { */ public void addSone(Sone sone) { if (localSones.add(sone)) { - SoneInserter soneInserter = new SoneInserter(sone); + SoneInserter soneInserter = new SoneInserter(freenetInterface, sone); soneInserter.start(); soneInserters.put(sone, soneInserter); } @@ -170,6 +170,8 @@ public class Core extends AbstractService { try { logger.log(Level.FINEST, "Creating new Sone “%s” at %s (%s)…", new Object[] { name, finalRequestUri, finalInsertUri }); sone = new Sone(UUID.randomUUID(), name, new FreenetURI(finalRequestUri), new FreenetURI(finalInsertUri)); + /* set modification counter to 1 so it is inserted immediately. */ + sone.setModificationCounter(1); addSone(sone); } catch (MalformedURLException mue1) { throw new SoneException(Type.INVALID_URI); @@ -207,6 +209,10 @@ public class Core extends AbstractService { */ @Override protected void serviceStop() { + /* stop all Sone inserters. */ + for (SoneInserter soneInserter : soneInserters.values()) { + soneInserter.stop(); + } saveConfiguration(); } @@ -239,8 +245,11 @@ public class Core extends AbstractService { String id = configuration.getStringValue("Sone/Name." + soneName + "/ID").getValue(null); String insertUri = configuration.getStringValue("Sone/Name." + soneName + "/InsertURI").getValue(null); String requestUri = configuration.getStringValue("Sone/Name." + soneName + "/RequestURI").getValue(null); + long modificationCounter = configuration.getLongValue("Sone/Name." + soneName + "/ModificationCounter").getValue((long) 0); try { - addSone(new Sone(UUID.fromString(id), soneName, new FreenetURI(requestUri), new FreenetURI(insertUri))); + Sone sone = new Sone(UUID.fromString(id), soneName, new FreenetURI(requestUri), new FreenetURI(insertUri)); + sone.setModificationCounter(modificationCounter); + addSone(sone); } catch (MalformedURLException mue1) { logger.log(Level.WARNING, "Could not create Sone from requestUri (“" + requestUri + "”) and insertUri (“" + insertUri + "”)!", mue1); } @@ -271,6 +280,7 @@ public class Core extends AbstractService { configuration.getStringValue("Sone/Name." + sone.getName() + "/ID").setValue(sone.getId()); configuration.getStringValue("Sone/Name." + sone.getName() + "/RequestURI").setValue(sone.getRequestUri().toString()); configuration.getStringValue("Sone/Name." + sone.getName() + "/InsertURI").setValue(sone.getInsertUri().toString()); + configuration.getLongValue("Sone/Name." + sone.getName() + "/ModificationCounter").setValue(sone.getModificationCounter()); } } catch (ConfigurationException ce1) { logger.log(Level.WARNING, "Could not store configuration!", ce1);