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

danhaywood pushed a commit to branch ISIS-1779-jax-rs-2
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 72f34526c4880bca27376178b22c9aed4939ca54
Author: Andi Huber <ahu...@apache.org>
AuthorDate: Sun Nov 19 15:20:44 2017 +0100

    ISIS-1779 Transition to JAX-RS 2.0 Client API
    removed dependency on deprecated resteasy client api
---
 core/applib/pom.xml                                |   9 +-
 core/pom.xml                                       |  18 ++-
 .../core/runtime/system/context/IsisContext.java   |  13 ++-
 .../persistence/PersistenceSessionFactory.java     |  40 +++----
 .../apache/isis/viewer/legacy/ClientExecutor.java  | 123 +++++++++++++++++++++
 .../ClientRequest.java}                            |  36 +++---
 .../ClientRequestFactory.java}                     |  45 ++++----
 .../apache/isis/viewer/legacy/RestEasyLegacy.java  |  89 +++++++++++++++
 .../restfulobjects/applib/LinkRepresentation.java  |   3 +-
 .../restfulobjects/applib/RestfulHttpMethod.java   |   2 +-
 .../applib/client/ClientRequestConfigurer.java     |  15 +--
 .../applib/client/RestfulClient.java               |  32 ++----
 .../applib/client/RestfulRequest.java              |  10 +-
 .../applib/client/RestfulResponse.java             |   2 +
 .../applib/domainobjects/DomainObjectResource.java |  30 +++--
 .../domainobjects/DomainServiceResource.java       |  14 +--
 .../applib/domaintypes/DomainTypeResource.java     |  19 ++--
 .../applib/homepage/HomePageResource.java          |  12 +-
 .../restfulobjects/applib/user/UserResource.java   |   6 +-
 .../restfulobjects/applib/util/JsonMapper.java     |   6 +-
 .../applib/version/VersionResource.java            |   3 +-
 .../viewer/restfulobjects/rendering/Responses.java |  22 +++-
 .../conneg/IsisPrettyPrintingProcessor.java        |   2 +-
 .../PreProcessInterceptorForIsisSession.java       |  12 +-
 24 files changed, 403 insertions(+), 160 deletions(-)

diff --git a/core/applib/pom.xml b/core/applib/pom.xml
index 7bf2b9b..c33e221 100644
--- a/core/applib/pom.xml
+++ b/core/applib/pom.xml
@@ -74,10 +74,17 @@
             <groupId>org.apache.geronimo.specs</groupId>
             <artifactId>geronimo-jcdi_1.0_spec</artifactId>
         </dependency>
+        
+               <!-- replaced since Isis 2.0.0 by org.jboss.resteasy:jaxrs-api  
         <dependency>
             <groupId>org.jboss.spec.javax.ws.rs</groupId>
             <artifactId>jboss-jaxrs-api_2.0_spec</artifactId>
-        </dependency>
+        </dependency> -->
+        <dependency>
+                   <groupId>org.jboss.resteasy</groupId>
+                   <artifactId>jaxrs-api</artifactId>
+               </dependency>
+                       
 
         <dependency>
             <groupId>org.axonframework</groupId>
diff --git a/core/pom.xml b/core/pom.xml
index c5cdc8d..ebd504f 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -134,7 +134,12 @@
         <!-- using 2.3.3 throws SQL exception in simpleapp integtests -->
         <hsqldb.version>2.3.4</hsqldb.version>
         <log4jdbc-remix.version>0.2.7</log4jdbc-remix.version>
-        <resteasy-jaxrs.version>3.0.24.Final</resteasy-jaxrs.version>
+
+               <!-- for JEE 7 JAX-RS API 2.0 -->
+               <!-- 
<resteasy-jaxrs.version>3.1.4.Final</resteasy-jaxrs.version> -->
+               
+               <!-- for JEE 8 JAX-RS API 2.1 -->
+        <resteasy-jaxrs.version>4.0.0.Beta1</resteasy-jaxrs.version>
 
         <jetty.version>9.4.3.v20170317</jetty.version>
 
@@ -180,7 +185,11 @@
 
         <javax-mail.version>1.4.7</javax-mail.version>
 
+               <!-- replaced since Isis 2.0.0 by jboss-jaxrs-api 
         
<jboss-jaxrs-api_2.0_spec.version>1.0.0.Final</jboss-jaxrs-api_2.0_spec.version>
+        -->
+        <jboss-jaxrs-api.version>3.0.12.Final</jboss-jaxrs-api.version>
+        
     </properties>
 
     <scm>
@@ -1947,11 +1956,18 @@ ${license.additional-notes}
                 <version>${geronimo-jcdi_1.0_spec.version}</version>
             </dependency>
 
+                       <!-- replaced since Isis 2.0.0 by 
org.jboss.resteasy:jaxrs-api  
             <dependency>
                 <groupId>org.jboss.spec.javax.ws.rs</groupId>
                 <artifactId>jboss-jaxrs-api_2.0_spec</artifactId>
                 <version>${jboss-jaxrs-api_2.0_spec.version}</version>
             </dependency>
+            -->
+               <dependency>
+                       <groupId>org.jboss.resteasy</groupId>
+                       <artifactId>jaxrs-api</artifactId>
+                       <version>${jboss-jaxrs-api.version}</version>
+                       </dependency>
 
 
             <!-- javax APIs -->
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
index 059914b..17ebab6 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
@@ -19,14 +19,15 @@
 
 package org.apache.isis.core.runtime.system.context;
 
+import org.apache.log4j.BasicConfigurator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import org.apache.isis.core.commons.exceptions.IsisException;
 import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
 import org.apache.isis.core.runtime.system.session.IsisSession;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder;
-import org.apache.log4j.BasicConfigurator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Simply a static field holding the {@link IsisSessionFactory} singleton, and 
convenience methods to obtain the
@@ -87,10 +88,10 @@ public final class IsisContext {
        }
 
        /**
-        * life-cycle exit point
+        * Marks the end of this IsisContext's life-cycle.
         * <p>
         * Destroys this context and clears any state associated with it. 
-        * It marks the end of IsisContext's life-cycle. Subsequent calls have 
no effect.
+        * Subsequent calls have no effect.
         * </p> 
         */
        public static void destroy() {
@@ -127,7 +128,7 @@ public final class IsisContext {
 
        /**
         * TODO [andi-huber] not sure if required, initial idea was to force 
log4j
-        * re-configuration on a undeploy/deploy cycle
+        * re-configuration on an undeploy/deploy cycle
         */
        private static void resetLogging() {
                org.apache.log4j.Logger.getRootLogger().removeAllAppenders();
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
index 989c989..67de81f 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
@@ -53,18 +53,12 @@ public class PersistenceSessionFactory implements 
ApplicationScopedComponent, Fi
 
     private static final Logger LOG = 
LoggerFactory.getLogger(PersistenceSessionFactory.class);
 
-    //region > constructor
-
     private final IsisConfigurationDefault configuration;
 
     public PersistenceSessionFactory(final IsisConfigurationDefault 
isisConfiguration) {
         this.configuration = isisConfiguration;
     }
 
-    //endregion
-
-    //region > init, createDataNucleusApplicationComponents
-
     public static final String JDO_OBJECTSTORE_CONFIG_PREFIX = 
"isis.persistor.datanucleus";  // specific to the JDO objectstore
     public static final String DATANUCLEUS_CONFIG_PREFIX = 
"isis.persistor.datanucleus.impl"; // reserved for datanucleus' own config props
 
@@ -159,23 +153,32 @@ public class PersistenceSessionFactory implements 
ApplicationScopedComponent, Fi
             props.put(key, value);
         }
     }
-    //endregion
 
-    //region > shutdown
+    /**
+     * Marks the end of this PersistenceSessionFactory's life-cycle.
+     * 
+     * <p>
+     * From <a 
href="http://www.datanucleus.org/products/datanucleus/jdo/persistence.html";>JDO 
Persistence Guide</a> ...
+     * <br/>
+     * Since the PMF has significant resources associated with it, it should 
always be closed 
+     * when you no longer need to perform any more persistence operations. For 
most operations 
+     * this will be when closing your application.
+     * </p>
+     * 
+     */
     @Programmatic
     public final void shutdown() {
+        if(!isInitialized()) {
+            return;
+        }
+
        //XXX ISIS-1756 purge any DataNucleus State
        if(applicationComponents != null) {
                applicationComponents.shutdown();
-               applicationComponents = null;
+            applicationComponents = null;
        }
     }
 
-    //endregion
-
-
-    //region > createPersistenceSession
-
     /**
      * Called by {@link 
org.apache.isis.core.runtime.system.session.IsisSessionFactory#openSession(AuthenticationSession)}.
      */
@@ -194,12 +197,6 @@ public class PersistenceSessionFactory implements 
ApplicationScopedComponent, Fi
                 fixturesInstalledFlag);
     }
 
-
-
-    //endregion
-
-    //region > FixturesInstalledFlag impl
-
     private Boolean fixturesInstalled;
 
     @Programmatic
@@ -214,7 +211,4 @@ public class PersistenceSessionFactory implements 
ApplicationScopedComponent, Fi
         this.fixturesInstalled = fixturesInstalled;
     }
 
-    //endregion
-
-
 }
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/legacy/ClientExecutor.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/legacy/ClientExecutor.java
new file mode 100644
index 0000000..bbe683a
--- /dev/null
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/legacy/ClientExecutor.java
@@ -0,0 +1,123 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.legacy;
+
+import java.net.URI;
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.client.Invocation.Builder;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriBuilder;
+
+/**
+ * Compatibility layer, legacy of deprecated resteasy client API. 
+ * 
+ * @author ahu...@apache.org
+ *
+ */
+public interface ClientExecutor {
+
+       ClientRequest createRequest(UriBuilder uriBuilder);
+       WebTarget webTarget(URI baseUri);
+
+       static ClientExecutor of(final Client client) {
+               return new ClientExecutor() {
+
+                       @Override
+                       public ClientRequest createRequest(UriBuilder 
uriBuilder) {
+                               
+                               return new ClientRequest() {
+                                       
+                                       final WebTarget target = 
client.target(uriBuilder);
+                                                                               
+                                       final List<MediaType> accept = new 
ArrayList<>();
+                                       final List<Map.Entry<String, String>> 
header = new ArrayList<>();
+                                       
+                                       private Entity<String> payload;
+
+                                       // TODO [andi-huber] just a wild guess
+                                       private String method = "get";
+
+                                       @Override
+                                       public String getHttpMethod() {
+                                               return method;
+                                       }
+                                       
+                                       @Override
+                                       public void setHttpMethod(String 
method) {
+                                               this.method = method;
+                                       }
+                                       
+                                       @Override
+                                       public void accept(MediaType mediaType) 
{
+                                               accept.add(mediaType);
+                                       }
+                                       
+                                       @Override
+                                       public void header(String headerName, 
String value) {
+                                               header.add(new 
AbstractMap.SimpleEntry<String, String>(headerName, value));
+                                       }
+                                       
+                                       @Override
+                                       public void addQueryParameter(String 
param, String arg) {
+                                               target.queryParam(param, arg);
+                                       }
+                                       
+                                       @Override
+                                       public void jsonPayload(String 
jsonString) {
+                                               payload = 
Entity.json(jsonString);
+                                       }
+                                       
+                                       @Override
+                                       public Response execute() {
+                                               final Builder builder = 
target.request();
+                                               
+                                               accept.stream()
+                                                       
.forEach(builder::accept);
+                                               header.stream()
+                                                       
.forEach(e->builder.header(e.getKey(), e.getValue()));
+                                               
+                                               final Invocation invocation = 
payload==null 
+                                                               ? 
builder.build(method)
+                                                               : 
builder.build(method, payload);  
+                                               
+                                               return invocation.invoke();
+                                       }
+
+                               };
+                       }
+
+                       @Override
+                       public WebTarget webTarget(URI baseUri) {
+                               return client.target(baseUri);
+                       }
+                       
+               };
+       }
+       
+
+}
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/version/VersionResource.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/legacy/ClientRequest.java
similarity index 59%
copy from 
core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/version/VersionResource.java
copy to 
core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/legacy/ClientRequest.java
index 535fc72..dd167fa 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/version/VersionResource.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/legacy/ClientRequest.java
@@ -16,30 +16,30 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.viewer.restfulobjects.applib.version;
+package org.apache.isis.viewer.legacy;
 
-import javax.ws.rs.*;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
-import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
-import org.jboss.resteasy.annotations.ClientResponseType;
-
-@Path("/version")
-public interface VersionResource {
+/**
+ * Compatibility layer, legacy of deprecated resteasy client API. 
+ * 
+ * @author ahu...@apache.org
+ *
+ */
+public interface ClientRequest {
 
-    @GET
-    @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_VERSION })
-    @ClientResponseType(entityType = String.class)
-    public Response version();
+       void accept(MediaType mediaType);
 
-    @DELETE
-    public Response deleteVersionNotAllowed();
+       void header(String headerName, String value);
 
-    @PUT
-    public Response putVersionNotAllowed();
+       void setHttpMethod(String httpMethod);
+       String getHttpMethod();
+       
+       void addQueryParameter(String param, String arg);
+       
+       void jsonPayload(String jsonString);
 
-    @POST
-    public Response postVersionNotAllowed();
+       Response execute();
 
-}
\ No newline at end of file
+}
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/version/VersionResource.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/legacy/ClientRequestFactory.java
similarity index 55%
copy from 
core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/version/VersionResource.java
copy to 
core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/legacy/ClientRequestFactory.java
index 535fc72..1c9ae07 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/version/VersionResource.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/legacy/ClientRequestFactory.java
@@ -16,30 +16,37 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.viewer.restfulobjects.applib.version;
+package org.apache.isis.viewer.legacy;
 
-import javax.ws.rs.*;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
+import java.net.URI;
 
-import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
-import org.jboss.resteasy.annotations.ClientResponseType;
+/**
+ * Compatibility layer, legacy of deprecated resteasy client API. 
+ * 
+ * @author ahu...@apache.org
+ *
+ */
+public interface ClientRequestFactory {
 
-@Path("/version")
-public interface VersionResource {
+       <T> T createProxy(Class<T> clazz);
 
-    @GET
-    @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_VERSION })
-    @ClientResponseType(entityType = String.class)
-    public Response version();
+       URI getBase();
 
-    @DELETE
-    public Response deleteVersionNotAllowed();
+       static ClientRequestFactory of(final ClientExecutor clientExecutor, 
final URI baseUri) {
+               
+               return new ClientRequestFactory() {
 
-    @PUT
-    public Response putVersionNotAllowed();
+                       @Override
+                       public <T> T createProxy(Class<T> clazz) {
+                               return 
RestEasyLegacy.proxy(clientExecutor.webTarget(baseUri), clazz);
+                       }
 
-    @POST
-    public Response postVersionNotAllowed();
+                       @Override
+                       public URI getBase() {
+                               return baseUri;
+                       }
+                       
+               };
+       }
 
-}
\ No newline at end of file
+}
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/legacy/RestEasyLegacy.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/legacy/RestEasyLegacy.java
new file mode 100644
index 0000000..6e6bac9
--- /dev/null
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/legacy/RestEasyLegacy.java
@@ -0,0 +1,89 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.legacy;
+
+import java.lang.reflect.Method;
+
+import javax.ws.rs.NotSupportedException;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
+
+/**
+ * Compatibility layer, legacy of deprecated resteasy client API. 
+ * 
+ * @author ahu...@apache.org
+ *
+ */
+public class RestEasyLegacy {
+
+       public static String getEntityAsStringFrom(Response response) {
+               
+               final Object result = response.getEntity();
+               
+               if(result == null)
+                       return null;
+               
+               if(result instanceof String) {
+                       return (String) result;
+               }
+               
+               // TODO [andi-huber] just a wild guess
+               return response.readEntity(String.class);
+
+               // legacy code ...
+        // final ClientResponse<?> clientResponse = (ClientResponse<?>) 
response;
+        // return clientResponse.getEntity(String.class);
+       }
+
+       public static void setReturnTypeToString(Response response) {
+
+               // TODO [andi-huber] why is this needed at all?
+
+               // legacy code ...
+        // final BaseClientResponse<String> restEasyResponse = 
(BaseClientResponse<String>) response;
+        // restEasyResponse.setReturnType(String.class);
+               
+               System.err.println("WARN RestEasyLegacy - 
setReturnTypeToString(Response) not implemented!");
+               
+       }
+
+       @SuppressWarnings("unchecked")
+       public static <T> T proxy(WebTarget webTarget, Class<T> clazz) {
+               
+               // legacy of
+               // final org.jboss.resteasy.client.jaxrs.ResteasyWebTarget 
target = 
+               //              
(org.jboss.resteasy.client.jaxrs.ResteasyWebTarget) webTarget;
+               // return target.proxy(clazz);
+               
+               try {
+                       // [andi-huber] resort to reflection, since we wan't to 
get rid of resteasy legacy
+                       // first step is to remove compile time dependencies
+                       
+                       final Method proxyMethod = 
+                                       webTarget.getClass().getMethod("proxy", 
new Class<?>[]{Class.class});
+                       return (T) proxyMethod.invoke(webTarget, clazz);
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
+               
+               throw new NotSupportedException("proxy not supported by this 
JAX-RS implementation");
+               
+       }
+
+}
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/LinkRepresentation.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/LinkRepresentation.java
index a883fe6..3b4d691 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/LinkRepresentation.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/LinkRepresentation.java
@@ -23,10 +23,11 @@ import javax.ws.rs.core.MediaType;
 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.legacy.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.jboss.resteasy.client.ClientExecutor;
 
 public final class LinkRepresentation extends JsonRepresentation {
 
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethod.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethod.java
index 6819e7b..b7055b2 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethod.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/RestfulHttpMethod.java
@@ -18,8 +18,8 @@
  */
 package org.apache.isis.viewer.restfulobjects.applib;
 
+import org.apache.isis.viewer.legacy.ClientRequest;
 import 
org.apache.isis.viewer.restfulobjects.applib.client.ClientRequestConfigurer;
-import org.jboss.resteasy.client.ClientRequest;
 
 public enum RestfulHttpMethod {
     GET(javax.ws.rs.HttpMethod.GET, ArgStrategy.QUERY_STRING), 
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/ClientRequestConfigurer.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/ClientRequestConfigurer.java
index 61b9240..b98f8f0 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/ClientRequestConfigurer.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/ClientRequestConfigurer.java
@@ -21,16 +21,15 @@ package org.apache.isis.viewer.restfulobjects.applib.client;
 import java.util.Map;
 
 import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.UriBuilder;
 
+import org.apache.isis.viewer.legacy.ClientExecutor;
+import org.apache.isis.viewer.legacy.ClientRequest;
 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.client.RestfulRequest.RequestParameter;
 import org.apache.isis.viewer.restfulobjects.applib.util.UrlEncodingUtils;
-import org.jboss.resteasy.client.ClientExecutor;
-import org.jboss.resteasy.client.ClientRequest;
 import org.jboss.resteasy.specimpl.ResteasyUriBuilder;
 
 /**
@@ -45,7 +44,10 @@ import org.jboss.resteasy.specimpl.ResteasyUriBuilder;
  */
 public class ClientRequestConfigurer {
 
-    public static ClientRequestConfigurer create(final ClientExecutor 
executor, final String uriTemplate) {
+    public static ClientRequestConfigurer create(
+               final ClientExecutor executor, 
+               final String uriTemplate) 
+    {
         final UriBuilder uriBuilder = new 
ResteasyUriBuilder().uriTemplate(uriTemplate);
         final ClientRequest clientRequest = executor.createRequest(uriBuilder);
         return new ClientRequestConfigurer(clientRequest, uriBuilder);
@@ -127,7 +129,7 @@ public class ClientRequestConfigurer {
      * {@link RestfulHttpMethod#setUpArgs(ClientRequestConfigurer, 
JsonRepresentation)}
      */
     public ClientRequestConfigurer body(final JsonRepresentation requestArgs) {
-        clientRequest.body(MediaType.APPLICATION_JSON_TYPE, 
requestArgs.toString());
+        clientRequest.jsonPayload(requestArgs.toString());
         return this;
     }
 
@@ -149,12 +151,11 @@ public class ClientRequestConfigurer {
      * {@link RestfulHttpMethod#setUpArgs(ClientRequestConfigurer, 
JsonRepresentation)}
      */
     public ClientRequestConfigurer queryArgs(final JsonRepresentation 
requestArgs) {
-        final MultivaluedMap<String, String> queryParameters = 
clientRequest.getQueryParameters();
         for (final Map.Entry<String, JsonRepresentation> entry : 
requestArgs.mapIterable()) {
             final String param = entry.getKey();
             final JsonRepresentation argRepr = entry.getValue();
             final String arg = UrlEncodingUtils.urlEncode(argRepr.asArg());
-            queryParameters.add(param, arg);
+            clientRequest.addQueryParameter(param, arg);
         }
         return this;
     }
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulClient.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulClient.java
index 90b3a1f..ee5985f 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulClient.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulClient.java
@@ -20,17 +20,13 @@ package org.apache.isis.viewer.restfulobjects.applib.client;
 
 import java.net.URI;
 
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
-import org.apache.http.client.HttpClient;
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
-import org.jboss.resteasy.client.ClientExecutor;
-import org.jboss.resteasy.client.ClientRequestFactory;
-import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor;
-
+import org.apache.isis.viewer.legacy.ClientExecutor;
+import org.apache.isis.viewer.legacy.ClientRequestFactory;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod;
@@ -55,25 +51,17 @@ public class RestfulClient {
 
     
     /**
-     * Using {@link ApacheHttpClient4Executor} and {@link DefaultHttpClient}.
+     * Using {@link javax.ws.rs.client.Client}.
      */
     public RestfulClient(final URI baseUri) {
-        this(baseUri, new ThreadSafeClientConnManager());
-    }
-
-    /**
-     * Using {@link ApacheHttpClient4Executor} and {@link DefaultHttpClient}.
-     */
-    public RestfulClient(final URI baseUri, ClientConnectionManager 
clientConnectionManager) {
-        this(baseUri, new DefaultHttpClient(clientConnectionManager));
+        this(baseUri, ClientBuilder.newClient());
     }
 
-
     /**
-     * Using {@link ApacheHttpClient4Executor} and specified {@link 
HttpClient}.
+     * Using {@link javax.ws.rs.client.Client}.
      */
-    public RestfulClient(final URI baseUri, HttpClient client) {
-        this(baseUri, new ApacheHttpClient4Executor(client));
+    public RestfulClient(final URI baseUri, Client client) {
+        this(baseUri, ClientExecutor.of(client));
     }
 
     /**
@@ -81,7 +69,7 @@ public class RestfulClient {
      */
     public RestfulClient(final URI baseUri, final ClientExecutor 
clientExecutor) {
         this.executor = clientExecutor;
-        this.clientRequestFactory = new ClientRequestFactory(clientExecutor, 
baseUri);
+        this.clientRequestFactory = ClientRequestFactory.of(clientExecutor, 
baseUri);
 
         this.homePageResource = 
clientRequestFactory.createProxy(HomePageResource.class);
         this.userResource = 
clientRequestFactory.createProxy(UserResource.class);
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest.java
index 77e0ac2..fbdbd5a 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequest.java
@@ -25,8 +25,9 @@ import java.util.Map;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import com.google.common.collect.Maps;
-import org.jboss.resteasy.client.ClientRequest;
-import org.jboss.resteasy.client.core.BaseClientResponse;
+
+import org.apache.isis.viewer.legacy.ClientRequest;
+import org.apache.isis.viewer.legacy.RestEasyLegacy;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.util.Parser;
 
@@ -173,10 +174,7 @@ public final class RestfulRequest {
             final ClientRequest clientRequest = 
clientRequestConfigurer.getClientRequest();
             final Response response = clientRequest.execute();
 
-            // this is a bit hacky
-            @SuppressWarnings("unchecked")
-            final BaseClientResponse<String> restEasyResponse = 
(BaseClientResponse<String>) response;
-            restEasyResponse.setReturnType(String.class);
+            RestEasyLegacy.setReturnTypeToString(response);
 
             return RestfulResponse.ofT(response);
         } catch (final Exception ex) {
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse.java
index a900a8d..2431a9e 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse.java
@@ -369,4 +369,6 @@ public class RestfulResponse<T> {
         return "RestfulResponse [httpStatusCode=" + httpStatusCode + "]";
     }
 
+
+
 }
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainObjectResource.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainObjectResource.java
index aa29ef7..2095718 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainObjectResource.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainObjectResource.java
@@ -32,8 +32,6 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
-import org.jboss.resteasy.annotations.ClientResponseType;
-
 import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
 
 @Path("/objects")
@@ -46,7 +44,7 @@ public interface DomainObjectResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_OBJECT, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_OBJECT, RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response persist(@PathParam("domainType") String domainType, final 
InputStream object);
 
     // //////////////////////////////////////////////////////////
@@ -60,7 +58,7 @@ public interface DomainObjectResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_OBJECT, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_OBJECT, RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response object(@PathParam("domainType") String domainType, 
@PathParam("instanceId") final String instanceId);
 
     @PUT
@@ -70,7 +68,7 @@ public interface DomainObjectResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_OBJECT, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_OBJECT, RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response object(@PathParam("domainType") String domainType, 
@PathParam("instanceId") final String instanceId, final InputStream arguments);
 
     @DELETE
@@ -111,7 +109,7 @@ public interface DomainObjectResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_OBJECT_PROPERTY, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_OBJECT_PROPERTY, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response propertyDetails(@PathParam("domainType") String 
domainType, @PathParam("instanceId") final String instanceId, 
@PathParam("propertyId") final String propertyId);
 
     @PUT
@@ -121,7 +119,7 @@ public interface DomainObjectResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_OBJECT_PROPERTY, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_OBJECT_PROPERTY, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response modifyProperty(@PathParam("domainType") String domainType, 
@PathParam("instanceId") final String instanceId, @PathParam("propertyId") 
final String propertyId, final InputStream arguments);
 
     @DELETE
@@ -131,7 +129,7 @@ public interface DomainObjectResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_OBJECT_PROPERTY, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_OBJECT_PROPERTY, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response clearProperty(@PathParam("domainType") String domainType, 
@PathParam("instanceId") final String instanceId, @PathParam("propertyId") 
final String propertyId);
 
     @POST
@@ -150,7 +148,7 @@ public interface DomainObjectResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_OBJECT_COLLECTION, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_OBJECT_COLLECTION, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response accessCollection(@PathParam("domainType") String 
domainType, @PathParam("instanceId") final String instanceId, 
@PathParam("collectionId") final String collectionId);
 
     @PUT
@@ -160,7 +158,7 @@ public interface DomainObjectResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_OBJECT_COLLECTION, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_OBJECT_COLLECTION, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response addToSet(@PathParam("domainType") String domainType, 
@PathParam("instanceId") final String instanceId, @PathParam("collectionId") 
final String collectionId, final InputStream arguments);
 
     @POST
@@ -170,7 +168,7 @@ public interface DomainObjectResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_OBJECT_COLLECTION, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_OBJECT_COLLECTION, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response addToList(@PathParam("domainType") String domainType, 
@PathParam("instanceId") final String instanceId, @PathParam("collectionId") 
final String collectionId, final InputStream arguments);
 
     @DELETE
@@ -180,7 +178,7 @@ public interface DomainObjectResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_OBJECT_COLLECTION, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_OBJECT_COLLECTION, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response removeFromCollection(@PathParam("domainType") String 
domainType, @PathParam("instanceId") final String instanceId, 
@PathParam("collectionId") final String collectionId);
 
     // //////////////////////////////////////////////////////////
@@ -194,7 +192,7 @@ public interface DomainObjectResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_OBJECT_ACTION, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_OBJECT_ACTION, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response actionPrompt(@PathParam("domainType") String domainType, 
@PathParam("instanceId") final String instanceId, @PathParam("actionId") final 
String actionId);
 
     @DELETE
@@ -220,7 +218,7 @@ public interface DomainObjectResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_ACTION_RESULT, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_ACTION_RESULT, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response invokeActionQueryOnly(@PathParam("domainType") String 
domainType, @PathParam("instanceId") final String instanceId, 
@PathParam("actionId") final String actionId, @QueryParam("x-isis-querystring") 
final String xIsisQueryString);
 
     @PUT
@@ -230,7 +228,7 @@ public interface DomainObjectResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_ACTION_RESULT, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_ACTION_RESULT, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response invokeActionIdempotent(@PathParam("domainType") String 
domainType, @PathParam("instanceId") final String instanceId, 
@PathParam("actionId") final String actionId, final InputStream arguments);
 
     @POST
@@ -240,7 +238,7 @@ public interface DomainObjectResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_ACTION_RESULT, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_ACTION_RESULT, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response invokeAction(@PathParam("domainType") String domainType, 
@PathParam("instanceId") final String instanceId, @PathParam("actionId") final 
String actionId, final InputStream arguments);
 
     @DELETE
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainServiceResource.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainServiceResource.java
index c11cdb7..d472e56 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainServiceResource.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainServiceResource.java
@@ -32,8 +32,6 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
-import org.jboss.resteasy.annotations.ClientResponseType;
-
 import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
 
 @Path("/services")
@@ -42,7 +40,7 @@ public interface DomainServiceResource {
     @GET
     @Path("/")
     @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_LIST, RestfulMediaType.APPLICATION_JSON_ERROR 
})
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response services();
 
     @DELETE
@@ -67,7 +65,7 @@ public interface DomainServiceResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_OBJECT, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_OBJECT, RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response service(@PathParam("serviceId") final String serviceId);
 
     @DELETE
@@ -94,7 +92,7 @@ public interface DomainServiceResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_OBJECT_ACTION, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_OBJECT_ACTION, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response actionPrompt(@PathParam("serviceId") final String 
serviceId, @PathParam("actionId") final String actionId);
 
     @DELETE
@@ -127,7 +125,7 @@ public interface DomainServiceResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_ACTION_RESULT, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_ACTION_RESULT, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response invokeActionQueryOnly(@PathParam("serviceId") final String 
serviceId, @PathParam("actionId") final String actionId, 
@QueryParam("x-isis-querystring") final String xIsisQueryString);
 
     @PUT
@@ -137,7 +135,7 @@ public interface DomainServiceResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_ACTION_RESULT, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_ACTION_RESULT, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response invokeActionIdempotent(@PathParam("serviceId") final 
String serviceId, @PathParam("actionId") final String actionId, final 
InputStream arguments);
 
     @POST
@@ -147,7 +145,7 @@ public interface DomainServiceResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_ACTION_RESULT, 
RestfulMediaType.APPLICATION_JSON_ERROR,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_ACTION_RESULT, 
RestfulMediaType.APPLICATION_XML_ERROR
     })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response invokeAction(@PathParam("serviceId") final String 
serviceId, @PathParam("actionId") final String actionId, final InputStream 
arguments);
 
     @DELETE
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domaintypes/DomainTypeResource.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domaintypes/DomainTypeResource.java
index fde2a14..d19a300 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domaintypes/DomainTypeResource.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domaintypes/DomainTypeResource.java
@@ -26,8 +26,6 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
-import org.jboss.resteasy.annotations.ClientResponseType;
-
 import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
 
 @Path("/domain-types")
@@ -40,7 +38,7 @@ public interface DomainTypeResource {
     @GET
     @Path("/")
     @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_TYPE_LIST })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public abstract Response domainTypes();
 
     // /////////////////////////////////////////////////////
@@ -50,7 +48,7 @@ public interface DomainTypeResource {
     @GET
     @Path("/{domainType}")
     @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_DOMAIN_TYPE })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public abstract Response domainType(@PathParam("domainType") final String 
domainType);
 
     @GET
@@ -59,30 +57,31 @@ public interface DomainTypeResource {
             MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_LAYOUT_BS3,
             MediaType.APPLICATION_XML, 
RestfulMediaType.APPLICATION_XML_LAYOUT_BS3
     })
+    //deprecated @ClientResponseType(entityType = String.class)
     public abstract Response layout(@PathParam("domainType") final String 
domainType);
 
     @GET
     @Path("/{domainType}/properties/{propertyId}")
     @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_PROPERTY_DESCRIPTION })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public abstract Response typeProperty(@PathParam("domainType") final 
String domainType, @PathParam("propertyId") final String propertyId);
 
     @GET
     @Path("/{domainType}/collections/{collectionId}")
     @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_COLLECTION_DESCRIPTION })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public abstract Response typeCollection(@PathParam("domainType") final 
String domainType, @PathParam("collectionId") final String collectionId);
 
     @GET
     @Path("/{domainType}/actions/{actionId}")
     @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_ACTION_DESCRIPTION })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public abstract Response typeAction(@PathParam("domainType") final String 
domainType, @PathParam("actionId") final String actionId);
 
     @GET
     @Path("/{domainType}/actions/{actionId}/params/{paramNum}")
     @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_ACTION_PARAMETER_DESCRIPTION })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public abstract Response typeActionParam(@PathParam("domainType") final 
String domainType, @PathParam("actionId") final String actionId, 
@PathParam("paramNum") final String paramName);
 
     // //////////////////////////////////////////////////////////
@@ -92,7 +91,7 @@ public interface DomainTypeResource {
     @GET
     @Path("/{domainType}/isSubtypeOf/invoke")
     @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_TYPE_ACTION_RESULT, 
RestfulMediaType.APPLICATION_JSON_ERROR })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public abstract Response domainTypeIsSubtypeOf(
             @PathParam("domainType") final String domainType, 
             @QueryParam("supertype") String superType, // simple style
@@ -102,7 +101,7 @@ public interface DomainTypeResource {
     @GET
     @Path("/{domainType}/isSupertypeOf/invoke")
     @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_TYPE_ACTION_RESULT, 
RestfulMediaType.APPLICATION_JSON_ERROR })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public abstract Response domainTypeIsSupertypeOf(
             @PathParam("domainType") final String domainType, 
             @QueryParam("supertype") String superType, // simple style
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/homepage/HomePageResource.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/homepage/HomePageResource.java
index 497ef69..a502d34 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/homepage/HomePageResource.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/homepage/HomePageResource.java
@@ -18,19 +18,23 @@
  */
 package org.apache.isis.viewer.restfulobjects.applib.homepage;
 
-import javax.ws.rs.*;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
 import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
-import org.jboss.resteasy.annotations.ClientResponseType;
 
 @Path("/")
 public interface HomePageResource {
 
     @GET
     @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_HOME_PAGE })
-    @ClientResponseType(entityType = String.class)
+    //@ClientResponseType(entityType = String.class)
     public Response homePage();
 
     @DELETE
@@ -49,7 +53,7 @@ public interface HomePageResource {
     @GET
     @Path("/notAuthenticated")
     @Produces({ MediaType.APPLICATION_JSON })
-    @ClientResponseType(entityType = String.class)
+    //@ClientResponseType(entityType = String.class)
     public Response notAuthenticated();
 
 }
\ No newline at end of file
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/user/UserResource.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/user/UserResource.java
index afcc179..9d02419 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/user/UserResource.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/user/UserResource.java
@@ -27,8 +27,6 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
-import org.jboss.resteasy.annotations.ClientResponseType;
-
 import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
 
 @Path("/user")
@@ -36,7 +34,7 @@ public interface UserResource {
 
     @GET
     @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_USER })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response user();
 
     @DELETE
@@ -54,7 +52,7 @@ public interface UserResource {
     @GET
     @Path("/logout")
     @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_HOME_PAGE })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response logout();
 
 }
\ No newline at end of file
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/util/JsonMapper.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/util/JsonMapper.java
index 8e7179f..bb53752 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/util/JsonMapper.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/util/JsonMapper.java
@@ -38,7 +38,8 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fasterxml.jackson.databind.SerializerProvider;
 import com.fasterxml.jackson.databind.module.SimpleModule;
-import org.jboss.resteasy.client.ClientResponse;
+
+import org.apache.isis.viewer.legacy.RestEasyLegacy;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 
 public final class JsonMapper {
@@ -115,8 +116,7 @@ public final class JsonMapper {
     }
 
     public <T> T read(final Response response, final Class<T> requiredType) 
throws JsonParseException, JsonMappingException, IOException {
-        final ClientResponse<?> clientResponse = (ClientResponse<?>) response; 
// a shame, but needed if calling resources directly.
-        final String entity = clientResponse.getEntity(String.class);
+       final String entity = RestEasyLegacy.getEntityAsStringFrom(response);
         if (entity == null) {
             return null;
         }
diff --git 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/version/VersionResource.java
 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/version/VersionResource.java
index 535fc72..6b596a7 100644
--- 
a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/version/VersionResource.java
+++ 
b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/version/VersionResource.java
@@ -23,14 +23,13 @@ import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
 import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
-import org.jboss.resteasy.annotations.ClientResponseType;
 
 @Path("/version")
 public interface VersionResource {
 
     @GET
     @Produces({ MediaType.APPLICATION_JSON, 
RestfulMediaType.APPLICATION_JSON_VERSION })
-    @ClientResponseType(entityType = String.class)
+    //deprecated @ClientResponseType(entityType = String.class)
     public Response version();
 
     @DELETE
diff --git 
a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/Responses.java
 
b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/Responses.java
index 4be7721..a88d640 100644
--- 
a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/Responses.java
+++ 
b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/Responses.java
@@ -16,16 +16,22 @@
  */
 package org.apache.isis.viewer.restfulobjects.rendering;
 
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.util.Date;
+
 import javax.ws.rs.core.EntityTag;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import org.joda.time.DateTime;
-import org.joda.time.format.ISODateTimeFormat;
+import javax.ws.rs.core.Response.ResponseBuilder;
+
+import org.apache.isis.core.commons.reflection.Reflect;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.rendering.util.JsonWriterUtil;
+import org.joda.time.DateTime;
+import org.joda.time.format.ISODateTimeFormat;
 
 public final class Responses {
 
@@ -87,6 +93,18 @@ public final class Responses {
     }
 
     protected static Response.ResponseBuilder of(final 
RestfulResponse.HttpStatusCode httpStatusCode) {
+       
+       //XXX debug
+       Response.ResponseBuilder x;
+               try {
+                       Method m = 
ResponseBuilder.class.getDeclaredMethod("newInstance", Reflect.emptyClasses);
+                       m.setAccessible(true);
+                       x =     (ResponseBuilder) m.invoke(null, 
Reflect.emptyObjects);
+               System.out.println("!!! DEBUG: "+x.getClass().getName());
+               } catch (IllegalAccessException | IllegalArgumentException | 
InvocationTargetException | NoSuchMethodException
+                               | SecurityException e) {
+                       e.printStackTrace();
+               }
         return 
Response.status(httpStatusCode.getJaxrsStatusType()).type(MediaType.APPLICATION_JSON_TYPE);
     }
 
diff --git 
a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/IsisPrettyPrintingProcessor.java
 
b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/IsisPrettyPrintingProcessor.java
index d26c2e3..94140d1 100644
--- 
a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/IsisPrettyPrintingProcessor.java
+++ 
b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/IsisPrettyPrintingProcessor.java
@@ -22,7 +22,7 @@ import javax.ws.rs.core.MediaType;
 import javax.xml.bind.Marshaller;
 
 import org.jboss.resteasy.annotations.DecorateTypes;
-import org.jboss.resteasy.spi.interception.DecoratorProcessor;
+import org.jboss.resteasy.spi.DecoratorProcessor;
 
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
diff --git 
a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/webapp/PreProcessInterceptorForIsisSession.java
 
b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/webapp/PreProcessInterceptorForIsisSession.java
index 90b9ad6..d906cc4 100644
--- 
a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/webapp/PreProcessInterceptorForIsisSession.java
+++ 
b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/webapp/PreProcessInterceptorForIsisSession.java
@@ -21,19 +21,21 @@ package org.apache.isis.viewer.restfulobjects.server.webapp;
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.ext.Provider;
 
-import org.jboss.resteasy.annotations.interception.ServerInterceptor;
+//deprectaed import 
org.jboss.resteasy.annotations.interception.ServerInterceptor;
 import org.jboss.resteasy.core.ResourceMethodInvoker;
 import org.jboss.resteasy.core.ServerResponse;
 import org.jboss.resteasy.spi.Failure;
 import org.jboss.resteasy.spi.HttpRequest;
-import org.jboss.resteasy.spi.interception.PreProcessInterceptor;
+//deprectaed import org.jboss.resteasy.spi.interception.PreProcessInterceptor;
 
 @Provider
-@ServerInterceptor
-public class PreProcessInterceptorForIsisSession implements 
PreProcessInterceptor {
+//deprectaed @ServerInterceptor
+public class PreProcessInterceptorForIsisSession //deprectaed implements 
PreProcessInterceptor 
+{
 
+       /* deprectaed
     @Override
     public ServerResponse preProcess(HttpRequest httpRequest, 
ResourceMethodInvoker resourceMethodInvoker) throws Failure, 
WebApplicationException {
         return null;
-    }
+    }*/
 }

-- 
To stop receiving notification emails like this one, please contact
danhayw...@apache.org.

Reply via email to