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>