Turn (Own)Identity into mere caches of values from the WebOfTrust.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Mon, 10 Sep 2012 11:28:56 +0000 (13:28 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Mon, 10 Sep 2012 11:32:32 +0000 (13:32 +0200)
src/main/java/net/pterodactylus/sone/freenet/wot/DefaultIdentity.java
src/main/java/net/pterodactylus/sone/freenet/wot/DefaultOwnIdentity.java
src/main/java/net/pterodactylus/sone/freenet/wot/Identity.java
src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java
src/main/java/net/pterodactylus/sone/freenet/wot/OwnIdentity.java
src/main/java/net/pterodactylus/sone/freenet/wot/WebOfTrustConnector.java

index f200022..2ef33c3 100644 (file)
 
 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<String, String> properties = Collections.synchronizedMap(new HashMap<String, String>());
 
        /** Cached trust. */
-       /* synchronize on itself. */
-       private final Map<OwnIdentity, Trust> trustCache = new HashMap<OwnIdentity, Trust>();
+       private final Map<OwnIdentity, Trust> trustCache = Collections.synchronizedMap(new HashMap<OwnIdentity, Trust>());
 
        /**
         * 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.
-        * <p>
-        * This method is only called by the {@link IdentityManager}.
-        *
-        * @param contexts
-        *            The contexts to set
+        * {@inheritDoc}
         */
-       void setContextsPrivate(Set<String> 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<String> contexts) {
+               this.contexts.clear();
+               this.contexts.addAll(contexts);
        }
 
        /**
-        * Adds the given context to this identity.
-        * <p>
-        * 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.
-        * <p>
-        * 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<String, String> getProperties() {
-               synchronized (properties) {
-                       return Collections.unmodifiableMap(properties);
-               }
+               return Collections.unmodifiableMap(properties);
        }
 
        /**
-        * Sets all properties of this identity.
-        * <p>
-        * This method is only called by the {@link IdentityManager}.
-        *
-        * @param properties
-        *            The new properties of this identity
+        * {@inheritDoc}
         */
-       void setPropertiesPrivate(Map<String, String> properties) {
-               synchronized (this.properties) {
-                       this.properties.clear();
-                       this.properties.putAll(properties);
-               }
+       @Override
+       public void setProperties(Map<String, String> properties) {
+               this.properties.clear();
+               this.properties.putAll(properties);
        }
 
        /**
-        * Sets the property with the given name to the given value.
-        * <p>
-        * 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.
-        * <p>
-        * 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);
        }
 
        //
index 6acdd70..451dd5f 100644 (file)
 
 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<String> 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<String, String> properties) throws WebOfTrustException {
-               for (Entry<String, String> 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<String, String> 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);
-       }
-
 }
index 0a9fb93..2849da9 100644 (file)
 
 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 <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
@@ -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<String> 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<String, String> 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);
+
 }
index 32c0d27..8e0b124 100644 (file)
@@ -143,7 +143,7 @@ public class IdentityManager extends AbstractService {
                Set<OwnIdentity> 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));
                                }
                        }
 
index 6c6224f..4272669 100644 (file)
@@ -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.
-        * <p>
-        * 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.
-        * <p>
-        * 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<String> contexts) throws WebOfTrustException;
-
-       /**
-        * Removes the given context from this identity.
-        * <p>
-        * 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.
-        * <p>
-        * 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<String, String> properties) throws WebOfTrustException;
-
-       /**
-        * Removes the property with the given name.
-        * <p>
-        * 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;
-
 }
index a7c6524..435f078 100644 (file)
@@ -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;