You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/01/06 14:13:28 UTC

[isis] 02/03: ISIS-2158: decouple RestfulHttpMethod from client code

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 56c165d686ee323917ad0b348de7a36e0b0ed3ad
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 6 14:46:24 2020 +0100

    ISIS-2158: decouple RestfulHttpMethod from client code
---
 .../restfulobjects/applib/RestfulHttpMethod.java   | 73 +++-------------------
 .../applib/client/ClientRequestConfigurer.java     | 10 ++-
 .../RestfulHttpMethod2.java}                       | 15 +++--
 .../applib/RestfulHttpMethodTest_setUp.java        | 13 ++--
 4 files changed, 30 insertions(+), 81 deletions(-)

diff --git a/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethod.java b/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethod.java
index 49df5b5..5235185 100644
--- a/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethod.java
+++ b/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethod.java
@@ -18,73 +18,16 @@
  */
 package org.apache.isis.viewer.restfulobjects.applib;
 
-import org.apache.isis.viewer.restfulobjects.applib.client.ClientRequest;
-import org.apache.isis.viewer.restfulobjects.applib.client.ClientRequestConfigurer;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 
+@RequiredArgsConstructor
 public enum RestfulHttpMethod {
-    GET(javax.ws.rs.HttpMethod.GET, ArgStrategy.QUERY_STRING),
-    PUT(javax.ws.rs.HttpMethod.PUT, ArgStrategy.BODY),
-    DELETE(javax.ws.rs.HttpMethod.DELETE, ArgStrategy.QUERY_STRING),
-    POST(javax.ws.rs.HttpMethod.POST, ArgStrategy.BODY);
+    GET(javax.ws.rs.HttpMethod.GET),
+    PUT(javax.ws.rs.HttpMethod.PUT),
+    DELETE(javax.ws.rs.HttpMethod.DELETE),
+    POST(javax.ws.rs.HttpMethod.POST);
 
-    private enum ArgStrategy {
-        /**
-         * Individually encodes each query arg.
-         */
-        QUERY_ARGS {
-            @Override
-            void setUpArgs(final ClientRequestConfigurer clientRequestConfigurer, final JsonRepresentation requestArgs) {
-                clientRequestConfigurer.queryArgs(requestArgs);
-            }
-        },
-        /**
-         * Sends entire request args as a URL encoded map
-         */
-        QUERY_STRING {
-            @Override
-            void setUpArgs(final ClientRequestConfigurer clientRequestConfigurer, final JsonRepresentation requestArgs) {
-                clientRequestConfigurer.queryString(requestArgs);
-            }
-        },
-        BODY {
-            @Override
-            void setUpArgs(final ClientRequestConfigurer clientRequestConfigurer, final JsonRepresentation requestArgs) {
-                clientRequestConfigurer.body(requestArgs);
-            }
-        };
-        abstract void setUpArgs(ClientRequestConfigurer clientRequestConfigurer, JsonRepresentation requestArgs);
-    }
-
-    private final String javaxRsMethod;
-    private final ArgStrategy argStrategy;
-
-    private RestfulHttpMethod(final String javaxRsMethod, final ArgStrategy argStrategy) {
-        this.javaxRsMethod = javaxRsMethod;
-        this.argStrategy = argStrategy;
-    }
-
-    public String getJavaxRsMethod() {
-        return javaxRsMethod;
-    }
-
-    /**
-     * It's a bit nasty that we need to ask for the {@link org.jboss.resteasy.specimpl.ResteasyUriBuilder} as
-     * well as the {@link ClientRequest}, but that's because the
-     * {@link ClientRequest} does not allow us to setup raw query strings (only
-     * query name/arg pairs)
-     *
-     * @param clientRequestConfigurer
-     * @param requestArgs
-     */
-    public void setUpArgs(final ClientRequestConfigurer clientRequestConfigurer, final JsonRepresentation requestArgs) {
-        clientRequestConfigurer.setHttpMethod(this);
-        if (requestArgs == null) {
-            return;
-        }
-        if (!requestArgs.isMap()) {
-            throw new IllegalArgumentException("requestArgs must be a map; instead got: " + requestArgs);
-        }
-        argStrategy.setUpArgs(clientRequestConfigurer, requestArgs);
-    }
+    @Getter private final String javaxRsMethod;
 
 }
diff --git a/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/ClientRequestConfigurer.java b/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/ClientRequestConfigurer.java
index d9262ce..4ac322d 100644
--- a/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/ClientRequestConfigurer.java
+++ b/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/ClientRequestConfigurer.java
@@ -25,6 +25,7 @@ import javax.ws.rs.core.UriBuilder;
 
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulHttpMethod2;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.RequestParameter;
 import org.apache.isis.viewer.restfulobjects.applib.util.UrlEncodingUtils;
 
@@ -77,6 +78,11 @@ public class ClientRequestConfigurer {
         clientRequest.setHttpMethod(httpMethod.getJavaxRsMethod());
         return this;
     }
+    
+    public ClientRequestConfigurer setHttpMethod(final RestfulHttpMethod2 httpMethod) {
+        clientRequest.setHttpMethod(httpMethod.getJavaxRsMethod());
+        return this;
+    }
 
     /**
      * Used when creating a request with arguments to execute.
@@ -167,9 +173,9 @@ public class ClientRequestConfigurer {
         return clientRequest;
     }
 
-    RestfulHttpMethod getHttpMethod() {
+    RestfulHttpMethod2 getHttpMethod() {
         final String httpMethod = clientRequest.getHttpMethod();
-        return RestfulHttpMethod.valueOf(httpMethod);
+        return RestfulHttpMethod2.valueOf(httpMethod);
     }
 
 }
diff --git a/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethod.java b/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulHttpMethod2.java
similarity index 90%
copy from core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethod.java
copy to core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulHttpMethod2.java
index 49df5b5..6235392 100644
--- a/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethod.java
+++ b/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulHttpMethod2.java
@@ -16,12 +16,15 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.viewer.restfulobjects.applib;
+package org.apache.isis.viewer.restfulobjects.applib.client;
 
+import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.client.ClientRequest;
 import org.apache.isis.viewer.restfulobjects.applib.client.ClientRequestConfigurer;
 
-public enum RestfulHttpMethod {
+import lombok.Getter;
+
+public enum RestfulHttpMethod2 {
     GET(javax.ws.rs.HttpMethod.GET, ArgStrategy.QUERY_STRING),
     PUT(javax.ws.rs.HttpMethod.PUT, ArgStrategy.BODY),
     DELETE(javax.ws.rs.HttpMethod.DELETE, ArgStrategy.QUERY_STRING),
@@ -55,18 +58,14 @@ public enum RestfulHttpMethod {
         abstract void setUpArgs(ClientRequestConfigurer clientRequestConfigurer, JsonRepresentation requestArgs);
     }
 
-    private final String javaxRsMethod;
+    @Getter private final String javaxRsMethod;
     private final ArgStrategy argStrategy;
 
-    private RestfulHttpMethod(final String javaxRsMethod, final ArgStrategy argStrategy) {
+    private RestfulHttpMethod2(final String javaxRsMethod, final ArgStrategy argStrategy) {
         this.javaxRsMethod = javaxRsMethod;
         this.argStrategy = argStrategy;
     }
 
-    public String getJavaxRsMethod() {
-        return javaxRsMethod;
-    }
-
     /**
      * It's a bit nasty that we need to ask for the {@link org.jboss.resteasy.specimpl.ResteasyUriBuilder} as
      * well as the {@link ClientRequest}, but that's because the
diff --git a/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethodTest_setUp.java b/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethodTest_setUp.java
index 3a28c28..89faa01 100644
--- a/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethodTest_setUp.java
+++ b/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethodTest_setUp.java
@@ -29,6 +29,7 @@ import org.junit.Test;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 import org.apache.isis.viewer.restfulobjects.applib.client.ClientRequestConfigurer;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulHttpMethod2;
 
 public class RestfulHttpMethodTest_setUp {
 
@@ -52,25 +53,25 @@ public class RestfulHttpMethodTest_setUp {
 
     @Test
     public void get() throws Exception {
-        setsUpQueryString(RestfulHttpMethod.GET);
+        setsUpQueryString(RestfulHttpMethod2.GET);
     }
 
     @Test
     public void delete() throws Exception {
-        setsUpQueryString(RestfulHttpMethod.DELETE);
+        setsUpQueryString(RestfulHttpMethod2.DELETE);
     }
 
     @Test
     public void post() throws Exception {
-        setsUpBody(RestfulHttpMethod.POST);
+        setsUpBody(RestfulHttpMethod2.POST);
     }
 
     @Test
     public void put() throws Exception {
-        setsUpBody(RestfulHttpMethod.PUT);
+        setsUpBody(RestfulHttpMethod2.PUT);
     }
 
-    private void setsUpQueryString(final RestfulHttpMethod httpMethod) throws UnsupportedEncodingException {
+    private void setsUpQueryString(final RestfulHttpMethod2 httpMethod) throws UnsupportedEncodingException {
         context.checking(new Expectations() {
             {
                 oneOf(requestConfigurer).setHttpMethod(httpMethod);
@@ -81,7 +82,7 @@ public class RestfulHttpMethodTest_setUp {
         httpMethod.setUpArgs(requestConfigurer, repr);
     }
 
-    private void setsUpBody(final RestfulHttpMethod httpMethod) throws UnsupportedEncodingException {
+    private void setsUpBody(final RestfulHttpMethod2 httpMethod) throws UnsupportedEncodingException {
         context.checking(new Expectations() {
             {
                 oneOf(requestConfigurer).setHttpMethod(httpMethod);