/*
- * Sone - DefaultIdentity.java - Copyright © 2010 David Roden
+ * Sone - DefaultIdentity.java - Copyright © 2010–2012 David Roden
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
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 net.pterodactylus.sone.freenet.plugin.PluginException;
-import net.pterodactylus.util.cache.Cache;
-import net.pterodactylus.util.cache.CacheException;
-import net.pterodactylus.util.cache.CacheItem;
-import net.pterodactylus.util.cache.DefaultCacheItem;
-import net.pterodactylus.util.cache.MemoryCache;
-import net.pterodactylus.util.cache.ValueRetriever;
-
/**
* A Web of Trust identity.
*
*/
public class DefaultIdentity implements Identity {
- /** The web of trust connector. */
- private final WebOfTrustConnector webOfTrustConnector;
-
/** The ID of the identity. */
private final String id;
private final Map<String, String> properties = Collections.synchronizedMap(new HashMap<String, String>());
/** Cached trust. */
- private final Cache<OwnIdentity, Trust> trustCache = new MemoryCache<OwnIdentity, Trust>(new ValueRetriever<OwnIdentity, Trust>() {
-
- @Override
- @SuppressWarnings("synthetic-access")
- public CacheItem<Trust> retrieve(OwnIdentity ownIdentity) throws CacheException {
- try {
- return new DefaultCacheItem<Trust>(webOfTrustConnector.getTrust(ownIdentity, DefaultIdentity.this));
- } catch (PluginException pe1) {
- throw new CacheException("Could not retrieve trust for OwnIdentity: " + ownIdentity, pe1);
- }
- }
-
- });
+ 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
* @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;
}
/**
- * 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);
}
*/
@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);
}
/**
* {@inheritDoc}
*/
@Override
- public Trust getTrust(OwnIdentity ownIdentity) throws WebOfTrustException {
- try {
- return trustCache.get(ownIdentity);
- } catch (CacheException ce1) {
- throw new WebOfTrustException("Could not get trust for OwnIdentity: " + ownIdentity, ce1);
- }
+ public Trust getTrust(OwnIdentity ownIdentity) {
+ return trustCache.get(ownIdentity);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setTrust(OwnIdentity ownIdentity, Trust trust) {
+ trustCache.put(ownIdentity, trust);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void removeTrust(OwnIdentity ownIdentity) {
+ trustCache.remove(ownIdentity);
}
//