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
/* synchronize access on syncObject. */
private final Map<String, OwnIdentity> currentOwnIdentities = new HashMap<String, OwnIdentity>();
+ /** The last time all identities were loaded. */
+ private volatile long identitiesLastLoaded;
+
/**
* Creates a new identity manager.
*
* 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;
//
/**
+ * 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.
*
/* load trusted identities. */
for (OwnIdentity ownIdentity : ownIdentities) {
+ currentOwnIdentities.put(ownIdentity.getId(), ownIdentity);
+ Map<String, Identity> identities = new HashMap<String, Identity>();
+ 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<Identity> trustedIdentities = webOfTrustConnector.loadTrustedIdentities(ownIdentity, context);
- Map<String, Identity> identities = new HashMap<String, Identity>();
- 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);
}