Add command to remove plugin
authorDavid ‘Bombe’ Roden <bombe@freenetproject.org>
Tue, 24 Nov 2015 19:31:00 +0000 (20:31 +0100)
committerDavid ‘Bombe’ Roden <bombe@freenetproject.org>
Tue, 24 Nov 2015 19:31:26 +0000 (20:31 +0100)
src/main/java/net/pterodactylus/fcp/FcpAdapter.java
src/main/java/net/pterodactylus/fcp/FcpConnection.java
src/main/java/net/pterodactylus/fcp/FcpListener.java
src/main/java/net/pterodactylus/fcp/FcpListenerManager.java
src/main/java/net/pterodactylus/fcp/PluginRemoved.java [new file with mode: 0644]
src/main/java/net/pterodactylus/fcp/RemovePlugin.java [new file with mode: 0644]

index 063d363..8d7da06 100644 (file)
@@ -273,6 +273,11 @@ public class FcpAdapter implements FcpListener {
         * {@inheritDoc}
         */
        @Override
+       public void receivedPluginRemoved(FcpConnection fcpConnection, PluginRemoved pluginRemoved) {
+               /* empty. */
+       }
+
+       @Override
        public void receivedFCPPluginReply(FcpConnection fcpConnection, FCPPluginReply fcpPluginReply) {
                /* empty. */
        }
index 66377a2..d97a541 100644 (file)
@@ -297,6 +297,8 @@ public class FcpConnection implements Closeable {
                        }
                } else if ("PluginInfo".equals(messageName)) {
                        fcpListenerManager.fireReceivedPluginInfo(new PluginInfo(fcpMessage));
+               } else if ("PluginRemoved".equals(messageName)) {
+                       fcpListenerManager.fireReceivedPluginRemoved(new PluginRemoved(fcpMessage));
                } else if ("NodeData".equals(messageName)) {
                        fcpListenerManager.fireReceivedNodeData(new NodeData(fcpMessage));
                } else if ("TestDDAReply".equals(messageName)) {
index 02eeed5..91e1f9c 100644 (file)
@@ -329,6 +329,8 @@ public interface FcpListener extends EventListener {
         */
        public void receivedPluginInfo(FcpConnection fcpConnection, PluginInfo pluginInfo);
 
+       void receivedPluginRemoved(FcpConnection fcpConnection, PluginRemoved pluginRemoved);
+
        /**
         * Notifies a listener that an “FCPPluginReply“ message was received.
         *
index 7969da1..a5c27af 100644 (file)
@@ -466,6 +466,12 @@ public class FcpListenerManager {
                }
        }
 
+       public void fireReceivedPluginRemoved(PluginRemoved pluginRemoved) {
+               for (FcpListener fcpListener : getListeners()) {
+                       fcpListener.receivedPluginRemoved(getSource(), pluginRemoved);
+               }
+       }
+
        /**
         * Notifies all listeners that an “FCPPluginReply” message was received.
         *
diff --git a/src/main/java/net/pterodactylus/fcp/PluginRemoved.java b/src/main/java/net/pterodactylus/fcp/PluginRemoved.java
new file mode 100644 (file)
index 0000000..7492954
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * jFCPlib - PluginInfo.java - Copyright © 2008 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 2 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+package net.pterodactylus.fcp;
+
+/**
+ * The “PluginRemoved” message is a reply to the {@link RemovePlugin} request.
+ *
+ * @author David ‘Bombe’ Roden &lt;bombe@freenetproject.org&gt;
+ */
+public class PluginRemoved extends BaseMessage implements Identifiable {
+
+       /**
+        * Creates a new “PluginRemoved” message that wraps the received message.
+        *
+        * @param receivedMessage
+        *      The received message
+        */
+       public PluginRemoved(FcpMessage receivedMessage) {
+               super(receivedMessage);
+       }
+
+       /**
+        * Returns the name of the plugin.
+        *
+        * @return The name of the plugin
+        */
+       public String getPluginName() {
+               return getField("PluginName");
+       }
+
+       /**
+        * Returns the identifier of the request.
+        *
+        * @return The identifier of the request
+        */
+       @Override
+       public String getIdentifier() {
+               return getField("Identifier");
+       }
+
+}
diff --git a/src/main/java/net/pterodactylus/fcp/RemovePlugin.java b/src/main/java/net/pterodactylus/fcp/RemovePlugin.java
new file mode 100644 (file)
index 0000000..44fa9a7
--- /dev/null
@@ -0,0 +1,27 @@
+package net.pterodactylus.fcp;
+
+/**
+ * The “RemovePlugin” message is used to remove a plugin.
+ *
+ * @author <a href="mailto:bombe@freenetproject.org">David ‘Bombe’ Roden</a>
+ */
+public class RemovePlugin extends FcpMessage {
+
+       public RemovePlugin(String identifier) {
+               super("RemovePlugin");
+               setField("Identifier", identifier);
+       }
+
+       public void setPluginName(String pluginName) {
+               setField("PluginName", pluginName);
+       }
+
+       public void setMaxWaitTime(int maxWaitTime) {
+               setField("MaxWaitTime", String.valueOf(maxWaitTime));
+       }
+
+       public void setPurge(boolean purge) {
+               setField("Purge", String.valueOf(purge));
+       }
+
+}