You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2013/11/27 15:09:27 UTC
svn commit: r1546039 - in /cxf/branches/2.7.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/
systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/
Author: sergeyb
Date: Wed Nov 27 14:09:27 2013
New Revision: 1546039
URL: http://svn.apache.org/r1546039
Log:
Merged revisions 1546034 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1546034 | sergeyb | 2013-11-27 13:49:54 +0000 (Wed, 27 Nov 2013) | 1 line
[CXF-5426] Avoiding the explicit casts when reading data with Response and WebClient
........
Modified:
cxf/branches/2.7.x-fixes/ (props changed)
cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java
cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Merged /cxf/trunk:r1546034
Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java?rev=1546039&r1=1546038&r2=1546039&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java Wed Nov 27 14:09:27 2013
@@ -378,7 +378,7 @@ public class WebClient extends AbstractC
@SuppressWarnings("unchecked")
Class<T> responseClass = (Class<T>)responseType.getRawType();
Response r = doInvoke(httpMethod, body, null, responseClass, responseType.getType());
- return responseClass.cast(responseClass == Response.class ? r : r.getEntity());
+ return castResponse(r, responseClass);
}
@@ -392,7 +392,7 @@ public class WebClient extends AbstractC
*/
public <T> T invoke(String httpMethod, Object body, Class<T> responseClass) {
Response r = doInvoke(httpMethod, body, null, responseClass, responseClass);
- return responseClass.cast(responseClass == Response.class ? r : r.getEntity());
+ return castResponse(r, responseClass);
}
/**
@@ -406,9 +406,14 @@ public class WebClient extends AbstractC
*/
public <T> T invoke(String httpMethod, Object body, Class<?> requestClass, Class<T> responseClass) {
Response r = doInvoke(httpMethod, body, requestClass, null, responseClass, responseClass);
- return responseClass.cast(responseClass == Response.class ? r : r.getEntity());
+ return castResponse(r, responseClass);
}
+ @SuppressWarnings("unchecked")
+ private <T> T castResponse(Response r, Class<T> responseClass) {
+ return (T)(responseClass == Response.class ? r : r.getEntity());
+ }
+
/**
* Does HTTP POST invocation and returns typed response object
* @param body request body, can be null
Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java?rev=1546039&r1=1546038&r2=1546039&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java Wed Nov 27 14:09:27 2013
@@ -330,7 +330,7 @@ public final class ResponseImpl extends
entity = null;
}
- return cls.cast(lastEntity);
+ return castLastEntity();
} catch (Exception ex) {
throw new MessageProcessingException(ex);
}
@@ -339,7 +339,7 @@ public final class ResponseImpl extends
}
} else if (entity != null && cls.isAssignableFrom(entity.getClass())) {
lastEntity = entity;
- return cls.cast(lastEntity);
+ return castLastEntity();
}
throw new IllegalStateException("The entity is not backed by an input stream, entity class is : "
@@ -347,6 +347,11 @@ public final class ResponseImpl extends
}
+ @SuppressWarnings("unchecked")
+ private <T> T castLastEntity() {
+ return (T)lastEntity;
+ }
+
protected boolean responseStreamCanBeClosed(Class<?> cls) {
return cls != InputStream.class
&& MessageUtils.isTrue(responseMessage.getContextualProperty("response.stream.auto.close"));
Modified: cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=1546039&r1=1546038&r2=1546039&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java (original)
+++ cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java Wed Nov 27 14:09:27 2013
@@ -1298,6 +1298,26 @@ public class JAXRSClientServerBookTest e
}
@Test
+ public void testBookExistsWebClientPrimitiveBoolean() throws Exception {
+ WebClient wc = WebClient.create("http://localhost:" + PORT + "/bookstore/books/check/123");
+ wc.accept("text/plain");
+ assertTrue(wc.get(boolean.class));
+ }
+
+ @Test
+ public void testBookExistsProxyPrimitiveBoolean() throws Exception {
+ BookStore store = JAXRSClientFactory.create("http://localhost:" + PORT, BookStore.class);
+ assertTrue(store.checkBook(123L));
+ }
+
+ @Test
+ public void testBookExistsWebClientBooleanObject() throws Exception {
+ WebClient wc = WebClient.create("http://localhost:" + PORT + "/bookstore/books/check/123");
+ wc.accept("text/plain");
+ assertTrue(wc.get(Boolean.class));
+ }
+
+ @Test
public void testBookExistsMalformedMt() throws Exception {
WebClient wc =
WebClient.create("http://localhost:" + PORT + "/bookstore/books/check/malformedmt/123");