X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ffreenet%2Fplugin%2FPluginConnector.java;h=d556a6c25697852966da19ff880aef112579aa92;hb=036c6fa20ce11ce8093f46fc0fce1c1da1839789;hp=1dae44bc9f4250b383d3f7297113ca92879aa57f;hpb=5d8f3ac133544177412ec3c533e5f5f92a7b1c35;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/freenet/plugin/PluginConnector.java b/src/main/java/net/pterodactylus/sone/freenet/plugin/PluginConnector.java index 1dae44b..d556a6c 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/plugin/PluginConnector.java +++ b/src/main/java/net/pterodactylus/sone/freenet/plugin/PluginConnector.java @@ -21,8 +21,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; -import net.pterodactylus.util.collection.Pair; - import com.google.inject.Inject; import freenet.pluginmanager.FredPluginTalker; @@ -44,7 +42,7 @@ public class PluginConnector implements FredPluginTalker { private final PluginRespirator pluginRespirator; /** Connector listener managers for all plugin connections. */ - private final Map, ConnectorListenerManager> connectorListenerManagers = Collections.synchronizedMap(new HashMap, ConnectorListenerManager>()); + private final Map connectorListenerManagers = Collections.synchronizedMap(new HashMap()); /** * Creates a new plugin connector. @@ -160,10 +158,10 @@ public class PluginConnector implements FredPluginTalker { * and {@code create} is {@code false} */ private ConnectorListenerManager getConnectorListenerManager(String pluginName, String identifier, boolean create) { - ConnectorListenerManager connectorListenerManager = connectorListenerManagers.get(new Pair(pluginName, identifier)); + ConnectorListenerManager connectorListenerManager = connectorListenerManagers.get(new PluginIdentifier(pluginName, identifier)); if (create && (connectorListenerManager == null)) { connectorListenerManager = new ConnectorListenerManager(this); - connectorListenerManagers.put(new Pair(pluginName, identifier), connectorListenerManager); + connectorListenerManagers.put(new PluginIdentifier(pluginName, identifier), connectorListenerManager); } return connectorListenerManager; } @@ -204,4 +202,57 @@ public class PluginConnector implements FredPluginTalker { connectorListenerManager.fireReceivedReply(params, data); } + /** + * Container for identifying plugins. Plugins are identified by their plugin + * name and their unique identifier. + * + * @author David Roden + */ + private static class PluginIdentifier { + + /** The plugin name. */ + private final String pluginName; + + /** The plugin identifier. */ + private final String identifier; + + /** + * Creates a new plugin identifier. + * + * @param pluginName + * The name of the plugin + * @param identifier + * The identifier of the plugin + */ + public PluginIdentifier(String pluginName, String identifier) { + this.pluginName = pluginName; + this.identifier = identifier; + } + + // + // OBJECT METHODS + // + + /** + * {@inheritDoc} + */ + @Override + public int hashCode() { + return pluginName.hashCode() ^ identifier.hashCode(); + } + + /** + * {@inheritDoc} + */ + @Override + public boolean equals(Object object) { + if (!(object instanceof PluginIdentifier)) { + return false; + } + PluginIdentifier pluginIdentifier = (PluginIdentifier) object; + return pluginName.equals(pluginIdentifier.pluginName) && identifier.equals(pluginIdentifier.identifier); + } + + } + }