X-Git-Url: https://git.pterodactylus.net/?p=WoTNS.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fwotns%2Fmain%2FIdentityTargets.java;fp=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fwotns%2Fmain%2FIdentityTargets.java;h=a992091118916cabb031155f689d8b2cd87ffff7;hp=2eacd08a867b79349f9286aa2bf4d1ccc778e496;hb=147688416f19328642c7360594833284aeaa64df;hpb=a62eda7ce4d37fb79c60d497c767cb57752f8b09
diff --git a/src/main/java/net/pterodactylus/wotns/main/IdentityTargets.java b/src/main/java/net/pterodactylus/wotns/main/IdentityTargets.java
index 2eacd08..a992091 100644
--- a/src/main/java/net/pterodactylus/wotns/main/IdentityTargets.java
+++ b/src/main/java/net/pterodactylus/wotns/main/IdentityTargets.java
@@ -26,25 +26,49 @@ import java.util.Map.Entry;
import net.pterodactylus.wotns.freenet.wot.Identity;
/**
- * TODO
+ * Scans an {@link Identity}âs properties for WoTNS targets.
*
* @author David âBombeâ Roden
*/
public class IdentityTargets implements Iterable> {
+ /** The identity being scanned. */
private final Identity identity;
+ /** The located targets. */
private final Map targets = new HashMap();
+ /**
+ * Creates a new target scanner for the given identity.
+ *
+ * @param identity
+ * The identity to scan for targets
+ */
public IdentityTargets(Identity identity) {
this.identity = identity;
}
+ //
+ // ACCESSORS
+ //
+
+ /**
+ * Returns the targets of the identity.
+ *
+ * @return The targets defined in the identity
+ */
public Map getTargets() {
scanForTargets();
return Collections.unmodifiableMap(targets);
}
+ /**
+ * Returns the target with the given name.
+ *
+ * @param name
+ * The name of the target
+ * @return The target
+ */
public String getTarget(String name) {
scanForTargets();
return targets.get(name);
@@ -54,8 +78,12 @@ public class IdentityTargets implements Iterable> {
// PRIVATE METHODS
//
+ /**
+ * Re-scans the identity for targets.
+ */
private void scanForTargets() {
synchronized (targets) {
+ targets.clear();
for (Entry property : identity.getProperties().entrySet()) {
if (property.getKey().startsWith("tns.")) {
targets.put(property.getKey().substring(4), property.getValue());
@@ -73,7 +101,10 @@ public class IdentityTargets implements Iterable> {
*/
@Override
public Iterator> iterator() {
- return targets.entrySet().iterator();
+ synchronized (targets) {
+ scanForTargets();
+ return new HashMap(targets).entrySet().iterator();
+ }
}
}