X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ffreenet%2Fwot%2FIdentityManager.java;h=04d95611cfa194583ff5b7adaf6785a86c32cb7a;hb=5d8f3ac133544177412ec3c533e5f5f92a7b1c35;hp=6152c4bb40c4c00884289023d792c187d494e703;hpb=e8b0e80a1fda90e908b26d4d138092239fab1ed5;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 6152c4b..04d9561 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java +++ b/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java @@ -30,6 +30,9 @@ import net.pterodactylus.sone.freenet.plugin.PluginException; import net.pterodactylus.util.logging.Logging; import net.pterodactylus.util.service.AbstractService; +import com.google.inject.Inject; +import com.google.inject.name.Named; + /** * The identity manager takes care of loading and storing identities, their * contexts, and properties. It does so in a way that does not expose errors via @@ -65,6 +68,9 @@ public class IdentityManager extends AbstractService { /* synchronize access on syncObject. */ private final Map currentOwnIdentities = new HashMap(); + /** The last time all identities were loaded. */ + private volatile long identitiesLastLoaded; + /** * Creates a new identity manager. * @@ -74,7 +80,8 @@ public class IdentityManager extends AbstractService { * The context to focus on (may be {@code null} to ignore * contexts) */ - public IdentityManager(WebOfTrustConnector webOfTrustConnector, String context) { + @Inject + public IdentityManager(WebOfTrustConnector webOfTrustConnector, @Named("WebOfTrustContext") String context) { super("Sone Identity Manager", false); this.webOfTrustConnector = webOfTrustConnector; this.context = context; @@ -109,6 +116,16 @@ public class IdentityManager extends AbstractService { // /** + * Returns the last time all identities were loaded. + * + * @return The last time all identities were loaded (in milliseconds since + * Jan 1, 1970 UTC) + */ + public long getIdentitiesLastLoaded() { + return identitiesLastLoaded; + } + + /** * Returns whether the Web of Trust plugin could be reached during the last * try. * @@ -173,19 +190,23 @@ public class IdentityManager extends AbstractService { /* load trusted identities. */ for (OwnIdentity ownIdentity : ownIdentities) { + currentOwnIdentities.put(ownIdentity.getId(), ownIdentity); + Map identities = new HashMap(); + currentIdentities.put(ownIdentity, identities); + + /* if the context doesn’t match, skip getting trusted identities. */ if ((context != null) && !ownIdentity.hasContext(context)) { continue; } - currentOwnIdentities.put(ownIdentity.getId(), ownIdentity); + /* load trusted identities. */ Set trustedIdentities = webOfTrustConnector.loadTrustedIdentities(ownIdentity, context); - Map identities = new HashMap(); - currentIdentities.put(ownIdentity, identities); for (Identity identity : trustedIdentities) { identities.put(identity.getId(), identity); } } identitiesLoaded = true; + identitiesLastLoaded = System.currentTimeMillis(); } catch (WebOfTrustException wote1) { logger.log(Level.WARNING, "WoT has disappeared!", wote1); }