X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ffreenet%2Fwot%2FIdentityManager.java;h=bca6ac11a962ddb961fc2c8e28b94395ec1c978b;hb=36a908ed376d95bbddc6473769edfb7b7e0fe446;hp=8e0b1244911063b2a4cfa754d5a4e19844c8010d;hpb=17ed3b897e37c8b16c559b79bfe97d32a7605bfb;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 8e0b124..bca6ac1 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java +++ b/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java @@ -19,6 +19,7 @@ package net.pterodactylus.sone.freenet.wot; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; import java.util.Set; @@ -26,8 +27,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import net.pterodactylus.sone.freenet.plugin.PluginException; -import net.pterodactylus.util.collection.mapper.Mapper; -import net.pterodactylus.util.collection.mapper.Mappers; import net.pterodactylus.util.logging.Logging; import net.pterodactylus.util.service.AbstractService; @@ -60,21 +59,28 @@ public class IdentityManager extends AbstractService { private final WebOfTrustConnector webOfTrustConnector; /** The context to filter for. */ - private volatile String context; + private final String context; /** The currently known own identities. */ /* synchronize access on syncObject. */ - private Map currentOwnIdentities = new HashMap(); + private final Map currentOwnIdentities = new HashMap(); + + /** The last time all identities were loaded. */ + private volatile long identitiesLastLoaded; /** * Creates a new identity manager. * * @param webOfTrustConnector * The Web of Trust connector + * @param context + * The context to focus on (may be {@code null} to ignore + * contexts) */ - public IdentityManager(WebOfTrustConnector webOfTrustConnector) { + public IdentityManager(WebOfTrustConnector webOfTrustConnector, String context) { super("Sone Identity Manager", false); this.webOfTrustConnector = webOfTrustConnector; + this.context = context; } // @@ -106,13 +112,13 @@ public class IdentityManager extends AbstractService { // /** - * Sets the context to filter own identities and trusted identities for. + * Returns the last time all identities were loaded. * - * @param context - * The context to filter for, or {@code null} to not filter + * @return The last time all identities were loaded (in milliseconds since + * Jan 1, 1970 UTC) */ - public void setContext(String context) { - this.context = context; + public long getIdentitiesLastLoaded() { + return identitiesLastLoaded; } /** @@ -155,27 +161,7 @@ public class IdentityManager extends AbstractService { * @return All own identities */ public Set getAllOwnIdentities() { - try { - Set ownIdentities = webOfTrustConnector.loadAllOwnIdentities(); - Map newOwnIdentities = new HashMap(); - for (OwnIdentity ownIdentity : ownIdentities) { - newOwnIdentities.put(ownIdentity.getId(), ownIdentity); - } - checkOwnIdentities(newOwnIdentities); - return Mappers.mappedSet(ownIdentities, new Mapper() { - - /** - * {@inheritDoc} - */ - @Override - public OwnIdentity map(OwnIdentity input) { - return new DefaultOwnIdentity(input); - } - }); - } catch (WebOfTrustException wote1) { - logger.log(Level.WARNING, "Could not load all own identities!", wote1); - return Collections.emptySet(); - } + return new HashSet(currentOwnIdentities.values()); } // @@ -213,6 +199,7 @@ public class IdentityManager extends AbstractService { } } identitiesLoaded = true; + identitiesLastLoaded = System.currentTimeMillis(); } catch (WebOfTrustException wote1) { logger.log(Level.WARNING, "WoT has disappeared!", wote1); }