2 * Sone - Identity.java - Copyright © 2010–2013 David Roden
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 package net.pterodactylus.sone.freenet.wot;
20 import java.util.Collection;
21 import java.util.Collections;
25 import javax.annotation.Nullable;
27 import com.google.common.base.Function;
30 * Interface for web of trust identities, defining all functions that can be
31 * performed on an identity. An identity is only a container for identity data
32 * and will not perform any updating in the WebOfTrust plugin itself.
34 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
36 public interface Identity {
38 final Function<Identity, Collection<String>> TO_CONTEXTS = new Function<Identity, Collection<String>>() {
40 public Collection<String> apply(@Nullable Identity identity) {
41 return (identity == null) ? Collections.<String>emptyList() : identity.getContexts();
45 final Function<Identity, Map<String, String>> TO_PROPERTIES = new Function<Identity, Map<String, String>>() {
47 public Map<String, String> apply(@Nullable Identity identity) {
48 return (identity == null) ? Collections.<String, String>emptyMap() : identity.getProperties();
53 * Returns the ID of the identity.
55 * @return The ID of the identity
57 public String getId();
60 * Returns the nickname of the identity.
62 * @return The nickname of the identity
64 public String getNickname();
67 * Returns the request URI of the identity.
69 * @return The request URI of the identity
71 public String getRequestUri();
74 * Returns all contexts of this identity.
76 * @return All contexts of this identity
78 public Set<String> getContexts();
81 * Returns whether this identity has the given context.
84 * The context to check for
85 * @return {@code true} if this identity has the given context,
86 * {@code false} otherwise
88 public boolean hasContext(String context);
91 * Adds the given context to this identity.
96 public void addContext(String context);
99 * Sets all contexts of this identity.
102 * All contexts of the identity
104 public void setContexts(Collection<String> contexts);
107 * Removes the given context from this identity.
110 * The context to remove
112 public void removeContext(String context);
115 * Returns all properties of this identity.
117 * @return All properties of this identity
119 public Map<String, String> getProperties();
122 * Returns the value of the property with the given name.
125 * The name of the property
126 * @return The value of the property
128 public String getProperty(String name);
131 * Sets the property with the given name to the given value.
134 * The name of the property
136 * The value of the property
138 public void setProperty(String name, String value);
141 * Sets all properties of this identity.
144 * The new properties of this identity
146 public void setProperties(Map<String, String> properties);
149 * Removes the property with the given name.
152 * The name of the property to remove
154 public void removeProperty(String name);
157 * Retrieves the trust that this identity receives from the given own
158 * identity. If this identity is not in the own identity’s trust tree, a
159 * {@link Trust} is returned that has all its elements set to {@code null}.
160 * If the trust can not be retrieved, {@code null} is returned.
163 * The own identity to get the trust for
164 * @return The trust assigned to this identity, or {@code null} if the trust
165 * could not be retrieved
167 public Trust getTrust(OwnIdentity ownIdentity);
170 * Sets the trust given by an own identity to this identity.
173 * The own identity that gave trust to this identity
175 * The trust given by the given own identity
177 public void setTrust(OwnIdentity ownIdentity, Trust trust);
180 * Removes trust assignment from the given own identity for this identity.
183 * The own identity that removed the trust assignment for this
186 public void removeTrust(OwnIdentity ownIdentity);