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=5978169d343e630e8af2786c481f4c7ba48143f1;hb=b4d2d68b5ea4f4edc7337f380cfe078756678126;hpb=52f608f5902d6d05dd39599cdb2ed28f2465b4be 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 5978169..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,144 +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 java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; 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.Sets; import com.google.common.eventbus.EventBus; -import com.google.inject.Inject; +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 - */ - @Inject - public IdentityManager(EventBus eventBus, WebOfTrustConnector webOfTrustConnector, IdentityLoader identityLoader) { - super("Sone Identity Manager", false); - this.eventBus = eventBus; - this.webOfTrustConnector = webOfTrustConnector; - this.identityLoader = identityLoader; - } - - // - // 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() { - Map> oldIdentities = new HashMap>(); - - while (!shouldStop()) { - try { - Map> 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(); }