You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by mm...@apache.org on 2007/04/29 10:16:19 UTC

svn commit: r533486 - in /incubator/cxf/trunk: rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/ tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/proces...

Author: mmao
Date: Sun Apr 29 01:16:18 2007
New Revision: 533486

URL: http://svn.apache.org/viewvc?view=rev&rev=533486
Log:
CXF-610 revert the last commit, which fix the doc-lit-wrapped but broken rpc-lit

Added:
    incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/
    incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/
    incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/Greeter.java
    incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/JaxwsServiceBuilderRPCTest.java
    incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/expected/rpc_greeter.wsdl
Modified:
    incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
    incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/JCodeModelFilter.java
    incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java
    incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/Wrapper.java
    incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java
    incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/expected/db.wsdl

Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?view=diff&rev=533486&r1=533485&r2=533486
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java Sun Apr 29 01:16:18 2007
@@ -594,14 +594,6 @@
         
     }
 
-    private boolean isArrayType(MessagePartInfo part) {
-        Type type = (Type) part.getProperty(GENERIC_TYPE);
-        if (type instanceof Class) {
-            return ((Class<?>)type).isArray();
-        }
-        return false;
-    }
-    
     private void createWrappedMessageSchema(AbstractMessageContainer wrappedMessage,
                                             AbstractMessageContainer unwrappedMessage,
                                             XmlSchema schema) {
@@ -623,15 +615,9 @@
             el.setName(mpi.getName().getLocalPart());
             el.setQName(mpi.getName());
 
-
-            if (isArrayType(mpi)) {
-                el.setMinOccurs(0);
-                el.setMaxOccurs(Long.MAX_VALUE);
-            } else {
-                el.setMinOccurs(1);
-                el.setMaxOccurs(1);
-                el.setNillable(true);
-            }
+            el.setMinOccurs(1);
+            el.setMaxOccurs(1);
+            el.setNillable(true);
 
             if (mpi.isElement()) {
                 el.setRefName(mpi.getElementQName());
@@ -770,9 +756,6 @@
         if (rawClass.equals(Holder.class) && type instanceof ParameterizedType) {
             ParameterizedType paramType = (ParameterizedType)type;
             rawClass = getHolderClass(paramType);
-        }
-        if (rawClass.isArray()) {
-            rawClass = rawClass.getComponentType();
         }
 
         part.setProperty(GENERIC_TYPE, type);

Modified: incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/JCodeModelFilter.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/JCodeModelFilter.java?view=diff&rev=533486&r1=533485&r2=533486
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/JCodeModelFilter.java (original)
+++ incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/JCodeModelFilter.java Sun Apr 29 01:16:18 2007
@@ -45,7 +45,6 @@
             includedPackages.add(clz.getPackageName());
             includedClasses.add(clz.getFullClassName());
         }
-
         for (Iterator<JPackage> iter = this.model.packages(); iter.hasNext();) {
             JPackage pkg = iter.next();
             if (!includedPackages.contains(pkg.name())) {

Modified: incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java?view=diff&rev=533486&r1=533485&r2=533486
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java (original)
+++ incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java Sun Apr 29 01:16:18 2007
@@ -35,7 +35,6 @@
 import com.sun.tools.xjc.api.S2JJAXBModel;
 import com.sun.tools.xjc.api.XJC;
 import com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl;
-
 import org.apache.cxf.service.model.OperationInfo;
 import org.apache.cxf.service.model.SchemaInfo;
 import org.apache.cxf.service.model.ServiceInfo;
@@ -92,6 +91,7 @@
     private void generateWrapperBeanClasses(final ServiceInfo serviceInfo, final File dir) {
         List<JavaClass> wrapperClasses = new ArrayList<JavaClass>();
         Map<String, String> nsPkgMapping = new HashMap<String, String>();
+        Map<String, JavaClass> paramClasses = new HashMap<String, JavaClass>();
         
         for (OperationInfo op : serviceInfo.getInterface().getOperations()) {
             if (op.getUnwrappedOperation() != null) {
@@ -101,6 +101,11 @@
                     requestWrapper.setName(wrapperBeanName);
                     requestWrapper.setMethod((Method) op.getProperty(Method.class.getName()));
                     JavaClass jClass = requestWrapper.getJavaClass();
+
+                    paramClasses.putAll(
+                        requestWrapper.getParamtersInDifferentPackage(
+                            op.getUnwrappedOperation().getInput()));
+
                     if (requestWrapper.isWrapperAbsent() || requestWrapper.isToDifferentPackage()) {
                         nsPkgMapping.put(wrapperBeanName.getNamespaceURI(), jClass.getPackageName());
                     }
@@ -116,6 +121,10 @@
                     responseWrapper.setMethod((Method) op.getProperty(Method.class.getName()));
                     JavaClass jClass = responseWrapper.getJavaClass();
 
+//                     paramClasses.putAll(
+//                         requestWrapper.getParamtersInDifferentPackage(
+//                             op.getUnwrappedOperation().getOutput()));
+
                     if (responseWrapper.isWrapperAbsent() || responseWrapper.isToDifferentPackage()) {
                         nsPkgMapping.put(wrapperBeanName.getNamespaceURI(), jClass.getPackageName());
                     }
@@ -129,6 +138,9 @@
 
         if (wrapperClasses.isEmpty()) {
             return;
+        }
+        if (!paramClasses.isEmpty()) {
+            wrapperClasses.addAll(paramClasses.values());
         }
         
         Map<String, Element> schemas = new HashMap<String, Element>();

Modified: incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/Wrapper.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/Wrapper.java?view=diff&rev=533486&r1=533485&r2=533486
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/Wrapper.java (original)
+++ incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/Wrapper.java Sun Apr 29 01:16:18 2007
@@ -20,6 +20,8 @@
 package org.apache.cxf.tools.java2wsdl.processor.internal.jaxws;
 
 import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.xml.namespace.QName;
@@ -27,6 +29,8 @@
 import org.apache.cxf.common.i18n.Message;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.service.model.MessageInfo;
+import org.apache.cxf.service.model.MessagePartInfo;
 import org.apache.cxf.tools.common.ToolException;
 import org.apache.cxf.tools.common.model.JavaClass;
 import org.apache.cxf.tools.util.AnnotationUtil;
@@ -127,5 +131,27 @@
             LOG.log(Level.WARNING, msg.toString());
             throw new ToolException(msg);
         }
+    }
+
+    private boolean isBuiltInTypes(Class<?> clz) {
+        if (clz == null || clz.isPrimitive()) {
+            return true;
+        }
+        return "java.lang".equals(clz.getPackage().getName());
+    }
+    
+    public Map<String, JavaClass> getParamtersInDifferentPackage(final MessageInfo message) {
+        Map<String, JavaClass> results = new HashMap<String, JavaClass>();
+        for (MessagePartInfo part : message.getMessageParts()) {
+            if (isBuiltInTypes(part.getTypeClass())) {
+                continue;
+            }
+            JavaClass paramClass = new JavaClass();
+            paramClass.setFullClassName(part.getTypeClass().getName());
+            if (!getJavaClass().getPackageName().equals(paramClass.getPackageName())) {
+                results.put(paramClass.getFullClassName(), paramClass);
+            }
+        }
+        return results;
     }
 }

Added: incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/Greeter.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/Greeter.java?view=auto&rev=533486
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/Greeter.java (added)
+++ incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/fortest/jaxws/rpc/Greeter.java Sun Apr 29 01:16:18 2007
@@ -0,0 +1,32 @@
+/**
+ * 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.cxf.tools.fortest.jaxws.rpc;
+ 
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.jws.soap.SOAPBinding.Style;
+
+@WebService(name = "Hello", targetNamespace = "http://cxf.apache.org/")
+@SOAPBinding(style = Style.RPC)
+public interface Greeter {
+    @WebMethod
+    String[] echoStringArray(String[] array);
+}

Modified: incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java?view=diff&rev=533486&r1=533485&r2=533486
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java (original)
+++ incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java Sun Apr 29 01:16:18 2007
@@ -299,7 +299,11 @@
         assertTrue(contents.indexOf("org.apache.cxf.tools.fortest.withannotation.doc") != -1);
     }
 
+    // REVISIT: CXF-610
+    // Ref: DOC-LIT-WRAPPED this.testDataBase()
+    //      RPC-LIT         JaxwsServiceBuilderRPCTest.testGreeter()
     @Test
+    @Ignore
     public void testGenWrapperWithStringArray() throws Exception {
         env.put(ToolConstants.CFG_CLASSNAME,
                 "org.apache.cxf.tools.fortest.withannotation.doc.GreeterStringArray");

Modified: incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/expected/db.wsdl
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/expected/db.wsdl?view=diff&rev=533486&r1=533485&r2=533486
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/expected/db.wsdl (original)
+++ incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/expected/db.wsdl Sun Apr 29 01:16:18 2007
@@ -43,7 +43,7 @@
 <xs:element name="operation0Response">
 <xs:complexType>
 <xs:sequence>
-<xs:element maxOccurs="unbounded" minOccurs="0" name="return" type="tns:operation0ResponseType"/>
+<xs:element name="return" nillable="true" type="tns:operation0ResponseTypeArray"/>
 </xs:sequence>
 </xs:complexType>
 </xs:element>

Added: incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/JaxwsServiceBuilderRPCTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/JaxwsServiceBuilderRPCTest.java?view=auto&rev=533486
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/JaxwsServiceBuilderRPCTest.java (added)
+++ incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/JaxwsServiceBuilderRPCTest.java Sun Apr 29 01:16:18 2007
@@ -0,0 +1,64 @@
+/**
+ * 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.cxf.tools.java2wsdl.processor.internal.jaxws;
+
+import java.io.File;
+
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.tools.common.ProcessorTestBase;
+import org.apache.cxf.tools.java2wsdl.generator.wsdl11.WSDL11Generator;
+import org.junit.Before;
+import org.junit.Test;
+
+public class JaxwsServiceBuilderRPCTest extends ProcessorTestBase {
+    JaxwsServiceBuilder builder = new JaxwsServiceBuilder();
+    WSDL11Generator generator = new WSDL11Generator();
+
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        builder.setBus(BusFactory.getDefaultBus());
+    }
+
+    @org.junit.After
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    @Test
+    public void testGreeter() throws Exception {
+        builder.setServiceClass(org.apache.cxf.tools.fortest.jaxws.rpc.Greeter.class);
+        ServiceInfo service = builder.build();
+        generator.setServiceModel(service);
+        File output = getOutputFile("rpc_greeter.wsdl");
+        assertNotNull(output);
+        generator.generate(output);
+        assertTrue(output.exists());
+
+        String expectedFile = this.getClass()
+            .getResource("expected/rpc_greeter.wsdl").getFile();
+        assertFileEquals(expectedFile, output.getAbsolutePath());
+    }
+
+    private File getOutputFile(String fileName) {
+        return new File(output, fileName);
+    }
+}

Added: incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/expected/rpc_greeter.wsdl
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/expected/rpc_greeter.wsdl?view=auto&rev=533486
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/expected/rpc_greeter.wsdl (added)
+++ incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/expected/rpc_greeter.wsdl Sun Apr 29 01:16:18 2007
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<wsdl:definitions name="GreeterService" targetNamespace="http://cxf.apache.org/" xmlns:ns1="http://cxf.apache.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://jaxb.dev.java.net/array" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:types>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://jaxb.dev.java.net/array" version="1.0">
+<xs:complexType final="#all" name="stringArray">
+<xs:sequence>
+<xs:element maxOccurs="unbounded" minOccurs="0" name="item" nillable="true" type="xs:string"/>
+</xs:sequence>
+</xs:complexType>
+</xs:schema>
+  </wsdl:types>
+  <wsdl:message name="echoStringArrayResponse">
+    <wsdl:part name="return" type="ns2:stringArray">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="echoStringArray">
+    <wsdl:part name="arg0" type="ns2:stringArray">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:portType name="Hello">
+    <wsdl:operation name="echoStringArray">
+      <wsdl:input name="echoStringArray" message="ns1:echoStringArray">
+    </wsdl:input>
+      <wsdl:output name="echoStringArrayResponse" message="ns1:echoStringArrayResponse">
+    </wsdl:output>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="GreeterServiceSoapBinding" type="ns1:Hello">
+    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+    <wsdl:operation name="echoStringArray">
+      <soap:operation soapAction="" style="rpc"/>
+      <wsdl:input name="echoStringArray">
+        <soap:body use="literal" namespace="http://cxf.apache.org/"/>
+      </wsdl:input>
+      <wsdl:output name="echoStringArrayResponse">
+        <soap:body use="literal" namespace="http://cxf.apache.org/"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="GreeterService">
+    <wsdl:port name="HelloPort" binding="ns1:GreeterServiceSoapBinding">
+      <soap:address location="http://localhost:9090"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>