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:26 UTC

[isis] branch master updated (9261c59 -> e502566)

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

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


    from 9261c59  ISIS-2183: minor: cleaning up java-doc
     new 40a2072  ISIS-2158: decouple LinkRepresentation from client code
     new 56c165d  ISIS-2158: decouple RestfulHttpMethod from client code
     new e502566  ISIS-2158: decouple RestfulClient/Response from client code

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../restfulobjects/applib/LinkRepresentation.java  | 22 -------
 .../restfulobjects/applib/RestfulHttpMethod.java   | 73 +++-------------------
 .../applib/{client => }/RestfulRequest.java        | 67 +++++---------------
 .../applib/{client => }/RestfulResponse.java       |  4 +-
 .../applib/client/ClientRequestConfigurer.java     | 22 +++----
 .../RestfulHttpMethod2.java}                       | 15 +++--
 .../applib/RestfulHttpMethodTest_setUp.java        | 13 ++--
 .../RestfulRequest_DomainModelTest_parser.java     |  3 +-
 ...equestParameterTest_valueOf_xrodomainmodel.java |  5 +-
 ...equestParameterTest_valueOf_xrofollowlinks.java |  3 +-
 .../client/RestfulResponse_HeaderTest_Warning.java |  2 +
 .../client/RestfulResponse_HttpStatusCodeTest.java |  2 +-
 .../IsisJaxrsUtilityServiceResteasy4.java          |  4 +-
 .../rendering/ExceptionWithHttpStatusCode.java     |  2 +-
 .../viewer/restfulobjects/rendering/Responses.java |  2 +-
 .../RestfulObjectsApplicationException.java        |  2 +-
 .../conneg/ContentNegotiationServiceAbstract.java  |  2 +-
 ...entNegotiationServiceForRestfulObjectsV1_0.java |  2 +-
 .../ContentNegotiationServiceXRoDomainType.java    |  2 +-
 .../viewer/restfulobjects/rendering/util/Util.java |  2 +-
 .../viewer/IsisJaxrsUtilityService.java            |  2 +-
 .../viewer/context/ResourceContext.java            |  6 +-
 .../viewer/mappers/ExceptionMapperAbstract.java    |  2 +-
 .../resources/DomainObjectResourceServerside.java  |  4 +-
 .../viewer/resources/DomainResourceHelper.java     |  2 +-
 .../resources/DomainServiceResourceServerside.java |  2 +-
 .../resources/DomainTypeResourceServerside.java    |  2 +-
 .../resources/HomePageResourceServerside.java      |  4 +-
 .../viewer/resources/JsonParserHelper.java         |  2 +-
 .../resources/MenuBarsResourceServerside.java      |  2 +-
 .../viewer/resources/ObjectActionArgHelper.java    |  2 +-
 .../resources/ObjectAdapterAccessHelper.java       |  2 +-
 .../viewer/resources/ResourceAbstract.java         |  2 +-
 .../viewer/resources/UserResourceServerside.java   |  2 +-
 .../resources/VersionResourceServerside.java       |  4 +-
 ..._ensureCompatibleAcceptHeader_ContractTest.java |  2 +-
 .../context/ResourceContext_getArg_Test.java       |  2 +-
 ...tsApplicationExceptionMapper_Test_Contract.java |  2 +-
 .../legacy/restclient/RepresentationWalker.java    |  2 +-
 .../isis/legacy/restclient/RestfulClient.java      | 54 ++++++++++++----
 40 files changed, 137 insertions(+), 214 deletions(-)
 rename core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/{client => }/RestfulRequest.java (72%)
 rename core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/{client => }/RestfulResponse.java (98%)
 copy core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/{RestfulHttpMethod.java => client/RestfulHttpMethod2.java} (90%)


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

Posted by ah...@apache.org.
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);


[isis] 03/03: ISIS-2158: decouple RestfulClient/Response from client code

Posted by ah...@apache.org.
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 e5025660c57e344b9aadede5f428db5b09e96e8d
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 6 15:13:15 2020 +0100

    ISIS-2158: decouple RestfulClient/Response from client code
---
 .../applib/{client => }/RestfulRequest.java        | 67 ++++++----------------
 .../applib/{client => }/RestfulResponse.java       |  4 +-
 .../applib/client/ClientRequestConfigurer.java     | 14 ++---
 .../RestfulRequest_DomainModelTest_parser.java     |  3 +-
 ...equestParameterTest_valueOf_xrodomainmodel.java |  5 +-
 ...equestParameterTest_valueOf_xrofollowlinks.java |  3 +-
 .../client/RestfulResponse_HeaderTest_Warning.java |  2 +
 .../client/RestfulResponse_HttpStatusCodeTest.java |  2 +-
 .../IsisJaxrsUtilityServiceResteasy4.java          |  4 +-
 .../rendering/ExceptionWithHttpStatusCode.java     |  2 +-
 .../viewer/restfulobjects/rendering/Responses.java |  2 +-
 .../RestfulObjectsApplicationException.java        |  2 +-
 .../conneg/ContentNegotiationServiceAbstract.java  |  2 +-
 ...entNegotiationServiceForRestfulObjectsV1_0.java |  2 +-
 .../ContentNegotiationServiceXRoDomainType.java    |  2 +-
 .../viewer/restfulobjects/rendering/util/Util.java |  2 +-
 .../viewer/IsisJaxrsUtilityService.java            |  2 +-
 .../viewer/context/ResourceContext.java            |  6 +-
 .../viewer/mappers/ExceptionMapperAbstract.java    |  2 +-
 .../resources/DomainObjectResourceServerside.java  |  4 +-
 .../viewer/resources/DomainResourceHelper.java     |  2 +-
 .../resources/DomainServiceResourceServerside.java |  2 +-
 .../resources/DomainTypeResourceServerside.java    |  2 +-
 .../resources/HomePageResourceServerside.java      |  4 +-
 .../viewer/resources/JsonParserHelper.java         |  2 +-
 .../resources/MenuBarsResourceServerside.java      |  2 +-
 .../viewer/resources/ObjectActionArgHelper.java    |  2 +-
 .../resources/ObjectAdapterAccessHelper.java       |  2 +-
 .../viewer/resources/ResourceAbstract.java         |  2 +-
 .../viewer/resources/UserResourceServerside.java   |  2 +-
 .../resources/VersionResourceServerside.java       |  4 +-
 ..._ensureCompatibleAcceptHeader_ContractTest.java |  2 +-
 .../context/ResourceContext_getArg_Test.java       |  2 +-
 ...tsApplicationExceptionMapper_Test_Contract.java |  2 +-
 .../legacy/restclient/RepresentationWalker.java    |  2 +-
 .../isis/legacy/restclient/RestfulClient.java      | 42 ++++++++++----
 36 files changed, 96 insertions(+), 112 deletions(-)

diff --git a/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest.java b/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulRequest.java
similarity index 72%
rename from core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest.java
rename to core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulRequest.java
index a557e1e..e4a3187 100644
--- a/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest.java
+++ b/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulRequest.java
@@ -16,20 +16,19 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.viewer.restfulobjects.applib.client;
+package org.apache.isis.viewer.restfulobjects.applib;
 
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
 import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
 
-import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.util.Parser;
 
+import lombok.Getter;
+
 public final class RestfulRequest {
 
     public enum DomainModel {
@@ -127,9 +126,9 @@ public final class RestfulRequest {
             return parser;
         }
 
-        void setHeader(final ClientRequestConfigurer clientRequestConfigurer, final X t) {
-            clientRequestConfigurer.header(getName(), parser.asString(t));
-        }
+//        void setHeader(final ClientRequestConfigurer clientRequestConfigurer, final X t) {
+//            clientRequestConfigurer.header(getName(), parser.asString(t));
+//        }
 
         @Override
         public String toString() {
@@ -137,23 +136,18 @@ public final class RestfulRequest {
         }
     }
 
-    private final ClientRequestConfigurer clientRequestConfigurer;
-    private final Map<RequestParameter<?>, Object> args = new LinkedHashMap<>();
+    @Getter private final Map<RequestParameter<?>, Object> args = new LinkedHashMap<>();
 
-    public RestfulRequest(final ClientRequestConfigurer clientRequestConfigurer) {
-        this.clientRequestConfigurer = clientRequestConfigurer;
-    }
-
-    public <T> RestfulRequest withHeader(final Header<T> header, final T t) {
-        header.setHeader(clientRequestConfigurer, t);
-        return this;
-    }
-
-    @SuppressWarnings("unchecked")
-    public <T> RestfulRequest withHeader(final Header<List<T>> header, final T... ts) {
-        header.setHeader(clientRequestConfigurer, Arrays.asList(ts));
-        return this;
-    }
+//    public <T> RestfulRequest withHeader(final Header<T> header, final T t) {
+//        header.setHeader(clientRequestConfigurer, t);
+//        return this;
+//    }
+//
+//    @SuppressWarnings("unchecked")
+//    public <T> RestfulRequest withHeader(final Header<List<T>> header, final T... ts) {
+//        header.setHeader(clientRequestConfigurer, Arrays.asList(ts));
+//        return this;
+//    }
 
     public <Q> RestfulRequest withArg(final RestfulRequest.RequestParameter<Q> queryParam, final String argStrFormat, final Object... args) {
         final String argStr = String.format(argStrFormat, args);
@@ -166,31 +160,4 @@ public final class RestfulRequest {
         return this;
     }
 
-    public RestfulResponse<JsonRepresentation> execute() {
-        try {
-            if (!args.isEmpty()) {
-                clientRequestConfigurer.configureArgs(args);
-            }
-            final ClientRequest clientRequest = clientRequestConfigurer.getClientRequest();
-            final Response response = clientRequest.execute();
-
-            return RestfulResponse.ofT(response);
-        } catch (final Exception ex) {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    public <T extends JsonRepresentation> RestfulResponse<T> executeT() {
-        final RestfulResponse<JsonRepresentation> restfulResponse = execute();
-        return (RestfulResponse<T>) restfulResponse;
-    }
-
-    /**
-     * For testing only.
-     */
-    ClientRequestConfigurer getClientRequestConfigurer() {
-        return clientRequestConfigurer;
-    }
-
 }
diff --git a/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse.java b/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulResponse.java
similarity index 98%
rename from core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse.java
rename to core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulResponse.java
index 5e69c1b..eeb0158 100644
--- a/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse.java
+++ b/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulResponse.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.viewer.restfulobjects.applib.client;
+package org.apache.isis.viewer.restfulobjects.applib;
 
 import java.io.IOException;
 import java.lang.reflect.Constructor;
@@ -37,8 +37,6 @@ import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.JsonNode;
 
 import org.apache.isis.commons.internal.collections._Maps;
-import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.isis.viewer.restfulobjects.applib.util.JsonMapper;
 import org.apache.isis.viewer.restfulobjects.applib.util.Parser;
 
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 4ac322d..eaa5f3f 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,10 +25,11 @@ 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.RestfulRequest;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulRequest.RequestParameter;
 import org.apache.isis.viewer.restfulobjects.applib.util.UrlEncodingUtils;
 
+import lombok.Getter;
 import lombok.val;
 
 /**
@@ -52,7 +53,7 @@ public class ClientRequestConfigurer {
         return new ClientRequestConfigurer(clientRequest, uriBuilder);
     }
 
-    private final ClientRequest clientRequest;
+    @Getter private final ClientRequest clientRequest;
     private final UriBuilder uriBuilder;
 
     ClientRequestConfigurer(final ClientRequest clientRequest, final UriBuilder uriBuilder) {
@@ -166,13 +167,6 @@ public class ClientRequestConfigurer {
         return this;
     }
 
-    /**
-     * For testing.
-     */
-    ClientRequest getClientRequest() {
-        return clientRequest;
-    }
-
     RestfulHttpMethod2 getHttpMethod() {
         final String httpMethod = clientRequest.getHttpMethod();
         return RestfulHttpMethod2.valueOf(httpMethod);
diff --git a/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest_DomainModelTest_parser.java b/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest_DomainModelTest_parser.java
index fd7f748..4110217 100644
--- a/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest_DomainModelTest_parser.java
+++ b/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest_DomainModelTest_parser.java
@@ -22,7 +22,8 @@ import org.junit.Test;
 
 import static org.junit.Assert.assertSame;
 
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.DomainModel;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulRequest;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulRequest.DomainModel;
 import org.apache.isis.viewer.restfulobjects.applib.util.Parser;
 
 public class RestfulRequest_DomainModelTest_parser {
diff --git a/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest_RequestParameterTest_valueOf_xrodomainmodel.java b/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest_RequestParameterTest_valueOf_xrodomainmodel.java
index 8a6b963..f459778 100644
--- a/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest_RequestParameterTest_valueOf_xrodomainmodel.java
+++ b/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest_RequestParameterTest_valueOf_xrodomainmodel.java
@@ -25,8 +25,9 @@ import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.DomainModel;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.RequestParameter;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulRequest;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulRequest.DomainModel;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulRequest.RequestParameter;
 
 public class RestfulRequest_RequestParameterTest_valueOf_xrodomainmodel {
 
diff --git a/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest_RequestParameterTest_valueOf_xrofollowlinks.java b/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest_RequestParameterTest_valueOf_xrofollowlinks.java
index 8fdd2b5..f880406 100644
--- a/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest_RequestParameterTest_valueOf_xrofollowlinks.java
+++ b/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest_RequestParameterTest_valueOf_xrofollowlinks.java
@@ -27,7 +27,8 @@ import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.RequestParameter;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulRequest;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulRequest.RequestParameter;
 
 public class RestfulRequest_RequestParameterTest_valueOf_xrofollowlinks {
 
diff --git a/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse_HeaderTest_Warning.java b/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse_HeaderTest_Warning.java
index a614233..aeb91fd 100644
--- a/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse_HeaderTest_Warning.java
+++ b/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse_HeaderTest_Warning.java
@@ -23,6 +23,8 @@ import org.junit.Test;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
+
 public class RestfulResponse_HeaderTest_Warning {
 
 
diff --git a/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse_HttpStatusCodeTest.java b/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse_HttpStatusCodeTest.java
index d38024b..d004858 100644
--- a/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse_HttpStatusCodeTest.java
+++ b/core/viewers/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse_HttpStatusCodeTest.java
@@ -25,7 +25,7 @@ import org.junit.Test;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
 
 public class RestfulResponse_HttpStatusCodeTest {
 
diff --git a/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/IsisJaxrsUtilityServiceResteasy4.java b/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/IsisJaxrsUtilityServiceResteasy4.java
index 13d8c98..7754201 100644
--- a/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/IsisJaxrsUtilityServiceResteasy4.java
+++ b/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/IsisJaxrsUtilityServiceResteasy4.java
@@ -21,8 +21,8 @@ package org.apache.isis.viewer.restfulobjects.jaxrsresteasy4;
 import org.jboss.resteasy.spi.Failure;
 import org.springframework.stereotype.Service;
 
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.restfulobjects.viewer.IsisJaxrsUtilityService;
 
 /**
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ExceptionWithHttpStatusCode.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ExceptionWithHttpStatusCode.java
index c88d08e..e13e30c 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ExceptionWithHttpStatusCode.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ExceptionWithHttpStatusCode.java
@@ -18,7 +18,7 @@
  */
 package org.apache.isis.viewer.restfulobjects.rendering;
 
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
 
 public interface ExceptionWithHttpStatusCode {
 
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/Responses.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/Responses.java
index d04569c..3ff22e2 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/Responses.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/Responses.java
@@ -28,7 +28,7 @@ import javax.ws.rs.core.Response;
 
 import org.apache.isis.applib.services.clock.ClockService;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.applib.util.JsonMapper;
 import org.apache.isis.viewer.restfulobjects.rendering.util.JsonWriterUtil;
 
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RestfulObjectsApplicationException.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RestfulObjectsApplicationException.java
index 101f5ab..166a3b5 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RestfulObjectsApplicationException.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RestfulObjectsApplicationException.java
@@ -19,7 +19,7 @@
 package org.apache.isis.viewer.restfulobjects.rendering;
 
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
 
 public class RestfulObjectsApplicationException
 extends RuntimeException
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceAbstract.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceAbstract.java
index c6fc435..ea42d4b 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceAbstract.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceAbstract.java
@@ -29,7 +29,7 @@ import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.factory.InstanceUtil;
 import org.apache.isis.metamodel.spec.ManagedObject;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.rendering.IResourceContext;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndAction;
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
index 145748c..c6714be 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
@@ -44,7 +44,7 @@ import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.rendering.Caching;
 import org.apache.isis.viewer.restfulobjects.rendering.IResourceContext;
 import org.apache.isis.viewer.restfulobjects.rendering.Responses;
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java
index 05e58b7..13e8c4e 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java
@@ -33,7 +33,7 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.applib.services.conmap.ContentMappingService;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.rendering.IResourceContext;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndActionInvocation;
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/Util.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/Util.java
index a1314d6..fe9522c 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/Util.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/Util.java
@@ -28,7 +28,7 @@ import com.fasterxml.jackson.databind.JsonMappingException;
 import org.apache.isis.commons.internal.base._Bytes;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.applib.util.JsonMapper;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/IsisJaxrsUtilityService.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/IsisJaxrsUtilityService.java
index 50b06f8..7a81215 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/IsisJaxrsUtilityService.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/IsisJaxrsUtilityService.java
@@ -18,7 +18,7 @@
  */
 package org.apache.isis.viewer.restfulobjects.viewer;
 
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
 
 /**
  * Replaces the former 'IsisJaxrsServerPlugin'.
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext.java
index 72445cf..16581db 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext.java
@@ -42,9 +42,9 @@ import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.runtime.context.session.RuntimeContextBase;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.DomainModel;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.RequestParameter;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulRequest.DomainModel;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulRequest.RequestParameter;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.restfulobjects.rendering.IResourceContext;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAdapterLinkTo;
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperAbstract.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperAbstract.java
index 61f34d0..ceffa51 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperAbstract.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperAbstract.java
@@ -32,7 +32,7 @@ import org.apache.isis.applib.RecoverableException;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.rendering.ExceptionWithBody;
 import org.apache.isis.viewer.restfulobjects.rendering.ExceptionWithHttpStatusCode;
 import org.apache.isis.viewer.restfulobjects.viewer.IsisJaxrsUtilityService;
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
index 03ad301..c023407 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
@@ -63,8 +63,8 @@ import org.apache.isis.viewer.restfulobjects.applib.Rel;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectResource;
 import org.apache.isis.viewer.restfulobjects.rendering.Responses;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainResourceHelper.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainResourceHelper.java
index 2f5c01b..2c50907 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainResourceHelper.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainResourceHelper.java
@@ -28,7 +28,7 @@ import org.apache.isis.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.rendering.IResourceContext;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ActionResultReprRenderer;
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainServiceResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainServiceResourceServerside.java
index 7bfd912..24f8fdb 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainServiceResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainServiceResourceServerside.java
@@ -46,7 +46,7 @@ import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainServiceResource;
 import org.apache.isis.viewer.restfulobjects.rendering.Caching;
 import org.apache.isis.viewer.restfulobjects.rendering.Responses;
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java
index 8849204..2d06c8b 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java
@@ -47,7 +47,7 @@ import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.Rel;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.restfulobjects.applib.domaintypes.DomainTypeResource;
 import org.apache.isis.viewer.restfulobjects.applib.util.UrlEncodingUtils;
 import org.apache.isis.viewer.restfulobjects.rendering.Caching;
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/HomePageResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/HomePageResourceServerside.java
index 9933143..3026303 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/HomePageResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/HomePageResourceServerside.java
@@ -32,8 +32,8 @@ import org.apache.isis.metamodel.context.MetaModelContext;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.restfulobjects.applib.homepage.HomePageResource;
 import org.apache.isis.viewer.restfulobjects.rendering.Caching;
 import org.apache.isis.viewer.restfulobjects.rendering.Responses;
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java
index 497a36e..0c5dda8 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java
@@ -25,7 +25,7 @@ import org.apache.isis.metamodel.adapter.oid.Oid;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.rendering.IResourceContext;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.JsonValueEncoder;
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/MenuBarsResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/MenuBarsResourceServerside.java
index b626970..f881db2 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/MenuBarsResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/MenuBarsResourceServerside.java
@@ -36,7 +36,7 @@ import org.apache.isis.viewer.restfulobjects.applib.Rel;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.applib.menubars.MenuBarsResource;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectActionArgHelper.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectActionArgHelper.java
index 6a5d030..15d00ce 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectActionArgHelper.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectActionArgHelper.java
@@ -30,7 +30,7 @@ import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.rendering.IResourceContext;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectAdapterAccessHelper.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectAdapterAccessHelper.java
index 0b8214d..474ea2d 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectAdapterAccessHelper.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectAdapterAccessHelper.java
@@ -28,7 +28,7 @@ import org.apache.isis.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.rendering.IResourceContext;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.MemberType;
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
index 0b78197..73d27b1 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
@@ -41,7 +41,7 @@ import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.runtime.context.IsisContext;
 import org.apache.isis.runtime.session.IsisSession;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
 import org.apache.isis.viewer.restfulobjects.rendering.util.Util;
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/UserResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/UserResourceServerside.java
index f9c23c0..e25a3de 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/UserResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/UserResourceServerside.java
@@ -33,7 +33,7 @@ import org.apache.isis.metamodel.context.MetaModelContext;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.applib.user.UserResource;
 import org.apache.isis.viewer.restfulobjects.rendering.Caching;
 import org.apache.isis.viewer.restfulobjects.rendering.Responses;
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/VersionResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/VersionResourceServerside.java
index dd2cdea..291ea9f 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/VersionResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/VersionResourceServerside.java
@@ -35,8 +35,8 @@ import org.apache.isis.metamodel.context.MetaModelContext;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.restfulobjects.applib.version.VersionResource;
 import org.apache.isis.viewer.restfulobjects.rendering.Caching;
 import org.apache.isis.viewer.restfulobjects.rendering.Responses;
diff --git a/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext_ensureCompatibleAcceptHeader_ContractTest.java b/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext_ensureCompatibleAcceptHeader_ContractTest.java
index 7e2fedb..d70dc75 100644
--- a/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext_ensureCompatibleAcceptHeader_ContractTest.java
+++ b/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext_ensureCompatibleAcceptHeader_ContractTest.java
@@ -49,7 +49,7 @@ import org.apache.isis.security.api.authentication.AuthenticationSession;
 import org.apache.isis.unittestsupport.config.IsisConfigurationLegacy;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 
 public abstract class ResourceContext_ensureCompatibleAcceptHeader_ContractTest {
diff --git a/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext_getArg_Test.java b/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext_getArg_Test.java
index f3a841e..b4d2417 100644
--- a/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext_getArg_Test.java
+++ b/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext_getArg_Test.java
@@ -49,7 +49,7 @@ import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.RequestParameter;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulRequest.RequestParameter;
 import org.apache.isis.viewer.restfulobjects.applib.util.UrlEncodingUtils;
 
 public class ResourceContext_getArg_Test {
diff --git a/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/RestfulObjectsApplicationExceptionMapper_Test_Contract.java b/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/RestfulObjectsApplicationExceptionMapper_Test_Contract.java
index caf3e5e..4c76551 100644
--- a/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/RestfulObjectsApplicationExceptionMapper_Test_Contract.java
+++ b/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/RestfulObjectsApplicationExceptionMapper_Test_Contract.java
@@ -33,7 +33,7 @@ import static org.junit.Assert.assertThat;
 
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.restfulobjects.applib.util.JsonMapper;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 import org.apache.isis.viewer.restfulobjects.viewer.IsisJaxrsUtilityService;
diff --git a/legacy/vro/restclient/src/main/java/org/apache/isis/legacy/restclient/RepresentationWalker.java b/legacy/vro/restclient/src/main/java/org/apache/isis/legacy/restclient/RepresentationWalker.java
index 5dc80c3..9f39758 100644
--- a/legacy/vro/restclient/src/main/java/org/apache/isis/legacy/restclient/RepresentationWalker.java
+++ b/legacy/vro/restclient/src/main/java/org/apache/isis/legacy/restclient/RepresentationWalker.java
@@ -30,7 +30,7 @@ import com.fasterxml.jackson.databind.JsonMappingException;
 
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 
 import lombok.AllArgsConstructor;
 
diff --git a/legacy/vro/restclient/src/main/java/org/apache/isis/legacy/restclient/RestfulClient.java b/legacy/vro/restclient/src/main/java/org/apache/isis/legacy/restclient/RestfulClient.java
index b790f0e..8b5ac53 100644
--- a/legacy/vro/restclient/src/main/java/org/apache/isis/legacy/restclient/RestfulClient.java
+++ b/legacy/vro/restclient/src/main/java/org/apache/isis/legacy/restclient/RestfulClient.java
@@ -25,13 +25,14 @@ import javax.ws.rs.client.ClientBuilder;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
+import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulRequest;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.applib.client.ClientExecutor;
 import org.apache.isis.viewer.restfulobjects.applib.client.ClientRequestConfigurer;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectResource;
 import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainServiceResource;
 import org.apache.isis.viewer.restfulobjects.applib.domaintypes.DomainTypeResource;
@@ -39,6 +40,9 @@ import org.apache.isis.viewer.restfulobjects.applib.homepage.HomePageResource;
 import org.apache.isis.viewer.restfulobjects.applib.user.UserResource;
 import org.apache.isis.viewer.restfulobjects.applib.version.VersionResource;
 
+import lombok.Getter;
+import lombok.val;
+
 public class RestfulClient {
 
     private final HomePageResource homePageResource;
@@ -49,7 +53,7 @@ public class RestfulClient {
     private final DomainTypeResource domainTypeResource;
 
     private final ClientExecutor executor;
-    private final ClientRequestFactory clientRequestFactory;
+    @Getter private final ClientRequestFactory clientRequestFactory; // exposed for testing purposes only
 
 
     /**
@@ -141,8 +145,8 @@ public class RestfulClient {
 
         clientRequestConfigurer.configureArgs(requestArgs);
 
-        final RestfulRequest restfulRequest = new RestfulRequest(clientRequestConfigurer);
-        return restfulRequest.executeT();
+        final RestfulRequest restfulRequest = new RestfulRequest();
+        return execute(restfulRequest, clientRequestConfigurer);
     }
 
     public RestfulRequest createRequest(final RestfulHttpMethod httpMethod, final String uriTemplate) {
@@ -156,14 +160,30 @@ public class RestfulClient {
         clientRequestConfigurer.accept(MediaType.APPLICATION_JSON_TYPE);
         clientRequestConfigurer.setHttpMethod(httpMethod);
 
-        return new RestfulRequest(clientRequestConfigurer);
+        return new RestfulRequest();
     }
+    
+    // -- HELPER
+    
+    private <T extends JsonRepresentation> RestfulResponse<T> execute(
+            final RestfulRequest restfulRequest,
+            final ClientRequestConfigurer clientRequestConfigurer) {
+        
+        val args = restfulRequest.getArgs();
+        
+        try {
+            if (!args.isEmpty()) {
+                clientRequestConfigurer.configureArgs(args);
+            }
+            val clientRequest = clientRequestConfigurer.getClientRequest();
+            val response = clientRequest.execute();
 
-    /**
-     * exposed for testing purposes only.
-     */
-    public ClientRequestFactory getClientRequestFactory() {
-        return clientRequestFactory;
+            return _Casts.<RestfulResponse<T>>uncheckedCast(RestfulResponse.ofT(response));
+        } catch (final Exception ex) {
+            throw new RuntimeException(ex);
+        }
     }
 
+
+
 }


[isis] 01/03: ISIS-2158: decouple LinkRepresentation from client code

Posted by ah...@apache.org.
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 40a20721ce3edc26885997469240ed60e7c6f8f9
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 6 14:13:54 2020 +0100

    ISIS-2158: decouple LinkRepresentation from client code
---
 .../restfulobjects/applib/LinkRepresentation.java  | 22 ----------------------
 .../isis/legacy/restclient/RestfulClient.java      | 16 ++++++++++++++--
 2 files changed, 14 insertions(+), 24 deletions(-)

diff --git a/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/LinkRepresentation.java b/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/LinkRepresentation.java
index e9d1c7d..61fb739 100644
--- a/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/LinkRepresentation.java
+++ b/core/viewers/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/LinkRepresentation.java
@@ -24,11 +24,6 @@ import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 
-import org.apache.isis.viewer.restfulobjects.applib.client.ClientExecutor;
-import org.apache.isis.viewer.restfulobjects.applib.client.ClientRequestConfigurer;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
-
 public final class LinkRepresentation extends JsonRepresentation {
 
     public LinkRepresentation() {
@@ -111,23 +106,6 @@ public final class LinkRepresentation extends JsonRepresentation {
         return new JsonRepresentation(arguments);
     }
 
-    public <T> RestfulResponse<JsonRepresentation> follow(final ClientExecutor executor) throws Exception {
-        return follow(executor, null);
-    }
-
-    public <T extends JsonRepresentation> RestfulResponse<T> follow(final ClientExecutor executor, final JsonRepresentation requestArgs) throws Exception {
-
-        final ClientRequestConfigurer clientRequestConfigurer = ClientRequestConfigurer.create(executor, getHref());
-
-        clientRequestConfigurer.accept(MediaType.APPLICATION_JSON_TYPE);
-        clientRequestConfigurer.setHttpMethod(getHttpMethod());
-
-        clientRequestConfigurer.configureArgs(requestArgs);
-
-        final RestfulRequest restfulRequest = new RestfulRequest(clientRequestConfigurer);
-        return restfulRequest.executeT();
-    }
-
     @Override
     public int hashCode() {
         final int prime = 31;
diff --git a/legacy/vro/restclient/src/main/java/org/apache/isis/legacy/restclient/RestfulClient.java b/legacy/vro/restclient/src/main/java/org/apache/isis/legacy/restclient/RestfulClient.java
index 2c71242..b790f0e 100644
--- a/legacy/vro/restclient/src/main/java/org/apache/isis/legacy/restclient/RestfulClient.java
+++ b/legacy/vro/restclient/src/main/java/org/apache/isis/legacy/restclient/RestfulClient.java
@@ -129,8 +129,20 @@ public class RestfulClient {
         return followT(link, requestArgs);
     }
 
-    public <T extends JsonRepresentation> RestfulResponse<T> followT(final LinkRepresentation link, final JsonRepresentation requestArgs) throws Exception {
-        return link.<T> follow(executor, requestArgs);
+    public <T extends JsonRepresentation> RestfulResponse<T> followT(
+            final LinkRepresentation link, 
+            final JsonRepresentation requestArgs) throws Exception {
+        
+        final ClientRequestConfigurer clientRequestConfigurer = 
+                ClientRequestConfigurer.create(executor, link.getHref());
+
+        clientRequestConfigurer.accept(MediaType.APPLICATION_JSON_TYPE);
+        clientRequestConfigurer.setHttpMethod(link.getHttpMethod());
+
+        clientRequestConfigurer.configureArgs(requestArgs);
+
+        final RestfulRequest restfulRequest = new RestfulRequest(clientRequestConfigurer);
+        return restfulRequest.executeT();
     }
 
     public RestfulRequest createRequest(final RestfulHttpMethod httpMethod, final String uriTemplate) {