You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by de...@apache.org on 2006/07/03 09:18:12 UTC

svn commit: r418698 - in /webservices/axis2/trunk/java/modules: core/src/org/apache/axis2/engine/ java2wsdl/src/org/apache/ws/java2wsdl/ java2wsdl/src/org/apache/ws/java2wsdl/utils/

Author: deepal
Date: Mon Jul  3 00:18:10 2006
New Revision: 418698

URL: http://svn.apache.org/viewvc?rev=418698&view=rev
Log:
applied the patch
http://issues.apache.org/jira/browse/AXIS2-837
build is working !

Venkat for the patch

Modified:
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/InstanceDispatcher.java
    webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2OMBuilder.java
    webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java
    webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java
    webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java
    webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLConstants.java
    webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java
    webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/InstanceDispatcher.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/InstanceDispatcher.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/InstanceDispatcher.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/InstanceDispatcher.java Mon Jul  3 00:18:10 2006
@@ -38,8 +38,6 @@
  */
 public class InstanceDispatcher extends AbstractHandler {
 
-    private static final long serialVersionUID = -1928612412157492489L;
-
 
     /**
      * Post Condition : All the Contexts must be populated.

Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2OMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2OMBuilder.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2OMBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2OMBuilder.java Mon Jul  3 00:18:10 2006
@@ -1,4 +1,14 @@
-package org.apache.ws.java2wsdl;
+package org.apache.ws.java2wsdl; 
+
+import java.io.ByteArrayInputStream;
+import java.io.StringWriter;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
 
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
@@ -10,15 +20,6 @@
 import org.apache.ws.java2wsdl.utils.TypeTable;
 import org.codehaus.jam.JMethod;
 
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamReader;
-import java.io.ByteArrayInputStream;
-import java.io.StringWriter;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Iterator;
-
 /*
 * Copyright 2004,2005 The Apache Software Foundation.
 *
@@ -160,37 +161,40 @@
 
     private void generateMessages(OMFactory fac, OMElement definitions) {
         Hashtable namespaceMap = new Hashtable();
-        String namespacePrefix;
-        String namespaceURI;
-        QName messagePartType;
+        String namespacePrefix = null;
+        String namespaceURI = null;
+        QName messagePartType = null;
         for (int i = 0; i < method.length; i++) {
             JMethod jmethod = method[i];
 
+            //Request Message
+            OMElement requestMessge = fac.createOMElement(
+                    MESSAGE_LOCAL_NAME, wsdl);
+            requestMessge.addAttribute(ATTRIBUTE_NAME, jmethod
+                    .getSimpleName()
+                    + MESSAGE_SUFFIX, null);
+            definitions.addChild(requestMessge);
+            
             // only if a type for the message part has already been defined
             if ((messagePartType = typeTable.getComplexSchemaType(jmethod
-                    .getSimpleName())) != null) {
+                    .getSimpleName())) != null) 
+            {
                 namespaceURI = messagePartType.getNamespaceURI();
                 // avoid duplicate namespaces
-                if ((namespacePrefix = (String) namespaceMap.get(namespaceURI)) == null) {
+                if ((namespacePrefix = (String) namespaceMap.get(namespaceURI)) == null) 
+                {
                     namespacePrefix = generatePrefix();
                     namespaceMap.put(namespaceURI, namespacePrefix);
                 }
 
-                //Request Message
-                OMElement requestMessge = fac.createOMElement(
-                        MESSAGE_LOCAL_NAME, wsdl);
-                requestMessge.addAttribute(ATTRIBUTE_NAME, jmethod
-                        .getSimpleName()
-                        + MESSAGE_SUFFIX, null);
-                definitions.addChild(requestMessge);
                 OMElement requestPart = fac.createOMElement(
                         PART_ATTRIBUTE_NAME, wsdl);
                 requestMessge.addChild(requestPart);
                 requestPart.addAttribute(ATTRIBUTE_NAME, "part1", null);
-
+    
                 requestPart.addAttribute(ELEMENT_ATTRIBUTE_NAME,
-                        namespacePrefix + COLON_SEPARATOR
-                                + jmethod.getSimpleName(), null);
+                            namespacePrefix + COLON_SEPARATOR
+                                    + jmethod.getSimpleName(), null);
             }
 
             // only if a type for the message part has already been defined
@@ -202,7 +206,7 @@
                     namespacePrefix = generatePrefix();
                     namespaceMap.put(namespaceURI, namespacePrefix);
                 }
-                //Response Message
+            //Response Message
                 OMElement responseMessge = fac.createOMElement(
                         MESSAGE_LOCAL_NAME, wsdl);
                 responseMessge.addAttribute(ATTRIBUTE_NAME, jmethod
@@ -211,10 +215,10 @@
                 definitions.addChild(responseMessge);
                 OMElement responsePart = fac.createOMElement(
                         PART_ATTRIBUTE_NAME, wsdl);
-                responseMessge.addChild(responsePart);
-                responsePart.addAttribute(ATTRIBUTE_NAME, "part1", null);
+            responseMessge.addChild(responsePart);
+            responsePart.addAttribute(ATTRIBUTE_NAME, "part1", null);
 
-                responsePart.addAttribute(ELEMENT_ATTRIBUTE_NAME,
+            responsePart.addAttribute(ELEMENT_ATTRIBUTE_NAME,
                         namespacePrefix + COLON_SEPARATOR
                                 + jmethod.getSimpleName() + RESPONSE, null);
             }
@@ -228,6 +232,7 @@
                     .get(namespaceURI));
         }
     }
+
 
     /**
      * Generate the porttypes

Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java Mon Jul  3 00:18:10 2006
@@ -45,6 +45,8 @@
         System.out.println("-st <binding style> : style for the WSDL");
         System.out.println("-u <binding use> : use for the WSDL");
         System.out.println("-l <soap address> : address of the port for the WSDL");
+        System.out.println("-efd <unqualified> : Setting for elementFormDefault (defaults to qualified)");
+        System.out.println("-afd <unqualified> : Setting for attributeFormDefault (defaults to qualified)");
         System.exit(0);
     }
 

Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java Mon Jul  3 00:18:10 2006
@@ -36,6 +36,8 @@
     private String targetNamespace = null;
     private String targetNamespacePrefix = null;
 
+    private String attrFormDefault = null;
+    private String elementFormDefault = null;
     private String schemaTargetNamespace = null;
     private String schemaTargetNamespacePrefix = null;
     private String style = Java2WSDLConstants.DOCUMENT;
@@ -133,13 +135,17 @@
      * @throws Exception
      */
     public void generateWSDL() throws Exception {
-        SchemaGenerator sg = new SchemaGenerator(classLoader, className,
-                schemaTargetNamespace, schemaTargetNamespacePrefix);
+        SchemaGenerator sg = new SchemaGenerator(classLoader, 
+                                                    className,
+                                                    schemaTargetNamespace, 
+                                                    schemaTargetNamespacePrefix);
         ArrayList excludeOpeartion = new ArrayList();
         excludeOpeartion.add("init");
         excludeOpeartion.add("setOperationContext");
         excludeOpeartion.add("destroy");
         sg.setExcludeMethods(excludeOpeartion);
+        sg.setAttrFormDefault(getAttrFormDefault());
+        sg.setElementFormDefault(getElementFormDefault());
         Collection schemaCollection = sg.generateSchema();
         Java2OMBuilder java2OMBuilder = new Java2OMBuilder(sg.getMethods(),
                 schemaCollection,
@@ -154,6 +160,22 @@
         wsdlElement.serialize(out);
         out.flush();
         out.close();
+    }
+
+    public String getAttrFormDefault() {
+        return attrFormDefault;
+    }
+
+    public void setAttrFormDefault(String attrFormDefault) {
+        this.attrFormDefault = attrFormDefault;
+    }
+
+    public String getElementFormDefault() {
+        return elementFormDefault;
+    }
+
+    public void setElementFormDefault(String elementFormDefault) {
+        this.elementFormDefault = elementFormDefault;
     }
 }
 

Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java Mon Jul  3 00:18:10 2006
@@ -149,6 +149,15 @@
         if (option != null) {
             java2WsdlBuilder.setUse(option.getOptionValue());
         }
+        
+        option = loadOption(Java2WSDLConstants.ATTR_FORM_DEFAULT_OPTION,
+                Java2WSDLConstants.ATTR_FORM_DEFAULT_OPTION_LONG, optionsMap);
+        java2WsdlBuilder.setAttrFormDefault(option == null ? null : option.getOptionValue());
+        
+        option = loadOption(Java2WSDLConstants.ELEMENT_FORM_DEFAULT_OPTION,
+                Java2WSDLConstants.ELEMENT_FORM_DEFAULT_OPTION_LONG, optionsMap);
+        java2WsdlBuilder.setElementFormDefault(option == null ? null : option.getOptionValue());
+        
 
 
     }

Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLConstants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLConstants.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLConstants.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLConstants.java Mon Jul  3 00:18:10 2006
@@ -25,6 +25,9 @@
     String DEFAULT_TARGET_NAMESPACE_PREFIX = "axis2";
     String TARGETNAMESPACE_PREFIX = "tns";
     String SCHEMA_NAMESPACE_PRFIX = "ns";
+    String FORM_DEFAULT_QUALIFIED = "qualified";
+    String FORM_DEFAULT_UNQUALIFIED = "unqualified";
+    
 
     String DEFAULT_TARGET_NAMESPACE = "http://ws.apache.org/axis2";
     String WSDL_NAMESPACE = "http://schemas.xmlsoap.org/wsdl/";
@@ -94,6 +97,8 @@
     String STYLE_OPTION = "st";
     String USE_OPTION = "u";
     String LOCATION_OPTION = "l";
+    String ATTR_FORM_DEFAULT_OPTION = "afd";
+    String ELEMENT_FORM_DEFAULT_OPTION = "efd";
 
     //long option constants
     String OUTPUT_LOCATION_OPTION_LONG = "output";
@@ -109,6 +114,8 @@
     String USE_OPTION_LONG = "use";
     String LOCATION_OPTION_LONG = "location";
     String AXIS2_NAMESPACE_PREFIX = "ns1";
+    String ATTR_FORM_DEFAULT_OPTION_LONG = "attributeFormDefault";
+    String ELEMENT_FORM_DEFAULT_OPTION_LONG = "elementFormDefault";
 
     public static final String SOLE_INPUT = "SOLE_INPUT";
 

Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java Mon Jul  3 00:18:10 2006
@@ -27,7 +27,8 @@
 *
 */
 
-public class SchemaGenerator implements Java2WSDLConstants {
+public class SchemaGenerator implements Java2WSDLConstants 
+{
 
     public static final String NAME_SPACE_PREFIX = "stn_";
 
@@ -56,6 +57,10 @@
     private String schemaTargetNameSpace;
 
     private String schema_namespace_prefix;
+    
+    private String attrFormDefault = null;
+    
+    private String elementFormDefault = null;
 
     private Class clazz;
 
@@ -83,9 +88,7 @@
         } else {
             this.schema_namespace_prefix = SCHEMA_NAMESPACE_PRFIX;
         }
-        XmlSchema xmlSchema = getXmlSchema(Java2WSDLUtils.getPackageName(className,loader), schemaTargetNameSpace, schema_namespace_prefix);
-        xmlSchema.getPrefixToNamespaceMap().put(DEFAULT_SCHEMA_NAMESPACE_PREFIX,
-                URI_2001_SCHEMA_XSD);
+        //initializeSchemaMap(this.schemaTargetNameSpace, this.schema_namespace_prefix);
     }
 
     /**
@@ -128,9 +131,13 @@
 
             // since we do not support overload
             HashMap uniqueMethods = new HashMap();
+            XmlSchemaComplexType methodSchemaType = null;
+            XmlSchemaSequence sequence = null;
+            QName methodPartSchemaTypeName = null;
 
             for (int i = 0; i < methods.length; i++) {
                 JMethod jMethod = methods[i];
+                String methodName = methods[i].getSimpleName();
                 // no need to think abt this method , since that is system
                 // config method
                 if (excludeMethods.contains(jMethod.getSimpleName())) {
@@ -147,222 +154,43 @@
                     continue;
                 }
                 uniqueMethods.put(jMethod.getSimpleName(), jMethod);
-
-                //it can easily get the annotations
-//                jMethod.getAnnotations();
+                //create the schema type for the method wrapper
+                
+                uniqueMethods.put(jMethod.getSimpleName(), jMethod);
                 JParameter [] paras = jMethod.getParameters();
-                for (int j = 0; j < paras.length; j++) {
+                String parameterNames [] = null;
+                if (paras.length > 0) 
+                {
+                    parameterNames = methodTable.getParameterNames(methodName);
+                    sequence = new XmlSchemaSequence();
+                    
+                    methodSchemaType = createSchemaTypeForMethodPart(jMethod.getSimpleName());
+                    methodSchemaType.setParticle(sequence);
+                }
+                
+                for (int j = 0; j < paras.length; j++) 
+                {
                     JParameter methodParameter = paras[j];
                     JClass paraType = methodParameter.getType();
-                    String classTypeName = paraType.getQualifiedName();
-                    if (paraType.isArrayType()) {
-                        classTypeName = paraType.getArrayComponentType()
-                                .getQualifiedName();
-                        if (!typeTable.isSimpleType(classTypeName)) {
-                            generateSchema(paraType.getArrayComponentType());
-                        }
-                    } else {
-                        if (!typeTable.isSimpleType(classTypeName)) {
-                            generateSchema(methodParameter.getType());
-                        }
-                    }
-                    /**
-                     * 1. have to check whethet its a simple type 2. then to
-                     * check whther its a simple type array 3. OM elemney 4.
-                     * Bean
-                     */
-
+                    generateSchemaForType(sequence, paraType, 
+                            ( parameterNames != null && parameterNames[j] != null )? parameterNames[j] : methodParameter.getSimpleName());
                 }
                 // for its return type
-                JClass retuenType = jMethod.getReturnType();
-                if (!retuenType.isVoidType()) {
-                    if (retuenType.isArrayType()) {
-                        String returnTypeName = retuenType
-                                .getArrayComponentType().getQualifiedName();
-                        if (!typeTable.isSimpleType(returnTypeName)) {
-                            generateSchema(retuenType.getArrayComponentType());
-                        }
-                    } else {
-                        if (!typeTable.isSimpleType(retuenType
-                                .getQualifiedName())) {
-                            generateSchema(retuenType);
-                        }
-                    }
+                JClass returnType = jMethod.getReturnType();
+                
+                if (!returnType.isVoidType()) 
+                {
+                    methodSchemaType = createSchemaTypeForMethodPart(jMethod.getSimpleName() + RESPONSE);
+                    sequence = new XmlSchemaSequence();
+                    methodSchemaType.setParticle(sequence);
+                    generateSchemaForType(sequence, returnType, "return");
                 }
-
             }
-            generateWrapperElements(methods);
         }
         return schemaMap.values();
     }
 
     /**
-     * Generates wrapper element. If a method takes more than one parameter e.g.
-     * foo(Type1 para1, Type2 para2){} creates a Wrapper element like <element
-     * name="fooInParameter type="tns:fooInParameterElement""> <complexType
-     * name="fooInParameterElement"> <sequnce> <element name="para1"
-     * type="tns:Type1"> <element name="para2" type="tns:Type2"> </sequnce>
-     * </complexType> </element>
-     */
-    private void generateWrapperElements(JMethod methods[]) throws Exception {
-        for (int i = 0; i < methods.length; i++) {
-            JMethod method = methods[i];
-            if (excludeMethods.contains(method.getSimpleName())) {
-                continue;
-            }
-//            if (method.getSimpleName().equals("init")
-//                    || method.getSimpleName().equals("setOperationContext")
-//                    || method.getSimpleName().equals("destroy"))
-//                continue;
-            if (!method.isPublic())
-                continue;
-            generateWrapperElementforMethod(method);
-        }
-    }
-
-    private void generateWrapperElementforMethod(JMethod method) throws Exception {
-        //since the wrapper elements are generated for the methods of the service interface
-        //we get the schema that corresponds to the package of the service interface classname
-        XmlSchema xmlSchema = getXmlSchema(Java2WSDLUtils.getPackageName(className,classLoader),
-                schemaTargetNameSpace,
-                schema_namespace_prefix);
-        String methodName = method.getSimpleName();
-        XmlSchemaComplexType complexType = new XmlSchemaComplexType(xmlSchema);
-        XmlSchemaSequence sequence = new XmlSchemaSequence();
-
-        XmlSchemaElement eltOuter = new XmlSchemaElement();
-        eltOuter.setName(methodName);
-        eltOuter.setSchemaType(complexType);
-        // adding this type to the table
-        QName elementName = new QName(this.schemaTargetNameSpace, eltOuter
-                .getName(), this.schema_namespace_prefix);
-        eltOuter.setQName(elementName);
-        typeTable.addComplexSchema(methodName, elementName);
-        xmlSchema.getItems().add(eltOuter);
-        xmlSchema.getElements().add(elementName, eltOuter);
-
-        JParameter [] paras = method.getParameters();
-        if (paras.length > 0) {
-            complexType.setParticle(sequence);
-        }
-        String parameterNames [] = null;
-        if (paras.length > 0) {
-            parameterNames = methodTable.getParameterNames(methodName);
-        }
-        for (int j = 0; j < paras.length; j++) {
-            JParameter methodParameter = paras[j];
-            String paraName = methodParameter.getSimpleName();
-            String classTypeName = methodParameter.getType().getQualifiedName();
-            boolean isArryType = methodParameter.getType().isArrayType();
-            if (isArryType) {
-                classTypeName = methodParameter.getType()
-                        .getArrayComponentType().getQualifiedName();
-            }
-
-            if (parameterNames != null) {
-                paraName = parameterNames[j];
-            }
-
-            if (typeTable.isSimpleType(classTypeName)) {
-                XmlSchemaElement elt1 = new XmlSchemaElement();
-                elt1.setName(paraName);
-                elt1.setSchemaTypeName(typeTable
-                        .getSimpleSchemaTypeName(classTypeName));
-                sequence.getItems().add(elt1);
-                if (isArryType) {
-                    elt1.setMaxOccurs(Long.MAX_VALUE);
-                    elt1.setMinOccurs(0);
-                }
-            } else {
-                XmlSchemaElement elt1 = new XmlSchemaElement();
-                elt1.setName(paraName);
-                elt1.setSchemaTypeName(typeTable
-                        .getComplexSchemaType(classTypeName));
-                sequence.getItems().add(elt1);
-                if (isArryType) {
-                    elt1.setMaxOccurs(Long.MAX_VALUE);
-                    elt1.setMinOccurs(0);
-                }
-
-                if (!xmlSchema.getPrefixToNamespaceMap().values().
-                        contains(typeTable.getComplexSchemaType(classTypeName).getNamespaceURI())) {
-                    XmlSchemaImport importElement = new XmlSchemaImport();
-                    importElement.setNamespace(typeTable.getComplexSchemaType(classTypeName).getNamespaceURI());
-                    xmlSchema.getItems().add(importElement);
-                    xmlSchema.getPrefixToNamespaceMap().
-                            put(generatePrefix(), typeTable.getComplexSchemaType(classTypeName).getNamespaceURI());
-                }
-            }
-        }
-
-        //generating wrapper element for retuen element
-        JClass methodReturnType = method.getReturnType();
-        generateWrapperforReturnType(methodReturnType, methodName);
-
-    }
-
-    private void generateWrapperforReturnType(JClass retuenType,
-                                              String methodName) throws Exception {
-        //since the wrapper elements are generated for the methods of the service interface
-        //we get the schema that corresponds to the package of the service interface classname
-        XmlSchema xmlSchema = getXmlSchema(Java2WSDLUtils.getPackageName(className,classLoader),
-                schemaTargetNameSpace,
-                schema_namespace_prefix);
-        if (!retuenType.isVoidType()) {
-            XmlSchemaComplexType retuen_com_type = new XmlSchemaComplexType(
-                    xmlSchema);
-            XmlSchemaElement ret_eltOuter = new XmlSchemaElement();
-            ret_eltOuter.setName(methodName + RESPONSE);
-
-            ret_eltOuter.setSchemaType(retuen_com_type);
-            QName ret_comTypeName = new QName(this.schemaTargetNameSpace,
-                    ret_eltOuter.getName(), this.schema_namespace_prefix);
-            xmlSchema.getItems().add(ret_eltOuter);
-            xmlSchema.getElements().add(ret_comTypeName, ret_eltOuter);
-
-            typeTable.addComplexSchema(
-                    methodName + RESPONSE, ret_comTypeName);
-            String classTypeName = retuenType.getQualifiedName();
-            boolean isArryType = retuenType.isArrayType();
-            XmlSchemaSequence sequence = new XmlSchemaSequence();
-            retuen_com_type.setParticle(sequence);
-            if (isArryType) {
-                classTypeName = retuenType.getArrayComponentType()
-                        .getQualifiedName();
-            }
-            if (typeTable.isSimpleType(classTypeName)) {
-                XmlSchemaElement elt1 = new XmlSchemaElement();
-                elt1.setName("return");
-                elt1.setSchemaTypeName(typeTable
-                        .getSimpleSchemaTypeName(classTypeName));
-                sequence.getItems().add(elt1);
-                if (isArryType) {
-                    elt1.setMaxOccurs(Long.MAX_VALUE);
-                    elt1.setMinOccurs(0);
-                }
-            } else {
-                XmlSchemaElement elt1 = new XmlSchemaElement();
-                elt1.setName("return");
-                elt1.setSchemaTypeName(typeTable
-                        .getComplexSchemaType(classTypeName));
-                sequence.getItems().add(elt1);
-                if (isArryType) {
-                    elt1.setMaxOccurs(Long.MAX_VALUE);
-                    elt1.setMinOccurs(0);
-                }
-                if (!xmlSchema.getPrefixToNamespaceMap().values().
-                        contains(typeTable.getComplexSchemaType(classTypeName).getNamespaceURI())) {
-                    XmlSchemaImport importElement = new XmlSchemaImport();
-                    importElement.setNamespace(typeTable.getComplexSchemaType(classTypeName).getNamespaceURI());
-                    xmlSchema.getItems().add(importElement);
-                    xmlSchema.getPrefixToNamespaceMap().
-                            put(generatePrefix(), typeTable.getComplexSchemaType(classTypeName).getNamespaceURI());
-                }
-            }
-        }
-    }
-
-    /**
      * JAM convert first name of an attribute into UpperCase as an example if
      * there is a instance variable called foo in a bean , then Jam give that as
      * Foo so this method is to correct that error
@@ -382,33 +210,35 @@
     /**
      * @param javaType
      */
-    private void generateSchema(JClass javaType) {
+    private QName generateSchema(JClass javaType) 
+    {
         String name = javaType.getQualifiedName();
-        if (typeTable.getComplexSchemaType(name) == null) {
+        QName schemaTypeName = typeTable.getComplexSchemaType(name);
+        if ( schemaTypeName == null) {
             String simpleName = javaType.getSimpleName();
 
             String packageName = javaType.getContainingPackage().getQualifiedName();
             String targetNameSpace = Java2WSDLUtils.schemaNamespaceFromPackageName(packageName).toString();
 
-            XmlSchema xmlSchema = getXmlSchema(packageName, targetNameSpace, generatePrefix());
-            String targetNamespacePrefix = (String) targetNamespacePrefixMap.get(packageName);
+            XmlSchema xmlSchema = getXmlSchema(Java2WSDLUtils.schemaNamespaceFromPackageName(packageName).toString());
+            String targetNamespacePrefix = (String) targetNamespacePrefixMap.get(targetNameSpace);
 
             XmlSchemaComplexType complexType = new XmlSchemaComplexType(xmlSchema);
             XmlSchemaSequence sequence = new XmlSchemaSequence();
 
             XmlSchemaElement eltOuter = new XmlSchemaElement();
-            QName elemntName = new QName(targetNameSpace, simpleName, targetNamespacePrefix);
+            schemaTypeName = new QName(targetNameSpace, simpleName, targetNamespacePrefix);
             eltOuter.setName(simpleName);
-            eltOuter.setQName(elemntName);
+            eltOuter.setQName(schemaTypeName);
             complexType.setParticle(sequence);
             complexType.setName(simpleName);
 
             xmlSchema.getItems().add(eltOuter);
-            xmlSchema.getElements().add(elemntName, eltOuter);
+            xmlSchema.getElements().add(schemaTypeName, eltOuter);
             eltOuter.setSchemaTypeName(complexType.getQName());
 
             xmlSchema.getItems().add(complexType);
-            xmlSchema.getSchemaTypes().add(elemntName, complexType);
+            xmlSchema.getSchemaTypes().add(schemaTypeName, complexType);
 
             // adding this type to the table
             typeTable.addComplexSchema(name, eltOuter.getQName());
@@ -457,27 +287,113 @@
                 }
             }
         }
+        return schemaTypeName;
     }
 
-    private XmlSchema getXmlSchema(String packageName, String targetNamespace, String targetNamespacePrefix) {
-        XmlSchema xmlSchema;
-        // schema element that will hold this type i.e. schema element whose
-        // targetnamespace
-        // corresponds to this type's package
-        if ((xmlSchema = (XmlSchema) schemaMap.get(packageName)) == null) {
+    private QName generateSchemaForType(XmlSchemaSequence sequence, JClass type, String partName) throws Exception
+    {
+        boolean isArrayType = type.isArrayType();
+        if ( isArrayType ) 
+        {
+            type = type.getArrayComponentType();
+        } 
+        
+        String classTypeName = type.getQualifiedName();
+        
+        QName schemaTypeName = typeTable.getSimpleSchemaTypeName(classTypeName);
+        if ( schemaTypeName == null ) 
+        {
+            schemaTypeName = generateSchema(type);
+            addContentToMethodSchemaType(sequence, 
+                                            schemaTypeName, 
+                                            partName,
+                                            type.isArrayType());
+            //addImport((XmlSchema)schemaMap.get(schemaTargetNameSpace), schemaTypeName);
+            String schemaNamespace = Java2WSDLUtils.schemaNamespaceFromPackageName(type.getContainingPackage().
+                                        getQualifiedName()).toString();
+            addImport(getXmlSchema(schemaNamespace),schemaTypeName);
+                    
+        }
+        else
+        {
+            addContentToMethodSchemaType(sequence, 
+                                            schemaTypeName, 
+                                            partName,
+                                            type.isArrayType());
+        }
+        
+        return schemaTypeName;
+    }
+    
+    private void addContentToMethodSchemaType(XmlSchemaSequence sequence, 
+                                                QName schemaTypeName, 
+                                                String paraName,
+                                                boolean isArray )
+    {
+        XmlSchemaElement elt1 = new XmlSchemaElement();
+        elt1.setName(paraName);
+        elt1.setSchemaTypeName(schemaTypeName);
+        sequence.getItems().add(elt1);
+        
+        if ( isArray ) 
+        {
+            elt1.setMaxOccurs(Long.MAX_VALUE);
+            elt1.setMinOccurs(0);
+        }
+    }
+    
+    private XmlSchemaComplexType createSchemaTypeForMethodPart(String localPartName)
+    {
+        //XmlSchema xmlSchema = (XmlSchema)schemaMap.get(schemaTargetNameSpace);
+        XmlSchema xmlSchema = getXmlSchema(schemaTargetNameSpace);
+        QName elementName = new QName(this.schemaTargetNameSpace, localPartName, this.schema_namespace_prefix);
+        XmlSchemaComplexType complexType = new XmlSchemaComplexType(xmlSchema);
+        
+        XmlSchemaElement globalElement = new XmlSchemaElement();
+        globalElement.setSchemaType(complexType);
+        globalElement.setName(formGlobalElementName(localPartName));
+        globalElement.setQName(elementName);
+        
+        xmlSchema.getItems().add(globalElement);
+        xmlSchema.getElements().add(elementName, globalElement);
+        
+        typeTable.addComplexSchema(localPartName, elementName);
+        
+        return complexType;
+    }
+    
+    
+    private String formGlobalElementName(String typeName)
+    {
+        String firstChar = typeName.substring(0,1);
+        return typeName.replaceFirst(firstChar, firstChar.toLowerCase());
+    }
+    
+    private XmlSchema getXmlSchema(String targetNamespace) 
+    {
+        XmlSchema xmlSchema; 
+        
+        if ((xmlSchema = (XmlSchema) schemaMap.get(targetNamespace)) == null) 
+        {
+            String targetNamespacePrefix = generatePrefix();
+            
             xmlSchema = new XmlSchema(targetNamespace, xmlSchemaCollection);
-            targetNamespacePrefixMap.put(packageName, targetNamespacePrefix);
-            schemaMap.put(packageName, xmlSchema);
-
+            xmlSchema.setAttributeFormDefault(getAttrFormDefaultSetting());
+            xmlSchema.setElementFormDefault(getElementFormDefaultSetting());
+            
+            
+            targetNamespacePrefixMap.put(targetNamespace, targetNamespacePrefix);
+            schemaMap.put(targetNamespace, xmlSchema);
+            
             Hashtable prefixmap = new Hashtable();
             prefixmap.put(DEFAULT_SCHEMA_NAMESPACE_PREFIX, URI_2001_SCHEMA_XSD);
             prefixmap.put(targetNamespacePrefix, targetNamespace);
             xmlSchema.setPrefixToNamespaceMap(prefixmap);
         }
-
         return xmlSchema;
     }
 
+
     public TypeTable getTypeTable() {
         return typeTable;
     }
@@ -497,4 +413,70 @@
     public String getSchemaTargetNameSpace() {
         return schemaTargetNameSpace;
     }
+    
+    private void initializeSchemaMap(String targetNamespace, String targetNamespacePrefix)
+    {
+        XmlSchema xmlSchema = new XmlSchema(targetNamespace, xmlSchemaCollection);
+        targetNamespacePrefixMap.put(targetNamespace, targetNamespacePrefix);
+        schemaMap.put(targetNamespace, xmlSchema);
+                
+        Hashtable prefixmap = new Hashtable();
+        prefixmap.put(DEFAULT_SCHEMA_NAMESPACE_PREFIX, URI_2001_SCHEMA_XSD);
+        prefixmap.put(targetNamespacePrefix, targetNamespace);
+        xmlSchema.setPrefixToNamespaceMap(prefixmap);
+    }
+    
+    private void addImport(XmlSchema xmlSchema, QName schemaTypeName)
+    {
+        if (!xmlSchema.getPrefixToNamespaceMap().values().
+                contains(schemaTypeName.getNamespaceURI())) 
+        {
+            XmlSchemaImport importElement = new XmlSchemaImport();
+            importElement.setNamespace(schemaTypeName.getNamespaceURI());
+            xmlSchema.getItems().add(importElement);
+            xmlSchema.getPrefixToNamespaceMap().
+                    put(generatePrefix(), schemaTypeName.getNamespaceURI());
+        }
+    }
+
+    public String getAttrFormDefault() {
+        return attrFormDefault;
+    }
+
+    public void setAttrFormDefault(String attrFormDefault) {
+        this.attrFormDefault = attrFormDefault;
+    }
+
+    public String getElementFormDefault() {
+        return elementFormDefault;
+    }
+
+    public void setElementFormDefault(String elementFormDefault) {
+        this.elementFormDefault = elementFormDefault;
+    }
+    
+    private XmlSchemaForm getAttrFormDefaultSetting()
+    {
+        if ( FORM_DEFAULT_UNQUALIFIED.equals(getAttrFormDefault()) )
+        {
+            return new XmlSchemaForm(XmlSchemaForm.UNQUALIFIED);
+        }
+        else
+        {
+            return new XmlSchemaForm(XmlSchemaForm.QUALIFIED);
+        }
+    }
+    
+    private XmlSchemaForm getElementFormDefaultSetting()
+    {
+        if ( FORM_DEFAULT_UNQUALIFIED.equals(getElementFormDefault()) )
+        {
+            return new XmlSchemaForm(XmlSchemaForm.UNQUALIFIED);
+        }
+        else
+        {
+            return new XmlSchemaForm(XmlSchemaForm.QUALIFIED);
+        }
+    }
+
 }

Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java Mon Jul  3 00:18:10 2006
@@ -36,6 +36,10 @@
                 Java2WSDLConstants.STYLE_OPTION.equalsIgnoreCase(optionType) ||
                 Java2WSDLConstants.USE_OPTION.equalsIgnoreCase(optionType) ||
                 Java2WSDLConstants.LOCATION_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.ATTR_FORM_DEFAULT_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.ELEMENT_FORM_DEFAULT_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.ATTR_FORM_DEFAULT_OPTION_LONG.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.ELEMENT_FORM_DEFAULT_OPTION_LONG.equalsIgnoreCase(optionType) ||
 
                 Java2WSDLConstants.CLASSNAME_OPTION_LONG.equalsIgnoreCase(optionType) ||
                 Java2WSDLConstants.OUTPUT_FILENAME_OPTION_LONG.equalsIgnoreCase(optionType) ||



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org