Author: amilas Date: Thu May 12 09:13:22 2011 New Revision: 1102212 URL: http://svn.apache.org/viewvc?rev=1102212&view=rev Log: added an option to generate named complex types for annonymous types
Modified: axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java Modified: axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java?rev=1102212&r1=1102211&r2=1102212&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java (original) +++ axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java Thu May 12 09:13:22 2011 @@ -71,6 +71,7 @@ public class Java2WSDL { System.out.println(" -soap12BindingName soap 12 binding name of the WSDL"); System.out.println(" -restBindingName rest binding name of the WSDL"); System.out.println(" -res <requestElementSuffix> Adds a suffix to the request elemment"); + System.out.println(" -dat <disallowAnonymousTypes> Creates a named complex type for the annonymous complex type"); System.exit(0); } Modified: axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java?rev=1102212&r1=1102211&r2=1102212&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java (original) +++ axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java Thu May 12 09:13:22 2011 @@ -97,6 +97,8 @@ public class Java2WSDLBuilder implements private String requestElementSuffix; + private boolean anonymousTypesAllowed = true; + public Java2WSDLBuilder() { try { ConfigurationContext configCtx = ConfigurationContextFactory @@ -293,6 +295,10 @@ public class Java2WSDLBuilder implements service.addParameter(Java2WSDLConstants.REQUEST_ELEMENT_SUFFIX_OPTION_LONG, requestElementSuffix); } + if (!anonymousTypesAllowed) { + service.addParameter(Java2WSDLConstants.DISALLOW_ANON_TYPES_OPTION_LONG, "true"); + } + schemaGenerator.setAxisService(service); AxisService axisService = AxisService.createService(className, serviceName == null ? Java2WSDLUtils @@ -576,4 +582,12 @@ public class Java2WSDLBuilder implements public void setRequestElementSuffix(String requestElementSuffix) { this.requestElementSuffix = requestElementSuffix; } + + public boolean isAnonymousTypesAllowed() { + return anonymousTypesAllowed; + } + + public void setAnonymousTypesAllowed(boolean anonymousTypesAllowed) { + this.anonymousTypesAllowed = anonymousTypesAllowed; + } } Modified: axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java?rev=1102212&r1=1102211&r2=1102212&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java (original) +++ axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java Thu May 12 09:13:22 2011 @@ -293,6 +293,14 @@ public class Java2WSDLCodegenEngine impl if (option != null) { java2WsdlBuilder.setRequestElementSuffix(option.getOptionValue()); } + + option = loadOption(Java2WSDLConstants.DISALLOW_ANON_TYPES_OPTION, + Java2WSDLConstants.DISALLOW_ANON_TYPES_OPTION_LONG, + optionsMap); + if (option != null) { + java2WsdlBuilder.setAnonymousTypesAllowed(false); + } + } private Java2WSDLCommandLineOption loadOption(String shortOption, String longOption, Modified: axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java?rev=1102212&r1=1102211&r2=1102212&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java (original) +++ axis/axis2/java/core/trunk/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java Thu May 12 09:13:22 2011 @@ -82,6 +82,8 @@ public class Java2WSDLOptionsValidator i Java2WSDLConstants.REST_BINDING_NAME_OPTION_LONG.equalsIgnoreCase(optionType)|| Java2WSDLConstants.REQUEST_ELEMENT_SUFFIX_OPTION.equalsIgnoreCase(optionType)|| Java2WSDLConstants.REQUEST_ELEMENT_SUFFIX_OPTION_LONG.equalsIgnoreCase(optionType)|| + Java2WSDLConstants.DISALLOW_ANON_TYPES_OPTION.equalsIgnoreCase(optionType)|| + Java2WSDLConstants.DISALLOW_ANON_TYPES_OPTION_LONG.equalsIgnoreCase(optionType)|| Java2WSDLConstants.SCHEMA_MAPPING_FILE_LOCATION.equalsIgnoreCase(optionType)|| Java2WSDLConstants.SCHEMA_MAPPING_FILE_LOCATION_LONG.equalsIgnoreCase(optionType)|| Java2WSDLConstants.WSDL_VERSION_OPTION_LONG.equalsIgnoreCase(optionType) Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java?rev=1102212&r1=1102211&r2=1102212&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java (original) +++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java Thu May 12 09:13:22 2011 @@ -1320,9 +1320,21 @@ public class DefaultSchemaGenerator impl complexType = new XmlSchemaComplexType(xmlSchema); XmlSchemaElement globalElement = new XmlSchemaElement(); - globalElement.setSchemaType(complexType); globalElement.setName(localPartName); globalElement.setQName(elementName); + + boolean disallowAnonTypes = isAnonymousTypesDisallowed(); + if (disallowAnonTypes) { + String complexTypeName = localPartName.substring(0, 1).toUpperCase() + + localPartName.substring(1); + complexType.setName(complexTypeName); + globalElement.setSchemaTypeName(complexType.getQName()); + xmlSchema.getItems().add(complexType); + xmlSchema.getSchemaTypes().add(complexType.getQName(), complexType); + } else { + globalElement.setSchemaType(complexType); + } + xmlSchema.getItems().add(globalElement); xmlSchema.getElements().add(elementName, globalElement); } @@ -1341,15 +1353,35 @@ public class DefaultSchemaGenerator impl complexType = new XmlSchemaComplexType(xmlSchema); XmlSchemaElement globalElement = new XmlSchemaElement(); - globalElement.setSchemaType(complexType); globalElement.setName(localPartName); globalElement.setQName(elementName); + + boolean disallowAnonTypes = isAnonymousTypesDisallowed(); + if (disallowAnonTypes) { + complexType.setName(localPartName); + globalElement.setSchemaTypeName(complexType.getQName()); + xmlSchema.getItems().add(complexType); + xmlSchema.getSchemaTypes().add(complexType.getQName(), complexType); + } else { + globalElement.setSchemaType(complexType); + } + xmlSchema.getItems().add(globalElement); xmlSchema.getElements().add(elementName, globalElement); + } return complexType; } + private boolean isAnonymousTypesDisallowed() { + boolean disallowAnonTypes = false; + Parameter param = service.getParameter(Java2WSDLConstants.DISALLOW_ANON_TYPES_OPTION_LONG); + if (param != null) { + disallowAnonTypes = JavaUtils.isTrueExplicitly(param.getValue()); + } + return disallowAnonTypes; + } + private String getRequestElementSuffix() { String requestElementSuffix = null; Parameter param = service.getParameter(Java2WSDLConstants.REQUEST_ELEMENT_SUFFIX_OPTION_LONG); @@ -1360,11 +1392,17 @@ public class DefaultSchemaGenerator impl } protected XmlSchemaComplexType getComplexTypeForElement(XmlSchema xmlSchema, QName name) { + Iterator<?> iterator = xmlSchema.getItems().getIterator(); while (iterator.hasNext()) { XmlSchemaObject object = (XmlSchemaObject) iterator.next(); if (object instanceof XmlSchemaElement && ((XmlSchemaElement) object).getQName().equals(name)) { - return (XmlSchemaComplexType) ((XmlSchemaElement) object).getSchemaType(); + XmlSchemaComplexType xmlSchemaComplexType = (XmlSchemaComplexType) ((XmlSchemaElement) object).getSchemaType(); + if ((xmlSchemaComplexType == null) && (((XmlSchemaElement) object).getSchemaTypeName() != null)){ + xmlSchemaComplexType = + (XmlSchemaComplexType) xmlSchema.getTypeByName(((XmlSchemaElement) object).getSchemaTypeName()); + } + return xmlSchemaComplexType; } } return null; Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java?rev=1102212&r1=1102211&r2=1102212&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java (original) +++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java Thu May 12 09:13:22 2011 @@ -156,6 +156,9 @@ public interface Java2WSDLConstants { String REQUEST_ELEMENT_SUFFIX_OPTION = "res"; String REQUEST_ELEMENT_SUFFIX_OPTION_LONG = "requestElementSuffix"; + String DISALLOW_ANON_TYPES_OPTION = "dat"; + String DISALLOW_ANON_TYPES_OPTION_LONG = "disallowAnonymousTypes"; + String AXIS2_NAMESPACE_PREFIX = "ns1"; public static final String SOLE_INPUT = "SOLE_INPUT";