You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2018/01/04 22:40:32 UTC

[isis] branch dev/2.0.0/ISIS-1779-jax-rs-2 updated (ddec912 -> 6bb2923)

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

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


 discard ddec912  ISIS-1779 Transition to JAX-RS 2.0 Client API removed dependency on deprecated resteasy client api
     add 662414b  ISIS-1754 proper DN class-loading
     add f42ac8b  ISIS-1755 veto ExceptionRecognizer on CDI scan
     add 4805392  ISIS-1756 on shutdown purge any state associated with the current web-app classloader
     add 345ea93  ISIS-1756 remove reflective access to DN's EnhancementHelper since we've got a dedicated method instead
     new 6bb2923  ISIS-1779 Transition to JAX-RS 2.0 Client API removed dependency on deprecated resteasy client api

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (ddec912)
            \
             N -- N -- N   refs/heads/dev/2.0.0/ISIS-1779-jax-rs-2 (6bb2923)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 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:
 core/pom.xml                                       |   6 +-
 .../core/runtime/system/context/IsisContext.java   |  21 +++-
 .../DataNucleusApplicationComponents.java          |  49 ++++++--
 .../persistence/PersistenceSessionFactory.java     |  14 ++-
 .../webapp/jee/IsisCDIBeanScanInterceptor.java     |  25 ++--
 .../datanucleus/DataNucleusLifeCycleHelper.java    | 136 +++++++++++++++++++++
 .../wicket/viewer/IsisWicketApplication.java       |   2 +
 7 files changed, 217 insertions(+), 36 deletions(-)
 create mode 100644 core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusLifeCycleHelper.java

-- 
To stop receiving notification emails like this one, please contact
['"commits@isis.apache.org" <co...@isis.apache.org>'].

[isis] 01/01: ISIS-1779 Transition to JAX-RS 2.0 Client API removed dependency on deprecated resteasy client api

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6bb2923582b6e0e5d6745ce8372152ea0088ab2a
Author: Andi Huber <ah...@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     |  20 ++--
 .../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(+), 161 deletions(-)

diff --git a/core/applib/pom.xml b/core/applib/pom.xml
index be3411c..ca7a836 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 becc447..8d2a49f 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.17.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>
@@ -1942,11 +1951,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 ahuber@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 ahuber@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 ahuber@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 ahuber@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 50c7f69..e5f4787 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
@@ -93,7 +91,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
@@ -103,7 +101,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
@@ -113,7 +111,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
@@ -132,7 +130,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
@@ -142,7 +140,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
@@ -152,7 +150,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
@@ -162,7 +160,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);
 
     // //////////////////////////////////////////////////////////
@@ -176,7 +174,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
@@ -202,7 +200,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
@@ -212,7 +210,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
@@ -222,7 +220,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 8881c25..d96571b 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,37 +48,37 @@ 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
     @Path("/{domainType}/layout")
     @Produces({ MediaType.APPLICATION_XML, RestfulMediaType.APPLICATION_XML_LAYOUT_BS3 })
-    @ClientResponseType(entityType = String.class)
+    //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);
 
     // //////////////////////////////////////////////////////////
@@ -90,7 +88,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
@@ -100,7 +98,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
"commits@isis.apache.org" <co...@isis.apache.org>.