From: David ‘Bombe’ Roden Date: Fri, 29 Oct 2010 20:08:25 +0000 (+0200) Subject: Implement Identity.getContexts(). X-Git-Tag: 0.2-RC1~93 X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=da6c0a57ac23f13e25a2347237ef3d9ac52ac332;p=Sone.git Implement Identity.getContexts(). --- diff --git a/src/main/java/net/pterodactylus/sone/freenet/wot/Identity.java b/src/main/java/net/pterodactylus/sone/freenet/wot/Identity.java index c3053ae..2909936 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/wot/Identity.java +++ b/src/main/java/net/pterodactylus/sone/freenet/wot/Identity.java @@ -30,6 +30,9 @@ import java.util.Set; */ public class Identity { + /** The Web of Trust connector. */ + protected final WebOfTrustConnector webOfTrustConnector; + /** The ID of the identity. */ private final String id; @@ -48,6 +51,8 @@ public class Identity { /** * Creates a new identity. * + * @param webOfTrustConnector + * The Web of Trust connector * @param id * The ID of the identity * @param nickname @@ -55,7 +60,8 @@ public class Identity { * @param requestUri * The request URI of the identity */ - public Identity(String id, String nickname, String requestUri) { + public Identity(WebOfTrustConnector webOfTrustConnector, String id, String nickname, String requestUri) { + this.webOfTrustConnector = webOfTrustConnector; this.id = id; this.nickname = nickname; this.requestUri = requestUri; @@ -96,8 +102,30 @@ public class Identity { * Returns the contexts of the identity. * * @return The contexts of the identity + * @throws PluginException + * if an error occured communicating with the Web of Trust + * plugin */ - public Set getContexts() { + public Set getContexts() throws PluginException { + return getContexts(false); + } + + /** + * Returns the contexts of the identity. + * + * @param forceReload + * {@code true} to force a reload of the contexts + * @return The contexts of the identity + * @throws PluginException + * if an error occured communicating with the Web of Trust + * plugin + */ + public Set getContexts(boolean forceReload) throws PluginException { + if (contexts.isEmpty() || forceReload) { + Set contexts = webOfTrustConnector.loadIdentityContexts(this); + this.contexts.clear(); + this.contexts.addAll(contexts); + } return Collections.unmodifiableSet(contexts); } diff --git a/src/main/java/net/pterodactylus/sone/freenet/wot/OwnIdentity.java b/src/main/java/net/pterodactylus/sone/freenet/wot/OwnIdentity.java index 626c4a8..cfcab65 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/wot/OwnIdentity.java +++ b/src/main/java/net/pterodactylus/sone/freenet/wot/OwnIdentity.java @@ -31,6 +31,8 @@ public class OwnIdentity extends Identity { /** * Creates a new own identity. * + * @param webOfTrustConnector + * The Web of Trust connector * @param id * The ID of the identity * @param nickname @@ -40,8 +42,8 @@ public class OwnIdentity extends Identity { * @param insertUri * The insert URI of the identity */ - public OwnIdentity(String id, String nickname, String requestUri, String insertUri) { - super(id, nickname, requestUri); + public OwnIdentity(WebOfTrustConnector webOfTrustConnector, String id, String nickname, String requestUri, String insertUri) { + super(webOfTrustConnector, id, nickname, requestUri); this.insertUri = insertUri; } diff --git a/src/main/java/net/pterodactylus/sone/freenet/wot/WebOfTrustConnector.java b/src/main/java/net/pterodactylus/sone/freenet/wot/WebOfTrustConnector.java index 65b7ce8..100241e 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/wot/WebOfTrustConnector.java +++ b/src/main/java/net/pterodactylus/sone/freenet/wot/WebOfTrustConnector.java @@ -87,12 +87,36 @@ public class WebOfTrustConnector implements ConnectorListener { String requestUri = fields.get("RequestURI" + ownIdentityCounter); String insertUri = fields.get("InsertURI" + ownIdentityCounter); String nickname = fields.get("Nickname" + ownIdentityCounter); - OwnIdentity ownIdentity = new OwnIdentity(id, nickname, requestUri, insertUri); + OwnIdentity ownIdentity = new OwnIdentity(this, id, nickname, requestUri, insertUri); ownIdentities.add(ownIdentity); } return ownIdentities; } + /** + * Loads the contexts of the given identity. + * + * @param identity + * The identity to load the contexts for + * @return The contexts of the identity + * @throws PluginException + * if an error occured talking to the Web of Trust plugin + */ + public Set loadIdentityContexts(Identity identity) throws PluginException { + Reply reply = performRequest("Identity", SimpleFieldSetConstructor.create().put("Message", "GetIdentity").put("TreeOwner", identity.getId()).put("Identity", identity.getId()).get()); + SimpleFieldSet fields = reply.getFields(); + int contextCounter = -1; + Set contexts = new HashSet(); + while (true) { + String context = fields.get("Context" + ++contextCounter); + if (context == null) { + break; + } + contexts.add(context); + } + return contexts; + } + // // PRIVATE ACTIONS //