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


Reply via email to