X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ffreenet%2Fwot%2FIdentityManager.java;h=fc9d6516273fd91fe72b2af9034e13f39b12954b;hb=1bc88510da721fc90b270e4706ee2bdab41ecd18;hp=16789d11119d9b23c06c5d7a84197701c3ed0c64;hpb=58f449dd0b8ebad51fd8fc06c52233e9a160e0bc;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java b/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java index 16789d1..fc9d651 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java +++ b/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java @@ -25,6 +25,7 @@ import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; +import net.pterodactylus.sone.freenet.plugin.PluginException; import net.pterodactylus.util.logging.Logging; import net.pterodactylus.util.service.AbstractService; @@ -263,6 +264,15 @@ public class IdentityManager extends AbstractService { Set ownIdentities; try { ownIdentities = webOfTrustConnector.loadAllOwnIdentities(); + + /* check for changes. */ + for (OwnIdentity ownIdentity : ownIdentities) { + currentOwnIdentities.put(ownIdentity.getId(), ownIdentity); + } + checkOwnIdentities(currentOwnIdentities); + + /* now filter for context and get all identities. */ + currentOwnIdentities.clear(); for (OwnIdentity ownIdentity : ownIdentities) { if ((context != null) && !ownIdentity.hasContext(context)) { continue; @@ -273,8 +283,6 @@ public class IdentityManager extends AbstractService { } } - checkOwnIdentities(currentOwnIdentities); - /* find removed identities. */ for (Identity oldIdentity : oldIdentities.values()) { if (!currentIdentities.containsKey(oldIdentity.getId())) { @@ -289,6 +297,26 @@ public class IdentityManager extends AbstractService { } } + /* check for changes in the contexts. */ + for (Identity oldIdentity : oldIdentities.values()) { + if (!currentIdentities.containsKey(oldIdentity.getId())) { + continue; + } + Identity newIdentity = currentIdentities.get(oldIdentity.getId()); + Set oldContexts = oldIdentity.getContexts(); + Set newContexts = newIdentity.getContexts(); + if (oldContexts.size() != newContexts.size()) { + identityListenerManager.fireIdentityUpdated(newIdentity); + continue; + } + for (String oldContext : oldContexts) { + if (!newContexts.contains(oldContext)) { + identityListenerManager.fireIdentityUpdated(newIdentity); + break; + } + } + } + /* check for changes in the properties. */ for (Identity oldIdentity : oldIdentities.values()) { if (!currentIdentities.containsKey(oldIdentity.getId())) {