X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ffreenet%2Fwot%2FIdentityLoader.java;h=ff7e65f035aa5b6a65e3e4a44a9b0ed91eff3709;hp=550079b0c604479954771b26deb4fbeed0d7f3df;hb=2bacfa78f3191fd9847574a6c8b218a4882844a4;hpb=4c4b77eff97fd247c6b1c8bbb30aeb6ea3d2c172 diff --git a/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityLoader.java b/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityLoader.java index 550079b..ff7e65f 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityLoader.java +++ b/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityLoader.java @@ -1,5 +1,5 @@ /* - * Sone - IdentityLoader.java - Copyright © 2013 David Roden + * Sone - IdentityLoader.java - Copyright © 2013–2016 David Roden * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,57 +17,61 @@ package net.pterodactylus.sone.freenet.wot; -import static com.google.common.collect.HashMultimap.create; +import static java.util.Collections.emptySet; +import static net.pterodactylus.sone.freenet.wot.Context.extractContext; import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; import java.util.Set; import net.pterodactylus.sone.freenet.plugin.PluginException; import com.google.common.base.Optional; -import com.google.common.collect.Multimap; +import com.google.inject.Inject; /** * Loads {@link OwnIdentity}s and the {@link Identity}s they trust. - * - * @author David ‘Bombe’ Roden */ public class IdentityLoader { private final WebOfTrustConnector webOfTrustConnector; - private final Optional context; + private final Optional context; public IdentityLoader(WebOfTrustConnector webOfTrustConnector) { - this(webOfTrustConnector, Optional.absent()); + this(webOfTrustConnector, Optional.absent()); } - public IdentityLoader(WebOfTrustConnector webOfTrustConnector, Optional context) { + @Inject + public IdentityLoader(WebOfTrustConnector webOfTrustConnector, Optional context) { this.webOfTrustConnector = webOfTrustConnector; this.context = context; } - public Multimap loadIdentities() throws WebOfTrustException { + public Map> loadIdentities() throws WebOfTrustException { Collection currentOwnIdentities = webOfTrustConnector.loadAllOwnIdentities(); return loadTrustedIdentitiesForOwnIdentities(currentOwnIdentities); } - private Multimap loadTrustedIdentitiesForOwnIdentities(Collection ownIdentities) throws PluginException { - Multimap currentIdentities = create(); + private Map> loadTrustedIdentitiesForOwnIdentities(Collection ownIdentities) throws PluginException { + Map> currentIdentities = new HashMap<>(); for (OwnIdentity ownIdentity : ownIdentities) { if (identityDoesNotHaveTheCorrectContext(ownIdentity)) { + currentIdentities.put(ownIdentity, Collections.emptySet()); continue; } - Set trustedIdentities = webOfTrustConnector.loadTrustedIdentities(ownIdentity, context.orNull()); - currentIdentities.putAll(ownIdentity, trustedIdentities); + Set trustedIdentities = webOfTrustConnector.loadTrustedIdentities(ownIdentity, context.transform(extractContext)); + currentIdentities.put(ownIdentity, trustedIdentities); } return currentIdentities; } private boolean identityDoesNotHaveTheCorrectContext(OwnIdentity ownIdentity) { - return context.isPresent() && !ownIdentity.hasContext(context.get()); + return context.isPresent() && !ownIdentity.hasContext(context.transform(extractContext).get()); } }