From 4ff19298a886f9aa09ef20309a833f9454284482 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Fri, 8 Apr 2011 15:20:08 +0200 Subject: [PATCH] Move Sone-related FCP classes to different package. --- .../net/pterodactylus/sone/fcp/FcpInterface.java | 100 +++++++++++++++++++++ .../net/pterodactylus/sone/fcp/VersionCommand.java | 43 +++++++++ .../sone/freenet/fcp/FcpInterface.java | 98 -------------------- .../sone/freenet/fcp/VersionCommand.java | 40 --------- .../net/pterodactylus/sone/main/SonePlugin.java | 2 +- 5 files changed, 144 insertions(+), 139 deletions(-) create mode 100644 src/main/java/net/pterodactylus/sone/fcp/FcpInterface.java create mode 100644 src/main/java/net/pterodactylus/sone/fcp/VersionCommand.java delete mode 100644 src/main/java/net/pterodactylus/sone/freenet/fcp/FcpInterface.java delete mode 100644 src/main/java/net/pterodactylus/sone/freenet/fcp/VersionCommand.java diff --git a/src/main/java/net/pterodactylus/sone/fcp/FcpInterface.java b/src/main/java/net/pterodactylus/sone/fcp/FcpInterface.java new file mode 100644 index 0000000..8841f63 --- /dev/null +++ b/src/main/java/net/pterodactylus/sone/fcp/FcpInterface.java @@ -0,0 +1,100 @@ +/* + * Sone - FcpInterface.java - Copyright © 2011 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.fcp; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import net.pterodactylus.sone.core.Core; +import net.pterodactylus.sone.freenet.fcp.Command; +import net.pterodactylus.sone.freenet.fcp.FcpException; +import net.pterodactylus.sone.freenet.fcp.Command.AccessType; +import net.pterodactylus.sone.freenet.fcp.Command.Reply; +import freenet.pluginmanager.FredPluginFCP; +import freenet.pluginmanager.PluginNotFoundException; +import freenet.pluginmanager.PluginReplySender; +import freenet.support.SimpleFieldSet; +import freenet.support.api.Bucket; + +/** + * Implementation of an FCP interface for other clients or plugins to + * communicate with Sone. + * + * @author David ‘Bombe’ Roden + */ +public class FcpInterface { + + /** All available FCP commands. */ + private final Map commands = Collections.synchronizedMap(new HashMap()); + + /** + * Creates a new FCP interface. + * + * @param core + * The core + */ + public FcpInterface(Core core) { + commands.put("Version", new VersionCommand()); + commands.put("GetPostFeed", new GetPostFeedCommand(core)); + } + + /** + * Handles a plugin FCP request. + * + * @param pluginReplySender + * The reply sender + * @param parameters + * The message parameters + * @param data + * The message data (may be {@code null}) + * @param accessType + * One of {@link FredPluginFCP#ACCESS_DIRECT}, + * {@link FredPluginFCP#ACCESS_FCP_FULL}, + * {@link FredPluginFCP#ACCESS_FCP_RESTRICTED} + */ + public void handle(PluginReplySender pluginReplySender, SimpleFieldSet parameters, Bucket data, int accessType) { + Command command = commands.get(parameters.get("Message")); + if (command == null) { + /* TODO - return error? */ + return; + } + String identifier = parameters.get("Identifier"); + if ((identifier == null) || (identifier.length() == 0)) { + /* TODO - return error? */ + return; + } + try { + Reply reply = command.execute(parameters, data, AccessType.values()[accessType]); + SimpleFieldSet replyParameters = reply.getReplyParameters(); + replyParameters.putOverwrite("Identifier", identifier); + if (reply.hasData()) { + pluginReplySender.send(replyParameters, reply.getData()); + } else if (reply.hasBucket()) { + pluginReplySender.send(replyParameters, reply.getBucket()); + } else { + pluginReplySender.send(replyParameters); + } + } catch (FcpException fe1) { + /* TODO - log, report */ + } catch (PluginNotFoundException pnfe1) { + /* TODO - log */ + } + } + +} diff --git a/src/main/java/net/pterodactylus/sone/fcp/VersionCommand.java b/src/main/java/net/pterodactylus/sone/fcp/VersionCommand.java new file mode 100644 index 0000000..a370cbf --- /dev/null +++ b/src/main/java/net/pterodactylus/sone/fcp/VersionCommand.java @@ -0,0 +1,43 @@ +/* + * Sone - VersionCommand.java - Copyright © 2011 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.fcp; + +import net.pterodactylus.sone.freenet.SimpleFieldSetBuilder; +import net.pterodactylus.sone.freenet.fcp.Command; +import net.pterodactylus.sone.freenet.fcp.Command.AccessType; +import net.pterodactylus.sone.freenet.fcp.Command.Reply; +import net.pterodactylus.sone.main.SonePlugin; +import freenet.support.SimpleFieldSet; +import freenet.support.api.Bucket; + +/** + * Returns version information about the Sone plugin. + * + * @author David ‘Bombe’ Roden + */ +public class VersionCommand implements Command { + + /** + * {@inheritDoc} + */ + @Override + public Reply execute(SimpleFieldSet parameters, Bucket data, AccessType accessType) { + return new Reply(new SimpleFieldSetBuilder().put("Version", SonePlugin.VERSION.toString()).put("ProtocolVersion", 1).get()); + } + +} diff --git a/src/main/java/net/pterodactylus/sone/freenet/fcp/FcpInterface.java b/src/main/java/net/pterodactylus/sone/freenet/fcp/FcpInterface.java deleted file mode 100644 index 8da41ed..0000000 --- a/src/main/java/net/pterodactylus/sone/freenet/fcp/FcpInterface.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Sone - FcpInterface.java - Copyright © 2011 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.fcp; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import net.pterodactylus.sone.core.Core; -import net.pterodactylus.sone.freenet.fcp.Command.AccessType; -import net.pterodactylus.sone.freenet.fcp.Command.Reply; -import freenet.pluginmanager.FredPluginFCP; -import freenet.pluginmanager.PluginNotFoundException; -import freenet.pluginmanager.PluginReplySender; -import freenet.support.SimpleFieldSet; -import freenet.support.api.Bucket; - -/** - * Implementation of an FCP interface for other clients or plugins to - * communicate with Sone. - * - * @author David ‘Bombe’ Roden - */ -public class FcpInterface { - - /** All available FCP commands. */ - private final Map commands = Collections.synchronizedMap(new HashMap()); - - /** - * Creates a new FCP interface. - * - * @param core - * The core - */ - public FcpInterface(Core core) { - commands.put("Version", new VersionCommand()); - commands.put("GetPostFeed", new GetPostFeedCommand(core)); - } - - /** - * Handles a plugin FCP request. - * - * @param pluginReplySender - * The reply sender - * @param parameters - * The message parameters - * @param data - * The message data (may be {@code null}) - * @param accessType - * One of {@link FredPluginFCP#ACCESS_DIRECT}, - * {@link FredPluginFCP#ACCESS_FCP_FULL}, - * {@link FredPluginFCP#ACCESS_FCP_RESTRICTED} - */ - public void handle(PluginReplySender pluginReplySender, SimpleFieldSet parameters, Bucket data, int accessType) { - Command command = commands.get(parameters.get("Message")); - if (command == null) { - /* TODO - return error? */ - return; - } - String identifier = parameters.get("Identifier"); - if ((identifier == null) || (identifier.length() == 0)) { - /* TODO - return error? */ - return; - } - try { - Reply reply = command.execute(parameters, data, AccessType.values()[accessType]); - SimpleFieldSet replyParameters = reply.getReplyParameters(); - replyParameters.putOverwrite("Identifier", identifier); - if (reply.hasData()) { - pluginReplySender.send(replyParameters, reply.getData()); - } else if (reply.hasBucket()) { - pluginReplySender.send(replyParameters, reply.getBucket()); - } else { - pluginReplySender.send(replyParameters); - } - } catch (FcpException fe1) { - /* TODO - log, report */ - } catch (PluginNotFoundException pnfe1) { - /* TODO - log */ - } - } - -} diff --git a/src/main/java/net/pterodactylus/sone/freenet/fcp/VersionCommand.java b/src/main/java/net/pterodactylus/sone/freenet/fcp/VersionCommand.java deleted file mode 100644 index a765135..0000000 --- a/src/main/java/net/pterodactylus/sone/freenet/fcp/VersionCommand.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Sone - VersionCommand.java - Copyright © 2011 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.fcp; - -import net.pterodactylus.sone.freenet.SimpleFieldSetBuilder; -import net.pterodactylus.sone.main.SonePlugin; -import freenet.support.SimpleFieldSet; -import freenet.support.api.Bucket; - -/** - * Returns version information about the Sone plugin. - * - * @author David ‘Bombe’ Roden - */ -public class VersionCommand implements Command { - - /** - * {@inheritDoc} - */ - @Override - public Reply execute(SimpleFieldSet parameters, Bucket data, AccessType accessType) { - return new Reply(new SimpleFieldSetBuilder().put("Version", SonePlugin.VERSION.toString()).put("ProtocolVersion", 1).get()); - } - -} diff --git a/src/main/java/net/pterodactylus/sone/main/SonePlugin.java b/src/main/java/net/pterodactylus/sone/main/SonePlugin.java index 05b8403..0a28656 100644 --- a/src/main/java/net/pterodactylus/sone/main/SonePlugin.java +++ b/src/main/java/net/pterodactylus/sone/main/SonePlugin.java @@ -24,8 +24,8 @@ import java.util.logging.Logger; import net.pterodactylus.sone.core.Core; import net.pterodactylus.sone.core.FreenetInterface; +import net.pterodactylus.sone.fcp.FcpInterface; import net.pterodactylus.sone.freenet.PluginStoreConfigurationBackend; -import net.pterodactylus.sone.freenet.fcp.FcpInterface; import net.pterodactylus.sone.freenet.plugin.PluginConnector; import net.pterodactylus.sone.freenet.wot.IdentityManager; import net.pterodactylus.sone.freenet.wot.WebOfTrustConnector; -- 2.7.4