X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=90b6e2ee5745d2953e114843c21bf430a8b7f8cb;hb=551444095937c85ad3ae7009c0979c5f433036d3;hp=84e7499f5f8b3ffe5831c761566a97e0d7bf4424;hpb=b621439b18b409255cf877d54a5b2b78a43a98d8;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 84e7499..90b6e2e 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -148,19 +148,16 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, /** Locked local Sones. */ /* synchronize on itself. */ - private final Set lockedSones = new HashSet(); + private final Set lockedSones = new HashSet(); /** Sone inserters. */ /* synchronize access on this on sones. */ - private final Map soneInserters = new HashMap(); + private final Map soneInserters = new HashMap(); /** Sone rescuers. */ /* synchronize access on this on sones. */ private final Map soneRescuers = new HashMap(); - /** All known Sones. */ - private final Set knownSones = new HashSet(); - /** The post database. */ private final Database database; @@ -289,7 +286,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, * The sone to check * @return {@code true} if the Sone is locked, {@code false} if it is not */ - public boolean isLocked(Sone sone) { + public boolean isLocked(LocalSone sone) { synchronized (lockedSones) { return lockedSones.contains(sone); } @@ -363,7 +360,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, * @return {@code true} if a modification has been detected in the Sone, * {@code false} otherwise */ - public boolean isModifiedSone(Sone sone) { + public boolean isModifiedSone(LocalSone sone) { return soneInserters.containsKey(sone) && soneInserters.get(sone).isModified(); } @@ -572,13 +569,13 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, /** * Locks the given Sone. A locked Sone will not be inserted by - * {@link SoneInserter} until it is {@link #unlockSone(Sone) unlocked} + * {@link SoneInserter} until it is {@link #unlockSone(LocalSone) unlocked} * again. * * @param sone * The sone to lock */ - public void lockSone(Sone sone) { + public void lockSone(LocalSone sone) { synchronized (lockedSones) { if (lockedSones.add(sone)) { eventBus.post(new SoneLockedEvent(sone)); @@ -589,11 +586,11 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, /** * Unlocks the given Sone. * - * @see #lockSone(Sone) + * @see #lockSone(LocalSone) * @param sone * The sone to unlock */ - public void unlockSone(Sone sone) { + public void unlockSone(LocalSone sone) { synchronized (lockedSones) { if (lockedSones.remove(sone)) { eventBus.post(new SoneUnlockedEvent(sone)); @@ -614,7 +611,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, return null; } logger.info(String.format("Adding Sone from OwnIdentity: %s", ownIdentity)); - Sone sone = database.registerLocalSone(ownIdentity); + LocalSone sone = database.registerLocalSone(ownIdentity); SoneInserter soneInserter = new SoneInserter(this, eventBus, freenetInterface, ownIdentity.getId()); eventBus.register(soneInserter); synchronized (soneInserters) { @@ -669,9 +666,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, Sone sone = !newSone ? existingSone.get() : database.newSoneBuilder().from(identity).build(); sone.setLatestEdition(latestEdition); if (newSone) { - synchronized (knownSones) { - newSone = !knownSones.contains(sone.getId()); - } + newSone = !database.isSoneKnown(sone); sone.setKnown(!newSone); if (newSone) { eventBus.post(new NewSoneFoundEvent(sone)); @@ -939,9 +934,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, public void markSoneKnown(Sone sone) { if (!sone.isKnown()) { sone.setKnown(true); - synchronized (knownSones) { - knownSones.add(sone.getId()); - } + database.setSoneKnown(sone); eventBus.post(new MarkSoneKnownEvent(sone)); touchConfiguration(); } @@ -1250,7 +1243,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, public void serviceStop() { localElementTicker.shutdownNow(); synchronized (soneInserters) { - for (Entry soneInserter : soneInserters.entrySet()) { + for (Entry soneInserter : soneInserters.entrySet()) { soneInserter.getValue().stop(); } } @@ -1283,17 +1276,8 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, try { preferences.saveTo(configuration); - /* save known Sones. */ - int soneCounter = 0; - synchronized (knownSones) { - for (String knownSoneId : knownSones) { - configuration.getStringValue("KnownSone/" + soneCounter++ + "/ID").setValue(knownSoneId); - } - configuration.getStringValue("KnownSone/" + soneCounter + "/ID").setValue(null); - } - /* save Sone following times. */ - soneCounter = 0; + int soneCounter = 0; synchronized (soneFollowingTimes) { for (Entry soneFollowingTime : soneFollowingTimes.entrySet()) { configuration.getStringValue("SoneFollowingTimes/" + soneCounter + "/Sone").setValue(soneFollowingTime.getKey()); @@ -1326,20 +1310,8 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, private void loadConfiguration() { new PreferencesLoader(preferences).loadFrom(configuration); - /* load known Sones. */ - int soneCounter = 0; - while (true) { - String knownSoneId = configuration.getStringValue("KnownSone/" + soneCounter++ + "/ID").getValue(null); - if (knownSoneId == null) { - break; - } - synchronized (knownSones) { - knownSones.add(knownSoneId); - } - } - /* load Sone following times. */ - soneCounter = 0; + int soneCounter = 0; while (true) { String soneId = configuration.getStringValue("SoneFollowingTimes/" + soneCounter + "/Sone").getValue(null); if (soneId == null) {