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/21 19:16:37 UTC

svn commit: r658766 - in /cxf/trunk: api/src/main/java/org/apache/cxf/tools/common/ rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/ tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/ tools/wsdlto/front...

Author: dkulp
Date: Wed May 21 10:16:36 2008
New Revision: 658766

URL: http://svn.apache.org/viewvc?rev=658766&view=rev
Log:
[CXF-1600, CXF-1601] 
* Add -autoNameResolution flag to wsdl2java to have it handle jaxb classname conflicts automatically instead of requiring a jaxb bindings file.
* Fix some issues of mapping out-of-band headers out of wsdl

Modified:
    cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
    cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
    cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/ClassNameAllocatorImpl.java
    cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java
    cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml

Modified: cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java?rev=658766&r1=658765&r2=658766&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java Wed May 21 10:16:36 2008
@@ -44,6 +44,7 @@
     public static final String CFG_VERBOSE = "verbose";
     public static final String CFG_PORT = "port";
     public static final String CFG_BINDING = "binding";
+    public static final String CFG_AUTORESOLVE = "autoNameResolution";
     public static final String CFG_WEBSERVICE = "webservice";
     public static final String CFG_SERVER = "server";
     public static final String CFG_CLIENT = "client";

Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java?rev=658766&r1=658765&r2=658766&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java Wed May 21 10:16:36 2008
@@ -403,7 +403,7 @@
             if (def != null && schemas != null) {
                 javax.wsdl.Message msg = def.getMessage(header.getMessage());
                 if (msg != null) {
-                    addOutOfBandParts(bop, msg, schemas, isInput);
+                    addOutOfBandParts(bop, msg, schemas, isInput, header.getPart());
                     serviceInfo.refresh();
                 } else {
                     throw new RuntimeException("Header message not defined in service model.");
@@ -413,7 +413,8 @@
     }
 
     private void addOutOfBandParts(final BindingOperationInfo bop, final javax.wsdl.Message msg,
-                                   final SchemaCollection schemas, boolean isInput) {
+                                   final SchemaCollection schemas, boolean isInput,
+                                   final String partName) {
         MessageInfo minfo = null;
         MessageInfo.Type type;
 
@@ -446,7 +447,7 @@
         if (minfo == null) {
             minfo = new MessageInfo(null, type, msg.getQName());
         }
-        buildMessage(minfo, msg, schemas, nextId);
+        buildMessage(minfo, msg, schemas, nextId, partName);
 
         // for wrapped style
         OperationInfo unwrapped = bop.getOperationInfo().getUnwrappedOperation();
@@ -485,29 +486,35 @@
         if (minfo == null) {
             minfo = new MessageInfo(unwrapped, type, msg.getQName());
         }
-        buildMessage(minfo, msg, schemas, nextId);
+        buildMessage(minfo, msg, schemas, nextId, partName);
     }
 
     private void buildMessage(MessageInfo minfo,
                               javax.wsdl.Message msg,
                               SchemaCollection schemas,
-                              int nextId) {
+                              int nextId,
+                              String partNameFilter) {
         for (Part part : cast(msg.getParts().values(), Part.class)) {
-            MessagePartInfo pi = minfo.addMessagePart(new QName(minfo.getName().getNamespaceURI(), part
-                                                                .getName()));
-            if (part.getTypeName() != null) {
-                pi.setTypeQName(part.getTypeName());
-                pi.setElement(false);
-                pi.setXmlSchema(schemas.getTypeByQName(part.getTypeName()));
-            } else {
-                pi.setElementQName(part.getElementName());
-                pi.setElement(true);
-                pi.setXmlSchema(schemas.getElementByQName(part.getElementName()));
+            
+            if (StringUtils.isEmpty(partNameFilter)
+                || part.getName().equals(partNameFilter)) {
+            
+                MessagePartInfo pi = minfo.addMessagePart(new QName(minfo.getName().getNamespaceURI(), part
+                                                                    .getName()));
+                if (part.getTypeName() != null) {
+                    pi.setTypeQName(part.getTypeName());
+                    pi.setElement(false);
+                    pi.setXmlSchema(schemas.getTypeByQName(part.getTypeName()));
+                } else {
+                    pi.setElementQName(part.getElementName());
+                    pi.setElement(true);
+                    pi.setXmlSchema(schemas.getElementByQName(part.getElementName()));
+                }
+                pi.setProperty(OUT_OF_BAND_HEADER, Boolean.TRUE);
+                pi.setProperty(HEADER, Boolean.TRUE);
+                pi.setIndex(nextId);
+                nextId++;
             }
-            pi.setProperty(OUT_OF_BAND_HEADER, Boolean.TRUE);
-            pi.setProperty(HEADER, Boolean.TRUE);
-            pi.setIndex(nextId);
-            nextId++;
         }
     }
 

Modified: cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/ClassNameAllocatorImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/ClassNameAllocatorImpl.java?rev=658766&r1=658765&r2=658766&view=diff
==============================================================================
--- cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/ClassNameAllocatorImpl.java (original)
+++ cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/ClassNameAllocatorImpl.java Wed May 21 10:16:36 2008
@@ -20,15 +20,17 @@
 package org.apache.cxf.tools.wsdlto.databinding.jaxb;
 
 import com.sun.tools.xjc.api.ClassNameAllocator;
+import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.tools.util.ClassCollector;
 
 public class ClassNameAllocatorImpl implements ClassNameAllocator {
     private static final String TYPE_SUFFIX = "_Type";
     private ClassCollector collector;
+    private boolean autoResolveConflicts;
 
-    public ClassNameAllocatorImpl(ClassCollector classCollector) {
+    public ClassNameAllocatorImpl(ClassCollector classCollector, boolean autoResolve) {
         collector = classCollector;
-
+        autoResolveConflicts = autoResolve;
     }
 
     private boolean isNameCollision(String packageName, String className) {
@@ -41,7 +43,24 @@
             fullClzName = className + TYPE_SUFFIX;
         }
 
-        collector.addTypesClassName(packageName, className, packageName + "." + fullClzName);
+        String fullPckClass = packageName + "." + fullClzName;
+        
+        if (autoResolveConflicts) {
+            String t2 = collector.getTypesFullClassName(packageName, className);
+            int cnt = 1;
+            while (!StringUtils.isEmpty(t2)) {
+                
+                cnt++;
+                t2 = collector.getTypesFullClassName(packageName, className + cnt);
+            }
+            if (cnt != 1) {
+                className = className + cnt;
+                fullClzName = fullClzName + cnt;
+                fullPckClass = packageName + "." + fullClzName;
+            }
+        }
+        collector.addTypesClassName(packageName, className, fullPckClass);
+        
         return fullClzName;
     }
    

Modified: cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java?rev=658766&r1=658765&r2=658766&view=diff
==============================================================================
--- cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java (original)
+++ cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java Wed May 21 10:16:36 2008
@@ -129,7 +129,11 @@
         
         SchemaCompilerImpl schemaCompiler = (SchemaCompilerImpl)XJC.createSchemaCompiler();
         ClassCollector classCollector = context.get(ClassCollector.class);
-        ClassNameAllocatorImpl allocator = new ClassNameAllocatorImpl(classCollector);
+        
+        
+        ClassNameAllocatorImpl allocator 
+            = new ClassNameAllocatorImpl(classCollector,
+                                         c.optionSet(ToolConstants.CFG_AUTORESOLVE));
 
         schemaCompiler.setClassNameAllocator(allocator);
            

Modified: cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml?rev=658766&r1=658765&r2=658766&view=diff
==============================================================================
--- cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml (original)
+++ cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml Wed May 21 10:16:36 2008
@@ -159,6 +159,14 @@
                 </annotation>
                 <switch>all</switch>
             </option>
+            
+            <option id="autoNameResolution" maxOccurs="1">
+                <annotation>
+                    If there are conflicts in the generated classnames, try to auto-generate new
+                    classnames instead of forcing the use of binding customizations.
+                </annotation>
+                <switch>autoNameResolution</switch>
+            </option>
 
 	        <option id="defaultValues" maxOccurs="1">
                 <annotation>