2 * Sone - Identity.java - Copyright © 2010–2016 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 com.google.common.base.Function;
28 * Interface for web of trust identities, defining all functions that can be
29 * performed on an identity. An identity is only a container for identity data
30 * and will not perform any updating in the WebOfTrust plugin itself.
32 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
34 public interface Identity {
36 public static final Function<Identity, Set<String>> TO_CONTEXTS = new Function<Identity, Set<String>>() {
38 public Set<String> apply(Identity identity) {
39 return (identity == null) ? Collections.<String>emptySet() : identity.getContexts();
43 public static final Function<Identity, Map<String, String>> TO_PROPERTIES = new Function<Identity, Map<String, String>>() {
45 public Map<String, String> apply(Identity input) {
46 return (input == null) ? Collections.<String, String>emptyMap() : input.getProperties();
51 * Returns the ID of the identity.
53 * @return The ID of the identity
55 public String getId();
58 * Returns the nickname of the identity.
60 * @return The nickname of the identity
62 public String getNickname();
65 * Returns the request URI of the identity.
67 * @return The request URI of the identity
69 public String getRequestUri();
72 * Returns all contexts of this identity.
74 * @return All contexts of this identity
76 public Set<String> getContexts();
79 * Returns whether this identity has the given context.
82 * The context to check for
83 * @return {@code true} if this identity has the given context,
84 * {@code false} otherwise
86 public boolean hasContext(String context);
89 * Adds the given context to this identity.
94 public Identity addContext(String context);
97 * Sets all contexts of this identity.
100 * All contexts of the identity
102 public void setContexts(Collection<String> contexts);
105 * Removes the given context from this identity.
108 * The context to remove
110 public Identity removeContext(String context);
113 * Returns all properties of this identity.
115 * @return All properties of this identity
117 public Map<String, String> getProperties();
120 * Returns the value of the property with the given name.
123 * The name of the property
124 * @return The value of the property
126 public String getProperty(String name);
129 * Sets the property with the given name to the given value.
132 * The name of the property
134 * The value of the property
136 public Identity setProperty(String name, String value);
139 * Sets all properties of this identity.
142 * The new properties of this identity
144 public void setProperties(Map<String, String> properties);
147 * Removes the property with the given name.
150 * The name of the property to remove
152 public Identity removeProperty(String name);
155 * Retrieves the trust that this identity receives from the given own
156 * identity. If this identity is not in the own identity’s trust tree, a
157 * {@link Trust} is returned that has all its elements set to {@code null}.
158 * If the trust can not be retrieved, {@code null} is returned.
161 * The own identity to get the trust for
162 * @return The trust assigned to this identity, or {@code null} if the trust
163 * could not be retrieved
165 public Trust getTrust(OwnIdentity ownIdentity);
168 * Sets the trust given by an own identity to this identity.
171 * The own identity that gave trust to this identity
173 * The trust given by the given own identity
175 public Identity setTrust(OwnIdentity ownIdentity, Trust trust);
178 * Removes trust assignment from the given own identity for this identity.
181 * The own identity that removed the trust assignment for this
184 public Identity removeTrust(OwnIdentity ownIdentity);