You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by am...@apache.org on 2008/10/14 12:09:35 UTC

svn commit: r704430 - /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java

Author: amilas
Date: Tue Oct 14 03:09:34 2008
New Revision: 704430

URL: http://svn.apache.org/viewvc?rev=704430&view=rev
Log:
fixing the issue 4073 set wrappers to the array elements pass as service arguments

Modified:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java?rev=704430&r1=704429&r2=704430&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java Tue Oct 14 03:09:34 2008
@@ -20,6 +20,7 @@
 package org.apache.axis2.description.java2wsdl;
 
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.util.JavaUtils;
 import org.apache.axis2.deployment.util.BeanExcludeInfo;
 import org.apache.axis2.deployment.util.Utils;
 import org.apache.axis2.description.*;
@@ -111,6 +112,8 @@
 
     protected boolean sortAttributes = true;
 
+    protected boolean isGenerateWrappedArrayTypes = false;
+
     public NamespaceGenerator getNsGen() throws Exception {
         if (nsGen == null) {
             nsGen = new DefaultNamespaceGenerator();
@@ -157,7 +160,14 @@
             if (sortAtt !=null && "false".equals(sortAtt.getValue())){
                 sortAttributes = false;
             }
+
+            Parameter generateWrappedArrayTypes = service.getParameter("generateWrappedArrayTypes");
+            if ((generateWrappedArrayTypes != null) && JavaUtils.isTrue(generateWrappedArrayTypes.getValue())){
+               isGenerateWrappedArrayTypes = true;
+            }
         }
+
+
     }
 
     //This will locad the custom schema file and add that into the schema map
@@ -726,10 +736,46 @@
             addImport(getXmlSchema(schemaNamespace), schemaTypeName);
 
         } else {
-            addContentToMethodSchemaType(sequence,
-                    schemaTypeName,
-                    partName,
-                    isArrayType);
+            if (isGenerateWrappedArrayTypes && isArrayType) {
+
+
+                XmlSchemaElement xmlSchemaElement = new XmlSchemaElement();
+                xmlSchemaElement.setName("arrayWrapper");
+                sequence.getItems().add(xmlSchemaElement);
+
+                String complexTypeName = schemaTypeName.getLocalPart() + "Wrapper";
+                XmlSchema xmlSchema = getXmlSchema(schemaTargetNameSpace);
+
+                XmlSchemaComplexType xmlSchemaComplexType = null;
+                if (xmlSchema.getTypeByName(complexTypeName) == null) {
+                    xmlSchemaComplexType = new XmlSchemaComplexType(xmlSchema);
+                    XmlSchemaSequence xmlSchemaSequence = new XmlSchemaSequence();
+                    xmlSchemaComplexType.setParticle(xmlSchemaSequence);
+                    xmlSchemaComplexType.setName(schemaTypeName.getLocalPart() + "Wrapper");
+
+                    xmlSchema.getItems().add(xmlSchemaComplexType);
+                    xmlSchema.getSchemaTypes().add(
+                            new QName(schemaTargetNameSpace, xmlSchemaComplexType.getName()),
+                            xmlSchemaComplexType);
+                    addContentToMethodSchemaType(xmlSchemaSequence,
+                        schemaTypeName,
+                        "array",
+                        isArrayType);
+                } else {
+                   xmlSchemaComplexType = (XmlSchemaComplexType) xmlSchema.getTypeByName(complexTypeName);
+                }
+
+                xmlSchemaElement.setSchemaType(xmlSchemaComplexType);
+                xmlSchemaElement.setSchemaTypeName(new QName(schemaTargetNameSpace, xmlSchemaComplexType.getName()));
+
+
+            } else {
+                addContentToMethodSchemaType(sequence,
+                        schemaTypeName,
+                        partName,
+                        isArrayType);
+            }
+
         }
         addImport(getXmlSchema(schemaTargetNameSpace), schemaTypeName);
         return schemaTypeName;
@@ -745,6 +791,7 @@
                                                 boolean isArray) {
         XmlSchemaElement elt1 = new XmlSchemaElement();
         elt1.setName(paraName);
+
         elt1.setSchemaTypeName(schemaTypeName);
         if (sequence != null) {
             sequence.getItems().add(elt1);