You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by am...@apache.org on 2011/05/12 11:13:23 UTC

svn commit: r1102212 - in /axis/axis2/java/core/trunk/modules: java2wsdl/src/org/apache/ws/java2wsdl/ java2wsdl/src/org/apache/ws/java2wsdl/utils/ kernel/src/org/apache/axis2/description/java2wsdl/

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";