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);