Repository: incubator-juneau Updated Branches: refs/heads/master 0d10af30f -> feaa916d9
JUNEAU-55 This closes #3 Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/feaa916d Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/feaa916d Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/feaa916d Branch: refs/heads/master Commit: feaa916d9cc68dd4cc3a7411565c1f07b18646fb Parents: 0d10af3 Author: JamesBognar <[email protected]> Authored: Thu Jun 15 11:57:11 2017 -0400 Committer: JamesBognar <[email protected]> Committed: Thu Jun 15 11:57:11 2017 -0400 ---------------------------------------------------------------------- .../juneau/remoteable/RemoteableMethodMeta.java | 4 +-- .../apache/juneau/rest/client/RestClient.java | 28 +++++++++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/feaa916d/juneau-core/src/main/java/org/apache/juneau/remoteable/RemoteableMethodMeta.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/remoteable/RemoteableMethodMeta.java b/juneau-core/src/main/java/org/apache/juneau/remoteable/RemoteableMethodMeta.java index 78340b7..8430ae8 100644 --- a/juneau-core/src/main/java/org/apache/juneau/remoteable/RemoteableMethodMeta.java +++ b/juneau-core/src/main/java/org/apache/juneau/remoteable/RemoteableMethodMeta.java @@ -74,8 +74,8 @@ public class RemoteableMethodMeta { RemoteMethod rm = m.getAnnotation(RemoteMethod.class); httpMethod = rm == null ? "POST" : rm.httpMethod(); - if (! isOneOf(httpMethod, "GET", "POST")) - throw new RemoteableMetadataException(m, "Invalid value specified for @RemoteMethod.httpMethod() annotation. Valid values are [GET,POST]."); + if (! isOneOf(httpMethod, "DELETE", "GET", "POST", "PUT")) + throw new RemoteableMetadataException(m, "Invalid value specified for @RemoteMethod.httpMethod() annotation. Valid values are [DELTE,GET,POST,PUT]."); String path = rm == null || rm.path().isEmpty() ? null : rm.path(); String methodPaths = r == null ? "NAME" : r.methodPaths(); http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/feaa916d/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java ---------------------------------------------------------------------- diff --git a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java index 32fd4da..484d934 100644 --- a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java +++ b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java @@ -207,6 +207,21 @@ public class RestClient extends CoreObject { } /** + * Same as {@link #doPut(Object, Object)} but don't specify the input yet. + * <p> + * You must call either {@link RestCall#input(Object)} or {@link RestCall#formData(String, Object)} + * to set the contents on the result object. + * + * @param url The URL of the remote REST resource. Can be any of the following: {@link String}, {@link URI}, {@link URL}. + * @return A {@link RestCall} object that can be further tailored before executing the request + * and getting the response as a parsed object. + * @throws RestCallException + */ + public RestCall doPut(Object url) throws RestCallException { + return doCall("PUT", url, true); + } + + /** * Perform a <code>POST</code> request against the specified URL. * * @param url The URL of the remote REST resource. Can be any of the following: {@link String}, {@link URI}, {@link URL}. @@ -547,7 +562,18 @@ public class RestClient extends CoreObject { try { String url = rmm.getUrl(); String httpMethod = rmm.getHttpMethod(); - RestCall rc = (httpMethod.equals("POST") ? doPost(url) : doGet(url)); + RestCall rc; + // this could be a switch at language level 7 + if (httpMethod.equals("DELETE")) { + rc = doDelete(url); + } else if (httpMethod.equals("POST")) { + rc = doPost(url); + } else if (httpMethod.equals("GET")) { + rc = doGet(url); + } else if (httpMethod.equals("PUT")) { + rc = doPut(url); + } else throw new RuntimeException("Unsupported method."); + rc.serializer(serializer).parser(parser); for (RemoteMethodArg a : rmm.getPathArgs())
