X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ffreenet%2Ffcp%2FCommand.java;h=17f8370d6d32c655e47a9a8ae257dd74dcb1fdf6;hp=faa10db7316f877e53478c3917097266476e6af3;hb=ffd92ca2374c0b2218e583d02e0bdd24b8c110ae;hpb=6a426e5c3a82f3e63a8763d2a5ad57f311bc6065 diff --git a/src/main/java/net/pterodactylus/sone/freenet/fcp/Command.java b/src/main/java/net/pterodactylus/sone/freenet/fcp/Command.java index faa10db..17f8370 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/fcp/Command.java +++ b/src/main/java/net/pterodactylus/sone/freenet/fcp/Command.java @@ -1,5 +1,5 @@ /* - * Sone - Command.java - Copyright © 2011 David Roden + * Sone - Command.java - Copyright © 2011–2016 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 @@ -17,8 +17,8 @@ package net.pterodactylus.sone.freenet.fcp; +import net.pterodactylus.sone.freenet.SimpleFieldSetBuilder; import freenet.support.SimpleFieldSet; -import freenet.support.api.Bucket; /** * Implementation of an FCP interface for other clients or plugins to @@ -34,15 +34,11 @@ public interface Command { * * @param parameters * The parameters of the comand - * @param data - * The data of the command (may be {@code null}) - * @param accessType - * The access type * @return A reply to send back to the plugin * @throws FcpException * if an error processing the parameters occurs */ - public Response execute(SimpleFieldSet parameters, Bucket data, AccessType accessType) throws FcpException; + public Response execute(SimpleFieldSet parameters) throws FcpException; /** * The access type of the request. @@ -69,63 +65,23 @@ public interface Command { */ public static class Response { + /** The message name of the reponse. */ + private final String messageName; + /** The reply parameters. */ private final SimpleFieldSet replyParameters; - /** The reply data, may be {@code null}. */ - private final byte[] data; - - /** The data bucket, may be {@code null}. */ - private final Bucket bucket; - - /** - * Creates a new reply with the given parameters. - * - * @param replyParameters - * The reply parameters - */ - public Response(SimpleFieldSet replyParameters) { - this(replyParameters, null, null); - } - - /** - * Creates a new reply with the given parameters. - * - * @param replyParameters - * The reply parameters - * @param data - * The data of the reply (may be {@code null}) - */ - public Response(SimpleFieldSet replyParameters, byte[] data) { - this(replyParameters, data, null); - } - - /** - * Creates a new reply with the given parameters. - * - * @param replyParameters - * The reply parameters - * @param bucket - * The bucket of the reply (may be {@code null}) - */ - public Response(SimpleFieldSet replyParameters, Bucket bucket) { - this(replyParameters, null, bucket); - } - /** * Creates a new reply with the given parameters. * + * @param messageName + * The message name * @param replyParameters * The reply parameters - * @param data - * The data of the reply (may be {@code null}) - * @param bucket - * The bucket of the reply (may be {@code null}) */ - private Response(SimpleFieldSet replyParameters, byte[] data, Bucket bucket) { + public Response(String messageName, SimpleFieldSet replyParameters) { + this.messageName = messageName; this.replyParameters = replyParameters; - this.data = data; - this.bucket = bucket; } /** @@ -134,46 +90,39 @@ public interface Command { * @return The reply parameters */ public SimpleFieldSet getReplyParameters() { - return replyParameters; + return new SimpleFieldSetBuilder(replyParameters).put("Message", messageName).get(); } - /** - * Returns whether the reply has reply data. - * - * @see #getData() - * @return {@code true} if this reply has data, {@code false} otherwise - */ - public boolean hasData() { - return data != null; - } + } - /** - * Returns the data of the reply. - * - * @return The data of the reply - */ - public byte[] getData() { - return data; - } + /** + * Response implementation that can return an error message and an optional + * error code. + * + * @author David ‘Bombe’ Roden + */ + public class ErrorResponse extends Response { /** - * Returns whether the reply has a data bucket. + * Creates a new error response with the given message. * - * @see #getBucket() - * @return {@code true} if the reply has a data bucket, {@code false} - * otherwise + * @param message + * The error message */ - public boolean hasBucket() { - return bucket != null; + public ErrorResponse(String message) { + super("Error", new SimpleFieldSetBuilder().put("ErrorMessage", message).get()); } /** - * Returns the data bucket of the reply. + * Creates a new error response with the given code and message. * - * @return The data bucket of the reply + * @param code + * The error code + * @param message + * The error message */ - public Bucket getBucket() { - return bucket; + public ErrorResponse(int code, String message) { + super("Error", new SimpleFieldSetBuilder().put("ErrorMessage", message).put("ErrorCode", code).get()); } }