X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ffreenet%2Fwot%2FIdentityManager.java;h=c0f6f1be6b9799ffdafa902661aad0a9169b29eb;hp=e89c667028e1acf8fae3ab5feebf8420a988bb0b;hb=b4d2d68b5ea4f4edc7337f380cfe078756678126;hpb=4c4b77eff97fd247c6b1c8bbb30aeb6ea3d2c172 diff --git a/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java b/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java index e89c667..c0f6f1b 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java +++ b/src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java @@ -1,149 +1,20 @@ -/* - * Sone - IdentityManager.java - Copyright © 2010–2013 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - package net.pterodactylus.sone.freenet.wot; -import static com.google.common.base.Optional.fromNullable; -import static com.google.common.collect.HashMultimap.create; - -import java.util.HashSet; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; -import net.pterodactylus.sone.freenet.plugin.PluginException; -import net.pterodactylus.util.logging.Logging; -import net.pterodactylus.util.service.AbstractService; +import net.pterodactylus.util.service.Service; -import com.google.common.collect.Multimap; -import com.google.common.collect.Sets; import com.google.common.eventbus.EventBus; -import com.google.inject.Inject; -import com.google.inject.name.Named; +import com.google.inject.ImplementedBy; /** - * The identity manager takes care of loading and storing identities, their - * contexts, and properties. It does so in a way that does not expose errors via - * exceptions but it only logs them and tries to return sensible defaults. - *

- * It is also responsible for polling identities from the Web of Trust plugin - * and sending events to the {@link EventBus} when {@link Identity}s and - * {@link OwnIdentity}s are discovered or disappearing. - * - * @author David ‘Bombe’ Roden + * Connects to a {@link WebOfTrustConnector} and sends identity events to an + * {@link EventBus}. */ -public class IdentityManager extends AbstractService { - - /** The logger. */ - private static final Logger logger = Logging.getLogger(IdentityManager.class); - - /** The event bus. */ - private final EventBus eventBus; - - private final IdentityLoader identityLoader; - - /** The Web of Trust connector. */ - private final WebOfTrustConnector webOfTrustConnector; - - /** The currently known own identities. */ - private final Set currentOwnIdentities = Sets.newHashSet(); - - /** - * Creates a new identity manager. - * - * @param eventBus - * The event bus - * @param webOfTrustConnector - * The Web of Trust connector - * @param context - * The context to focus on (may be {@code null} to ignore - * contexts) - */ - @Inject - public IdentityManager(EventBus eventBus, WebOfTrustConnector webOfTrustConnector, @Named("WebOfTrustContext") String context) { - super("Sone Identity Manager", false); - this.eventBus = eventBus; - this.webOfTrustConnector = webOfTrustConnector; - this.identityLoader = new IdentityLoader(webOfTrustConnector, fromNullable(context)); - } - - // - // ACCESSORS - // - - /** - * Returns whether the Web of Trust plugin could be reached during the last - * try. - * - * @return {@code true} if the Web of Trust plugin is connected, - * {@code false} otherwise - */ - public boolean isConnected() { - try { - webOfTrustConnector.ping(); - return true; - } catch (PluginException pe1) { - /* not connected, ignore. */ - return false; - } - } - - /** - * Returns all own identities. - * - * @return All own identities - */ - public Set getAllOwnIdentities() { - synchronized (currentOwnIdentities) { - return new HashSet(currentOwnIdentities); - } - } - - // - // SERVICE METHODS - // - - /** - * {@inheritDoc} - */ - @Override - protected void serviceRun() { - Multimap oldIdentities = create(); - - while (!shouldStop()) { - try { - Multimap currentIdentities = identityLoader.loadIdentities(); - - IdentityChangeEventSender identityChangeEventSender = new IdentityChangeEventSender(eventBus, oldIdentities); - identityChangeEventSender.detectChanges(currentIdentities); - - oldIdentities = currentIdentities; - - synchronized (currentOwnIdentities) { - currentOwnIdentities.clear(); - currentOwnIdentities.addAll(currentIdentities.keySet()); - } - } catch (WebOfTrustException wote1) { - logger.log(Level.WARNING, "WoT has disappeared!", wote1); - } +@ImplementedBy(IdentityManagerImpl.class) +public interface IdentityManager extends Service { - /* wait a minute before checking again. */ - sleep(60 * 1000); - } - } + boolean isConnected(); + Set getAllOwnIdentities(); }