2 * Sone - Identity.java - Copyright © 2010–2019 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 public interface Identity {
35 * Returns the ID of the identity.
37 * @return The ID of the identity
39 public String getId();
42 * Returns the nickname of the identity.
44 * @return The nickname of the identity
46 public String getNickname();
49 * Returns the request URI of the identity.
51 * @return The request URI of the identity
53 public String getRequestUri();
56 * Returns all contexts of this identity.
58 * @return All contexts of this identity
60 public Set<String> getContexts();
63 * Returns whether this identity has the given context.
66 * The context to check for
67 * @return {@code true} if this identity has the given context,
68 * {@code false} otherwise
70 public boolean hasContext(String context);
73 * Adds the given context to this identity.
78 public Identity addContext(String context);
81 * Sets all contexts of this identity.
84 * All contexts of the identity
86 public void setContexts(Set<String> contexts);
89 * Removes the given context from this identity.
92 * The context to remove
94 public Identity removeContext(String context);
97 * Returns all properties of this identity.
99 * @return All properties of this identity
101 public Map<String, String> getProperties();
104 * Returns the value of the property with the given name.
107 * The name of the property
108 * @return The value of the property
110 public String getProperty(String name);
113 * Sets the property with the given name to the given value.
116 * The name of the property
118 * The value of the property
120 public Identity setProperty(String name, String value);
123 * Sets all properties of this identity.
126 * The new properties of this identity
128 public void setProperties(Map<String, String> properties);
131 * Removes the property with the given name.
134 * The name of the property to remove
136 public Identity removeProperty(String name);
139 * Retrieves the trust that this identity receives from the given own
140 * identity. If this identity is not in the own identity’s trust tree, a
141 * {@link Trust} is returned that has all its elements set to {@code null}.
142 * If the trust can not be retrieved, {@code null} is returned.
145 * The own identity to get the trust for
146 * @return The trust assigned to this identity, or {@code null} if the trust
147 * could not be retrieved
149 public Trust getTrust(OwnIdentity ownIdentity);
152 * Sets the trust given by an own identity to this identity.
155 * The own identity that gave trust to this identity
157 * The trust given by the given own identity
159 public Identity setTrust(OwnIdentity ownIdentity, Trust trust);
162 * Removes trust assignment from the given own identity for this identity.
165 * The own identity that removed the trust assignment for this
168 public Identity removeTrust(OwnIdentity ownIdentity);