From 17ed3b897e37c8b16c559b79bfe97d32a7605bfb Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Mon, 10 Sep 2012 13:28:56 +0200 Subject: [PATCH] Turn (Own)Identity into mere caches of values from the WebOfTrust. --- .../sone/freenet/wot/DefaultIdentity.java | 136 ++++++------------- .../sone/freenet/wot/DefaultOwnIdentity.java | 147 +-------------------- .../pterodactylus/sone/freenet/wot/Identity.java | 74 ++++++++++- .../sone/freenet/wot/IdentityManager.java | 9 +- .../sone/freenet/wot/OwnIdentity.java | 98 -------------- .../sone/freenet/wot/WebOfTrustConnector.java | 12 +- 6 files changed, 132 insertions(+), 344 deletions(-) diff --git a/src/main/java/net/pterodactylus/sone/freenet/wot/DefaultIdentity.java b/src/main/java/net/pterodactylus/sone/freenet/wot/DefaultIdentity.java index f200022..2ef33c3 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/wot/DefaultIdentity.java +++ b/src/main/java/net/pterodactylus/sone/freenet/wot/DefaultIdentity.java @@ -17,14 +17,12 @@ package net.pterodactylus.sone.freenet.wot; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; -import java.util.logging.Logger; - -import net.pterodactylus.util.logging.Logging; /** * A Web of Trust identity. @@ -33,12 +31,6 @@ import net.pterodactylus.util.logging.Logging; */ public class DefaultIdentity implements Identity { - /** The logger. */ - private static final Logger logger = Logging.getLogger(DefaultIdentity.class); - - /** The web of trust connector. */ - private final WebOfTrustConnector webOfTrustConnector; - /** The ID of the identity. */ private final String id; @@ -55,14 +47,11 @@ public class DefaultIdentity implements Identity { private final Map properties = Collections.synchronizedMap(new HashMap()); /** Cached trust. */ - /* synchronize on itself. */ - private final Map trustCache = new HashMap(); + private final Map trustCache = Collections.synchronizedMap(new HashMap()); /** * Creates a new identity. * - * @param webOfTrustConnector - * The web of trust connector * @param id * The ID of the identity * @param nickname @@ -70,8 +59,7 @@ public class DefaultIdentity implements Identity { * @param requestUri * The request URI of the identity */ - public DefaultIdentity(WebOfTrustConnector webOfTrustConnector, String id, String nickname, String requestUri) { - this.webOfTrustConnector = webOfTrustConnector; + public DefaultIdentity(String id, String nickname, String requestUri) { this.id = id; this.nickname = nickname; this.requestUri = requestUri; @@ -114,47 +102,35 @@ public class DefaultIdentity implements Identity { } /** - * Sets the contexts of this identity. - *

- * This method is only called by the {@link IdentityManager}. - * - * @param contexts - * The contexts to set + * {@inheritDoc} */ - void setContextsPrivate(Set contexts) { - this.contexts.clear(); - this.contexts.addAll(contexts); + @Override + public boolean hasContext(String context) { + return contexts.contains(context); } /** * {@inheritDoc} */ @Override - public boolean hasContext(String context) { - return contexts.contains(context); + public void setContexts(Collection contexts) { + this.contexts.clear(); + this.contexts.addAll(contexts); } /** - * Adds the given context to this identity. - *

- * This method is only called by the {@link IdentityManager}. - * - * @param context - * The context to add + * {@inheritDoc} */ - void addContextPrivate(String context) { + @Override + public void addContext(String context) { contexts.add(context); } /** - * Removes the given context from this identity. - *

- * This method is only called by the {@link IdentityManager}. - * - * @param context - * The context to remove + * {@inheritDoc} */ - public void removeContextPrivate(String context) { + @Override + public void removeContext(String context) { contexts.remove(context); } @@ -163,64 +139,40 @@ public class DefaultIdentity implements Identity { */ @Override public Map getProperties() { - synchronized (properties) { - return Collections.unmodifiableMap(properties); - } + return Collections.unmodifiableMap(properties); } /** - * Sets all properties of this identity. - *

- * This method is only called by the {@link IdentityManager}. - * - * @param properties - * The new properties of this identity + * {@inheritDoc} */ - void setPropertiesPrivate(Map properties) { - synchronized (this.properties) { - this.properties.clear(); - this.properties.putAll(properties); - } + @Override + public void setProperties(Map properties) { + this.properties.clear(); + this.properties.putAll(properties); } /** - * Sets the property with the given name to the given value. - *

- * This method is only called by the {@link IdentityManager}. - * - * @param name - * The name of the property - * @param value - * The value of the property + * {@inheritDoc} */ - void setPropertyPrivate(String name, String value) { - synchronized (properties) { - properties.put(name, value); - } + @Override + public String getProperty(String name) { + return properties.get(name); } /** * {@inheritDoc} */ @Override - public String getProperty(String name) { - synchronized (properties) { - return properties.get(name); - } + public void setProperty(String name, String value) { + properties.put(name, value); } /** - * Removes the property with the given name. - *

- * This method is only called by the {@link IdentityManager}. - * - * @param name - * The name of the property to remove + * {@inheritDoc} */ - void removePropertyPrivate(String name) { - synchronized (properties) { - properties.remove(name); - } + @Override + public void removeProperty(String name) { + properties.remove(name); } /** @@ -228,23 +180,23 @@ public class DefaultIdentity implements Identity { */ @Override public Trust getTrust(OwnIdentity ownIdentity) { - synchronized (trustCache) { - return trustCache.get(ownIdentity); - } + return trustCache.get(ownIdentity); } /** - * Sets the trust received for this identity by the given own identity. - * - * @param ownIdentity - * The own identity that gives the trust - * @param trust - * The trust received for this identity + * {@inheritDoc} */ + @Override public void setTrust(OwnIdentity ownIdentity, Trust trust) { - synchronized (trustCache) { - trustCache.put(ownIdentity, trust); - } + trustCache.put(ownIdentity, trust); + } + + /** + * {@inheritDoc} + */ + @Override + public void removeTrust(OwnIdentity ownIdentity) { + trustCache.remove(ownIdentity); } // diff --git a/src/main/java/net/pterodactylus/sone/freenet/wot/DefaultOwnIdentity.java b/src/main/java/net/pterodactylus/sone/freenet/wot/DefaultOwnIdentity.java index 6acdd70..451dd5f 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/wot/DefaultOwnIdentity.java +++ b/src/main/java/net/pterodactylus/sone/freenet/wot/DefaultOwnIdentity.java @@ -17,12 +17,6 @@ package net.pterodactylus.sone.freenet.wot; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import net.pterodactylus.util.validation.Validation; - /** * An own identity is an identity that the owner of the node has full control * over. @@ -31,17 +25,12 @@ import net.pterodactylus.util.validation.Validation; */ public class DefaultOwnIdentity extends DefaultIdentity implements OwnIdentity { - /** The identity manager. */ - private final WebOfTrustConnector webOfTrustConnector; - /** The insert URI of the identity. */ private final String insertUri; /** * Creates a new own identity. * - * @param webOfTrustConnector - * The identity manager * @param id * The ID of the identity * @param nickname @@ -51,26 +40,22 @@ public class DefaultOwnIdentity extends DefaultIdentity implements OwnIdentity { * @param insertUri * The insert URI of the identity */ - public DefaultOwnIdentity(WebOfTrustConnector webOfTrustConnector, String id, String nickname, String requestUri, String insertUri) { - super(webOfTrustConnector, id, nickname, requestUri); - this.webOfTrustConnector = webOfTrustConnector; + public DefaultOwnIdentity(String id, String nickname, String requestUri, String insertUri) { + super(id, nickname, requestUri); this.insertUri = insertUri; } /** * Copy constructor for an own identity. * - * @param webOfTrustConnector - * The web of trust connector * @param ownIdentity * The own identity to copy */ - public DefaultOwnIdentity(WebOfTrustConnector webOfTrustConnector, OwnIdentity ownIdentity) { - super(webOfTrustConnector, ownIdentity.getId(), ownIdentity.getNickname(), ownIdentity.getRequestUri()); - this.webOfTrustConnector = webOfTrustConnector; + public DefaultOwnIdentity(OwnIdentity ownIdentity) { + super(ownIdentity.getId(), ownIdentity.getNickname(), ownIdentity.getRequestUri()); this.insertUri = ownIdentity.getInsertUri(); - setContextsPrivate(ownIdentity.getContexts()); - setPropertiesPrivate(ownIdentity.getProperties()); + setContexts(ownIdentity.getContexts()); + setProperties(ownIdentity.getProperties()); } // @@ -85,124 +70,4 @@ public class DefaultOwnIdentity extends DefaultIdentity implements OwnIdentity { return insertUri; } - /** - * {@inheritDoc} - */ - @Override - public void addContext(String context) throws WebOfTrustException { - webOfTrustConnector.addContext(this, context); - addContextPrivate(context); - } - - /** - * {@inheritDoc} - */ - @Override - public void removeContext(String context) throws WebOfTrustException { - webOfTrustConnector.removeContext(this, context); - removeContextPrivate(context); - } - - /** - * {@inheritDoc} - */ - @Override - public void setContexts(Set contexts) throws WebOfTrustException { - for (String context : getContexts()) { - if (!contexts.contains(context)) { - webOfTrustConnector.removeContext(this, context); - } - } - for (String context : contexts) { - if (!getContexts().contains(context)) { - webOfTrustConnector.addContext(this, context); - } - } - setContextsPrivate(contexts); - } - - /** - * {@inheritDoc} - */ - @Override - public void setProperty(String name, String value) throws WebOfTrustException { - webOfTrustConnector.setProperty(this, name, value); - setPropertyPrivate(name, value); - } - - /** - * {@inheritDoc} - */ - @Override - public void removeProperty(String name) throws WebOfTrustException { - webOfTrustConnector.removeProperty(this, name); - removePropertyPrivate(name); - } - - /** - * {@inheritDoc} - */ - @Override - public void setProperties(Map properties) throws WebOfTrustException { - for (Entry oldProperty : getProperties().entrySet()) { - if (!properties.containsKey(oldProperty.getKey())) { - webOfTrustConnector.removeProperty(this, oldProperty.getKey()); - } else { - webOfTrustConnector.setProperty(this, oldProperty.getKey(), properties.get(oldProperty.getKey())); - } - } - for (Entry newProperty : properties.entrySet()) { - if (!getProperties().containsKey(newProperty.getKey())) { - webOfTrustConnector.setProperty(this, newProperty.getKey(), newProperty.getValue()); - } - } - setPropertiesPrivate(properties); - } - - /** - * {@inheritDoc} - */ - @Override - public void setTrust(Identity target, int trustValue, String comment) throws WebOfTrustException { - Validation.begin().isNotNull("Trust Target", target).isNotNull("Trust Comment", comment).isLessOrEqual("Trust Value", trustValue, 100).isGreaterOrEqual("Trust Value", trustValue, -100).check(); - webOfTrustConnector.setTrust(this, target, trustValue, comment); - if (target instanceof DefaultIdentity) { - ((DefaultIdentity) target).setTrust(this, new Trust(trustValue, trustValue, 0)); - } - } - - /** - * {@inheritDoc} - */ - @Override - public void removeTrust(Identity target) throws WebOfTrustException { - Validation.begin().isNotNull("Trust Target", target).check(); - webOfTrustConnector.removeTrust(this, target); - if (target instanceof DefaultIdentity) { - ((DefaultIdentity) target).setTrust(this, new Trust(null, null, null)); - } - } - - // - // OBJECT METHODS - // - - /** - * {@inheritDoc} - */ - @Override - public int hashCode() { - /* The hash of DefaultIdentity is fine. */ - return super.hashCode(); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object object) { - /* The ID of the superclass is still enough. */ - return super.equals(object); - } - } 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 0a9fb93..2849da9 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/wot/Identity.java +++ b/src/main/java/net/pterodactylus/sone/freenet/wot/Identity.java @@ -17,13 +17,14 @@ package net.pterodactylus.sone.freenet.wot; +import java.util.Collection; import java.util.Map; import java.util.Set; /** * Interface for web of trust identities, defining all functions that can be - * performed on an identity. The identity is the main entry point for identity - * management. + * performed on an identity. An identity is only a container for identity data + * and will not perform any updating in the WebOfTrust plugin itself. * * @author David ‘Bombe’ Roden */ @@ -68,6 +69,30 @@ public interface Identity { public boolean hasContext(String context); /** + * Adds the given context to this identity. + * + * @param context + * The context to add + */ + public void addContext(String context); + + /** + * Sets all contexts of this identity. + * + * @param contexts + * All contexts of the identity + */ + public void setContexts(Collection contexts); + + /** + * Removes the given context from this identity. + * + * @param context + * The context to remove + */ + public void removeContext(String context); + + /** * Returns all properties of this identity. * * @return All properties of this identity @@ -84,6 +109,32 @@ public interface Identity { public String getProperty(String name); /** + * Sets the property with the given name to the given value. + * + * @param name + * The name of the property + * @param value + * The value of the property + */ + public void setProperty(String name, String value); + + /** + * Sets all properties of this identity. + * + * @param properties + * The new properties of this identity + */ + public void setProperties(Map properties); + + /** + * Removes the property with the given name. + * + * @param name + * The name of the property to remove + */ + public void removeProperty(String name); + + /** * Retrieves the trust that this identity receives from the given own * identity. If this identity is not in the own identity’s trust tree, a * {@link Trust} is returned that has all its elements set to {@code null}. @@ -96,4 +147,23 @@ public interface Identity { */ public Trust getTrust(OwnIdentity ownIdentity); + /** + * Sets the trust given by an own identity to this identity. + * + * @param ownIdentity + * The own identity that gave trust to this identity + * @param trust + * The trust given by the given own identity + */ + public void setTrust(OwnIdentity ownIdentity, Trust trust); + + /** + * Removes trust assignment from the given own identity for this identity. + * + * @param ownIdentity + * The own identity that removed the trust assignment for this + * identity + */ + public void removeTrust(OwnIdentity ownIdentity); + } 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 32c0d27..8e0b124 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java +++ b/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java @@ -143,7 +143,7 @@ public class IdentityManager extends AbstractService { Set allOwnIdentities = getAllOwnIdentities(); for (OwnIdentity ownIdentity : allOwnIdentities) { if (ownIdentity.getId().equals(id)) { - return new DefaultOwnIdentity(webOfTrustConnector, ownIdentity); + return new DefaultOwnIdentity(ownIdentity); } } return null; @@ -168,9 +168,8 @@ public class IdentityManager extends AbstractService { * {@inheritDoc} */ @Override - @SuppressWarnings("synthetic-access") public OwnIdentity map(OwnIdentity input) { - return new DefaultOwnIdentity(webOfTrustConnector, input); + return new DefaultOwnIdentity(input); } }); } catch (WebOfTrustException wote1) { @@ -310,7 +309,7 @@ public class IdentityManager extends AbstractService { for (OwnIdentity oldOwnIdentity : currentOwnIdentities.values()) { OwnIdentity newOwnIdentity = newOwnIdentities.get(oldOwnIdentity.getId()); if ((newOwnIdentity == null) || ((context != null) && oldOwnIdentity.hasContext(context) && !newOwnIdentity.hasContext(context))) { - identityListenerManager.fireOwnIdentityRemoved(new DefaultOwnIdentity(webOfTrustConnector, oldOwnIdentity)); + identityListenerManager.fireOwnIdentityRemoved(new DefaultOwnIdentity(oldOwnIdentity)); } } @@ -318,7 +317,7 @@ public class IdentityManager extends AbstractService { for (OwnIdentity currentOwnIdentity : newOwnIdentities.values()) { OwnIdentity oldOwnIdentity = currentOwnIdentities.get(currentOwnIdentity.getId()); if (((oldOwnIdentity == null) && ((context == null) || currentOwnIdentity.hasContext(context))) || ((oldOwnIdentity != null) && (context != null) && (!oldOwnIdentity.hasContext(context) && currentOwnIdentity.hasContext(context)))) { - identityListenerManager.fireOwnIdentityAdded(new DefaultOwnIdentity(webOfTrustConnector, currentOwnIdentity)); + identityListenerManager.fireOwnIdentityAdded(new DefaultOwnIdentity(currentOwnIdentity)); } } 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 6c6224f..4272669 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/wot/OwnIdentity.java +++ b/src/main/java/net/pterodactylus/sone/freenet/wot/OwnIdentity.java @@ -17,8 +17,6 @@ package net.pterodactylus.sone.freenet.wot; -import java.util.Map; -import java.util.Set; /** * Defines a local identity, an own identity. @@ -34,100 +32,4 @@ public interface OwnIdentity extends Identity { */ public String getInsertUri(); - /** - * Adds the given context to this identity. - *

- * This method is only called by the {@link IdentityManager}. - * - * @param context - * The context to add - * @throws WebOfTrustException - * if an error occurs - */ - public void addContext(String context) throws WebOfTrustException; - - /** - * Sets all contexts of this identity. - *

- * This method is only called by the {@link IdentityManager}. - * - * @param contexts - * All contexts of the identity - * @throws WebOfTrustException - * if an error occurs - */ - public void setContexts(Set contexts) throws WebOfTrustException; - - /** - * Removes the given context from this identity. - *

- * This method is only called by the {@link IdentityManager}. - * - * @param context - * The context to remove - * @throws WebOfTrustException - * if an error occurs - */ - public void removeContext(String context) throws WebOfTrustException; - - /** - * Sets the property with the given name to the given value. - * - * @param name - * The name of the property - * @param value - * The value of the property - * @throws WebOfTrustException - * if an error occurs - */ - public void setProperty(String name, String value) throws WebOfTrustException; - - /** - * Sets all properties of this identity. - *

- * This method is only called by the {@link IdentityManager}. - * - * @param properties - * The new properties of this identity - * @throws WebOfTrustException - * if an error occurs - */ - public void setProperties(Map properties) throws WebOfTrustException; - - /** - * Removes the property with the given name. - *

- * This method is only called by the {@link IdentityManager}. - * - * @param name - * The name of the property to remove - * @throws WebOfTrustException - * if an error occurs - */ - public void removeProperty(String name) throws WebOfTrustException; - - /** - * Sets the trust for the given target identity. - * - * @param target - * The target to set the trust for - * @param trustValue - * The new trust value (from {@code -100} or {@code 100}) - * @param comment - * The comment for the trust assignment - * @throws WebOfTrustException - * if an error occurs - */ - public void setTrust(Identity target, int trustValue, String comment) throws WebOfTrustException; - - /** - * Removes any trust assignment for the given target identity. - * - * @param target - * The targe to remove the trust assignment for - * @throws WebOfTrustException - * if an error occurs - */ - public void removeTrust(Identity target) throws WebOfTrustException; - } 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 a7c6524..435f078 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/wot/WebOfTrustConnector.java +++ b/src/main/java/net/pterodactylus/sone/freenet/wot/WebOfTrustConnector.java @@ -99,9 +99,9 @@ public class WebOfTrustConnector implements ConnectorListener { String requestUri = fields.get("RequestURI" + ownIdentityCounter); String insertUri = fields.get("InsertURI" + ownIdentityCounter); String nickname = fields.get("Nickname" + ownIdentityCounter); - DefaultOwnIdentity ownIdentity = new DefaultOwnIdentity(this, id, nickname, requestUri, insertUri); - ownIdentity.setContextsPrivate(parseContexts("Contexts" + ownIdentityCounter + ".", fields)); - ownIdentity.setPropertiesPrivate(parseProperties("Properties" + ownIdentityCounter + ".", fields)); + DefaultOwnIdentity ownIdentity = new DefaultOwnIdentity(id, nickname, requestUri, insertUri); + ownIdentity.setContexts(parseContexts("Contexts" + ownIdentityCounter + ".", fields)); + ownIdentity.setProperties(parseProperties("Properties" + ownIdentityCounter + ".", fields)); ownIdentities.add(ownIdentity); } return ownIdentities; @@ -145,9 +145,9 @@ public class WebOfTrustConnector implements ConnectorListener { } String nickname = fields.get("Nickname" + identityCounter); String requestUri = fields.get("RequestURI" + identityCounter); - DefaultIdentity identity = new DefaultIdentity(this, id, nickname, requestUri); - identity.setContextsPrivate(parseContexts("Contexts" + identityCounter + ".", fields)); - identity.setPropertiesPrivate(parseProperties("Properties" + identityCounter + ".", fields)); + DefaultIdentity identity = new DefaultIdentity(id, nickname, requestUri); + identity.setContexts(parseContexts("Contexts" + identityCounter + ".", fields)); + identity.setProperties(parseProperties("Properties" + identityCounter + ".", fields)); identities.add(identity); } return identities; -- 2.7.4