X-Git-Url: https://git.pterodactylus.net/?p=WoTNS.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fwotns%2Fmain%2FIdentityTargets.java;h=a992091118916cabb031155f689d8b2cd87ffff7;hp=022282034d2716e87e0d427150dd9d5824fbaa35;hb=19cb82fef226e1d2aee9e761df4b4d3a9539718e;hpb=304ebe78f167327f9b923bea7e694409fb76db60
diff --git a/src/main/java/net/pterodactylus/wotns/main/IdentityTargets.java b/src/main/java/net/pterodactylus/wotns/main/IdentityTargets.java
index 0222820..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,6 +78,9 @@ public class IdentityTargets implements Iterable> {
// PRIVATE METHODS
//
+ /**
+ * Re-scans the identity for targets.
+ */
private void scanForTargets() {
synchronized (targets) {
targets.clear();
@@ -74,8 +101,10 @@ public class IdentityTargets implements Iterable> {
*/
@Override
public Iterator> iterator() {
- scanForTargets();
- return targets.entrySet().iterator();
+ synchronized (targets) {
+ scanForTargets();
+ return new HashMap(targets).entrySet().iterator();
+ }
}
}