You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2008/05/20 17:53:45 UTC

svn commit: r658299 - /cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java

Author: dkulp
Date: Tue May 20 08:53:45 2008
New Revision: 658299

URL: http://svn.apache.org/viewvc?rev=658299&view=rev
Log:
[CXF-1568] Possible fix for the strikeiron implicit headers problems

Modified:
    cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java

Modified: cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?rev=658299&r1=658298&r2=658299&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java (original)
+++ cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java Tue May 20 08:53:45 2008
@@ -672,6 +672,7 @@
         if (paraAnnos != null && part != null) {
             part.setProperty(PARAM_ANNOTATION, paraAnnos);
         }
+        
         return true;
     }    
     private void setFaultClassInfo(OperationInfo o, Method selected) {
@@ -1491,6 +1492,36 @@
             part.setProperty(RAW_CLASS, rawClass);
         }
         part.setTypeClass(rawClass);
+        
+        if (part.getMessageInfo().getOperation().isUnwrapped()
+            && Boolean.TRUE.equals(part.getProperty(HEADER))) {
+            //header from the unwrapped operation, make sure the type is set for the 
+            //approriate header in the wrapped operation
+            OperationInfo o = ((UnwrappedOperationInfo)part.getMessageInfo().getOperation())
+                .getWrappedOperation();
+            
+            if (Boolean.TRUE.equals(part.getProperty(ReflectionServiceFactoryBean.MODE_OUT))
+                || Boolean.TRUE.equals(part.getProperty(ReflectionServiceFactoryBean.MODE_INOUT))) {
+                MessagePartInfo mpi = o.getOutput().getMessagePart(part.getName());
+                if (mpi != null) {
+                    mpi.setTypeClass(rawClass);
+                    mpi.setProperty(GENERIC_TYPE, type);
+                    if (Collection.class.isAssignableFrom(rawClass)) {
+                        mpi.setProperty(RAW_CLASS, type);
+                    }
+                }
+            }
+            if (!Boolean.TRUE.equals(part.getProperty(ReflectionServiceFactoryBean.MODE_OUT))) {
+                MessagePartInfo mpi = o.getInput().getMessagePart(part.getName());
+                if (mpi != null) {
+                    mpi.setTypeClass(rawClass);
+                    mpi.setProperty(GENERIC_TYPE, type);
+                    if (Collection.class.isAssignableFrom(rawClass)) {
+                        mpi.setProperty(RAW_CLASS, type);
+                    }
+                }
+            }
+        }      
     }