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/08/18 20:09:21 UTC

svn commit: r686839 - in /cxf/branches/2.0.x-fixes: ./ tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/ tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/

Author: dkulp
Date: Mon Aug 18 11:09:19 2008
New Revision: 686839

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

................
  r686827 | dkulp | 2008-08-18 13:37:05 -0400 (Mon, 18 Aug 2008) | 9 lines
  
  Merged revisions 686820 via svnmerge from 
  https://svn.apache.org/repos/asf/cxf/trunk
  
  ........
    r686820 | dkulp | 2008-08-18 13:12:23 -0400 (Mon, 18 Aug 2008) | 2 lines
    
    [CXF-1752] Fix problems in generated wrapper types
  ........
................

Modified:
    cxf/branches/2.0.x-fixes/   (props changed)
    cxf/branches/2.0.x-fixes/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapper.java
    cxf/branches/2.0.x-fixes/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapperTest.java

Propchange: cxf/branches/2.0.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Aug 18 11:09:19 2008
@@ -1,3 +1,3 @@
-/cxf/branches/2.1.x-fixes:673548,674485,674547,674551,674562,674601,674649,674764,674887,675644,675653,677048,677385,678004,678009,678559,678629,678808,678852,678891,678893,679248,679597,680435,681060,681165,681813,681816,682902,682951,683089,683290,683318,684099,684790-684793,684842,684862,684895-684918,685205,685253,686237,686283,686299,686333-686364,686765
-/cxf/trunk:651669-686342,686344-686363,686764
+/cxf/branches/2.1.x-fixes:673548,674485,674547,674551,674562,674601,674649,674764,674887,675644,675653,677048,677385,678004,678009,678559,678629,678808,678852,678891,678893,679248,679597,680435,681060,681165,681813,681816,682902,682951,683089,683290,683318,684099,684790-684793,684842,684862,684895-684918,685205,685253,686237,686283,686299,686333-686364,686765,686827
+/cxf/trunk:651669-686342,686344-686363,686764,686820
 /incubator/cxf/trunk:434594-651668

Propchange: cxf/branches/2.0.x-fixes/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Mon Aug 18 11:09:19 2008
@@ -1 +1 @@
-/cxf/branches/2.1.x-fixes:1-686313,686315-686332,686334-686346,686348-686766
+/cxf/branches/2.1.x-fixes:1-686313,686315-686332,686334-686346,686348-686828

Modified: cxf/branches/2.0.x-fixes/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapper.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapper.java?rev=686839&r1=686838&r2=686839&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapper.java (original)
+++ cxf/branches/2.0.x-fixes/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapper.java Mon Aug 18 11:09:19 2008
@@ -19,9 +19,11 @@
 
 package org.apache.cxf.tools.java2wsdl.processor.internal.jaxws;
 
+import java.lang.reflect.GenericArrayType;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.List;
+import javax.xml.ws.Holder;
 
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.service.model.MessageInfo;
@@ -58,16 +60,10 @@
         return buildFields(getMethod(), getOperationInfo().getUnwrappedOperation().getInput());
     }
     
-    protected List<JavaField> buildFields(final Method method, final MessageInfo message) {
-        List<JavaField> fields = new ArrayList<JavaField>();
-        String name;
-        String type;
-
-        final Class[] paramClasses = method.getParameterTypes();
-        for (MessagePartInfo mpi : message.getMessageParts()) {
-            int idx = mpi.getIndex();
-            name = mpi.getName().getLocalPart();
-            Class clz = paramClasses[idx];
+    private String getTypeString(Type t) {
+        String type = "Object";
+        if (t instanceof Class) {
+            Class clz = (Class) t;
             if (clz.isArray()) {
                 if (isBuiltInTypes(clz.getComponentType())) {
                     type = clz.getComponentType().getSimpleName() + "[]";
@@ -77,10 +73,38 @@
             } else {
                 type = clz.getName();
             }
+        } else if (t instanceof ParameterizedType) {
+            ParameterizedType pt = (ParameterizedType) t;
+            Class c = (Class)pt.getRawType();
+            if (Holder.class.isAssignableFrom(c)
+                && pt.getActualTypeArguments().length == 1
+                && pt.getActualTypeArguments()[0] instanceof Class) {
+                type = getTypeString(pt.getActualTypeArguments()[0]);
+            } else {
+                type = t.toString();
+            }
+        } else if (t instanceof GenericArrayType) {
+            GenericArrayType gat = (GenericArrayType)t;
+            type = gat.toString();
+        }
+        type = type.replace('$', '.');
+        return type;
+    }
+    
+    
+    protected List<JavaField> buildFields(final Method method, final MessageInfo message) {
+        List<JavaField> fields = new ArrayList<JavaField>();
+
+        final Type[] paramClasses = method.getGenericParameterTypes();
+        for (MessagePartInfo mpi : message.getMessageParts()) {
+            int idx = mpi.getIndex();
+            String name = mpi.getName().getLocalPart();
+            Type t = paramClasses[idx];
+            String type = getTypeString(t);
+
             JavaField field = new JavaField(name, type, "");
             field.setTargetNamespace("");
             fields.add(field);
-            
         }
 
         return fields;

Modified: cxf/branches/2.0.x-fixes/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapperTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapperTest.java?rev=686839&r1=686838&r2=686839&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapperTest.java (original)
+++ cxf/branches/2.0.x-fixes/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapperTest.java Mon Aug 18 11:09:19 2008
@@ -30,6 +30,7 @@
 import org.apache.cxf.tools.common.model.JavaField;
 import org.apache.cxf.tools.common.model.JavaMethod;
 import org.apache.cxf.tools.fortest.withannotation.doc.GreeterArray;
+import org.apache.cxf.tools.fortest.xmllist.AddNumbersPortType;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -164,4 +165,21 @@
         assertEquals(pkgName, wrapper.getJavaClass().getPackageName());
         assertEquals("SayHi", wrapper.getJavaClass().getName());
     }
+    
+    @Test
+    public void testCXF1752() throws Exception {
+        OperationInfo opInfo = getOperation(AddNumbersPortType.class, "testCXF1752");
+        RequestWrapper wrapper = new RequestWrapper();
+        wrapper.setOperationInfo(opInfo);
+        
+        wrapper.buildWrapperBeanClass();
+        List<JavaField> fields = wrapper.getJavaClass().getFields();
+        assertEquals(6, fields.size());
+        assertEquals("java.util.List<java.lang.Long>", fields.get(0).getClassName());
+        assertEquals("byte[]", fields.get(2).getClassName());
+        assertEquals("org.apache.cxf.tools.fortest.xmllist.AddNumbersPortType.UserObject[]",
+                     fields.get(3).getClassName());
+        assertEquals("java.util.List<org.apache.cxf.tools.fortest.xmllist.AddNumbersPortType.UserObject>",
+                     fields.get(4).getClassName());
+    }
 }