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 2012/05/30 00:03:17 UTC

svn commit: r1344024 - in /cxf/branches/2.4.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java

Author: sergeyb
Date: Tue May 29 22:03:16 2012
New Revision: 1344024

URL: http://svn.apache.org/viewvc?rev=1344024&view=rev
Log:
Merged revisions 1344021 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/branches/2.5.x-fixes

................
  r1344021 | sergeyb | 2012-05-29 22:56:58 +0100 (Tue, 29 May 2012) | 9 lines
  
  Merged revisions 1344018 via svnmerge from 
  https://svn.apache.org/repos/asf/cxf/trunk
  
  ........
    r1344018 | sergeyb | 2012-05-29 22:45:15 +0100 (Tue, 29 May 2012) | 1 line
    
    [CXF-4349] Updating the client runtime to check if current types are compatible with the original ones
  ........
................

Modified:
    cxf/branches/2.4.x-fixes/   (props changed)
    cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
    cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java

Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue May 29 22:03:16 2012
@@ -0,0 +1,2 @@
+/cxf/branches/2.5.x-fixes:1344021
+/cxf/trunk:1344018

Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java?rev=1344024&r1=1344023&r2=1344024&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java Tue May 29 22:03:16 2012
@@ -23,6 +23,7 @@ import java.io.OutputStream;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
+import java.lang.reflect.Type;
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -625,9 +626,13 @@ public class ClientProxyImpl extends Abs
             Object body = objs.get(0);
             try {
                 if (bodyIndex != -1) {
-                    writeBody(body, outMessage, 
-                              method.getParameterTypes()[bodyIndex],
-                              method.getGenericParameterTypes()[bodyIndex],
+                    Class<?> paramClass = method.getParameterTypes()[bodyIndex];
+                    Type paramType = method.getGenericParameterTypes()[bodyIndex];
+                    
+                    boolean isAssignable = paramClass.isAssignableFrom(body.getClass());
+                    writeBody(body, outMessage,
+                              isAssignable ? paramClass : body.getClass(),
+                              isAssignable ? paramType : body.getClass(),
                               anns, headers, os);
                 } else {
                     writeBody(body, outMessage, body.getClass(), body.getClass(), 

Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java?rev=1344024&r1=1344023&r2=1344024&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java Tue May 29 22:03:16 2012
@@ -873,10 +873,11 @@ public class WebClient extends AbstractC
                 requestClass = (Class<?>)requestContext.get(REQUEST_CLASS);
                 requestType = (Type)requestContext.get(REQUEST_TYPE);
             }
+            boolean isAssignable = requestClass != null && requestClass.isAssignableFrom(body.getClass());
             try {
                 writeBody(body, outMessage, 
-                          requestClass == null ? body.getClass() : requestClass,
-                          requestType == null ? body.getClass() : requestType, 
+                          requestClass == null || !isAssignable ? body.getClass() : requestClass,
+                          requestType == null || !isAssignable ? body.getClass() : requestType, 
                           new Annotation[]{}, headers, os);
                 if (os != null) {
                     os.flush();