Author: amilas
Date: Tue Jun  5 00:27:35 2007
New Revision: 544413

URL: http://svn.apache.org/viewvc?view=rev&rev=544413
Log:
set enabling unwrapping to simple types as well

Modified:
    
webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java
    
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SchemaUnwrapperExtension.java
    
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/TestClassTemplate.xsl

Modified: 
webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java?view=diff&rev=544413&r1=544412&r2=544413
==============================================================================
--- 
webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java
 Tue Jun  5 00:27:35 2007
@@ -205,6 +205,9 @@
                     Map metaInfo = complexType.getMetaInfoMap();
                     String complexTypeName = (String)
                             
metaInfo.get(SchemaConstants.SchemaCompilerInfoHolder.CLASSNAME_KEY);
+                    if (complexTypeName.endsWith("[]")){
+                        complexTypeName = 
complexTypeName.substring(0,complexTypeName.length() -2);
+                    }
                     // store the complext type name to process later
                    axisMessage.addParameter(new 
Parameter(Constants.COMPLEX_TYPE, complexTypeName));
                 }
@@ -240,7 +243,17 @@
         if (message.getParameter(Constants.UNWRAPPED_KEY) != null) {
             XmlSchemaType schemaType = 
message.getSchemaElement().getSchemaType();
             //create a type mapper
-            processXMLSchemaComplexType(schemaType, mapper, opName, schemaMap, 
qnameSuffix);
+            if (schemaType instanceof XmlSchemaComplexType) {
+                processXMLSchemaComplexType(schemaType, mapper, opName, 
schemaMap, qnameSuffix);
+            } else if (schemaType instanceof XmlSchemaSimpleType) {
+                XmlSchemaSimpleType xmlSchemaSimpleType = 
(XmlSchemaSimpleType) schemaType;
+                populateClassName(xmlSchemaSimpleType.getMetaInfoMap(),
+                        mapper,
+                        opName,
+                        false,
+                        message.getElementQName().getLocalPart(),
+                        qnameSuffix);
+            }
 
         }
     }
@@ -284,6 +297,36 @@
 
     }
 
+    private static XmlSchemaType getSchemaType(XmlSchema schema, QName 
typeName) {
+        XmlSchemaType xmlSchemaType = null;
+        if (schema != null) {
+            xmlSchemaType = schema.getTypeByName(typeName);
+            if (xmlSchemaType == null) {
+                // try to find in an import or an include
+                XmlSchemaObjectCollection includes = schema.getIncludes();
+                if (includes != null) {
+                    Iterator includesIter = includes.getIterator();
+                    Object object = null;
+                    while (includesIter.hasNext()) {
+                        object = includesIter.next();
+                        if (object instanceof XmlSchemaImport) {
+                            XmlSchema schema1 = ((XmlSchemaImport) 
object).getSchema();
+                            xmlSchemaType = getSchemaType(schema1,typeName);
+                        }
+                        if (object instanceof XmlSchemaInclude) {
+                            XmlSchema schema1 = ((XmlSchemaInclude) 
object).getSchema();
+                            xmlSchemaType = getSchemaType(schema1,typeName);
+                        }
+                        if (xmlSchemaType != null){
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+        return xmlSchemaType;
+    }
+
 
     private static void processComplexContentModel(XmlSchemaComplexType 
cmplxType,
                                                    TypeMapper mapper,
@@ -300,13 +343,15 @@
                 // process particles inside this extension, if any
                 processSchemaSequence(schemaExtension.getParticle(), mapper, 
opName, schemaMap, qnameSuffix);
 
-                // now we need to get the schema of the extension type from 
the parent schema. For that let's first retrieve
-                // the parent schema
-                XmlSchema parentSchema = (XmlSchema) 
schemaMap.get(schemaExtension.getBaseTypeName().getNamespaceURI());
-
-                // ok now we got the parent schema. Now let's get the 
extension's schema type
-
-                XmlSchemaType extensionSchemaType = 
parentSchema.getTypeByName(schemaExtension.getBaseTypeName());
+                XmlSchema xmlSchema = null;
+                 XmlSchemaType extensionSchemaType = null;
+                for (Iterator iter = 
schemaMap.values().iterator();iter.hasNext();){
+                    xmlSchema = (XmlSchema) iter.next();
+                    extensionSchemaType = 
getSchemaType(xmlSchema,schemaExtension.getBaseTypeName());
+                    if (extensionSchemaType != null){
+                        break;
+                    }
+                }
 
                 processXMLSchemaComplexType(extensionSchemaType, mapper, 
opName, schemaMap, qnameSuffix);
             }

Modified: 
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SchemaUnwrapperExtension.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SchemaUnwrapperExtension.java?view=diff&rev=544413&r1=544412&r2=544413
==============================================================================
--- 
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SchemaUnwrapperExtension.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SchemaUnwrapperExtension.java
 Tue Jun  5 00:27:35 2007
@@ -13,22 +13,7 @@
 import org.apache.axis2.wsdl.util.ConfigPropertyFileLoader;
 import org.apache.axis2.wsdl.util.Constants;
 import org.apache.axis2.wsdl.util.MessagePartInformationHolder;
-import org.apache.ws.commons.schema.XmlSchema;
-import org.apache.ws.commons.schema.XmlSchemaAll;
-import org.apache.ws.commons.schema.XmlSchemaAny;
-import org.apache.ws.commons.schema.XmlSchemaAttribute;
-import org.apache.ws.commons.schema.XmlSchemaChoice;
-import org.apache.ws.commons.schema.XmlSchemaComplexContent;
-import org.apache.ws.commons.schema.XmlSchemaComplexContentExtension;
-import org.apache.ws.commons.schema.XmlSchemaComplexType;
-import org.apache.ws.commons.schema.XmlSchemaContent;
-import org.apache.ws.commons.schema.XmlSchemaContentModel;
-import org.apache.ws.commons.schema.XmlSchemaElement;
-import org.apache.ws.commons.schema.XmlSchemaObject;
-import org.apache.ws.commons.schema.XmlSchemaObjectCollection;
-import org.apache.ws.commons.schema.XmlSchemaParticle;
-import org.apache.ws.commons.schema.XmlSchemaSequence;
-import org.apache.ws.commons.schema.XmlSchemaType;
+import org.apache.ws.commons.schema.*;
 
 import javax.xml.namespace.QName;
 import java.util.ArrayList;
@@ -131,11 +116,24 @@
         XmlSchemaElement schemaElement = message.getSchemaElement();
         XmlSchemaType schemaType = schemaElement.getSchemaType();
 
-
-        handleAllCasesOfComplexTypes(schemaType,
+        if (schemaType instanceof XmlSchemaComplexType){
+             handleAllCasesOfComplexTypes(schemaType,
                                      message,
                                      partNameList,
                                      qnameSuffix);
+        } else if (schemaType instanceof XmlSchemaSimpleType){
+            XmlSchemaSimpleType xmlSchemaSimpleType = (XmlSchemaSimpleType) 
schemaType;
+            QName opName = ((AxisOperation)message.getParent()).getName();
+            partNameList.add(WSDLUtil.getPartQName(opName.getLocalPart(),
+                                                  qnameSuffix,
+                                                  
schemaElement.getQName().getLocalPart()));
+        } else {
+            //we've no idea how to unwrap a non complexType!!!!!!
+            throw new CodeGenerationException(
+                    
CodegenMessages.getMessage("extension.unsupportedSchemaFormat",
+                                               "unknown", "complexType"));
+        }
+
 
 
         try {
@@ -182,11 +180,6 @@
             // handle attributes here
             processAttributes(cmplxType, message, partNameList, qnameSuffix);
 
-        } else {
-            //we've no idea how to unwrap a non complexType!!!!!!
-            throw new CodeGenerationException(
-                    
CodegenMessages.getMessage("extension.unsupportedSchemaFormat",
-                                               "unknown", "complexType"));
         }
     }
 
@@ -221,8 +214,7 @@
             XmlSchemaComplexContent xmlSchemaComplexContent = 
(XmlSchemaComplexContent)contentModel;
             XmlSchemaContent content = xmlSchemaComplexContent.getContent();
             if (content instanceof XmlSchemaComplexContentExtension) {
-                XmlSchemaComplexContentExtension schemaExtension =
-                        (XmlSchemaComplexContentExtension)content;
+                XmlSchemaComplexContentExtension schemaExtension =  
(XmlSchemaComplexContentExtension)content;
 
                 // process particles inside this extension, if any
                 if (schemaExtension.getParticle() != null) {
@@ -237,23 +229,52 @@
 
                 XmlSchema parentSchema = null;
 
-                for (int i = 0; i < schemasList.size() || parentSchema == 
null; i++) {
-                    XmlSchema schema = (XmlSchema)schemasList.get(i);
-                    if (schema.getTargetNamespace()
-                            
.equals(schemaExtension.getBaseTypeName().getNamespaceURI())) {
-                        parentSchema = schema;
+                XmlSchema schema = null;
+                XmlSchemaType extensionSchemaType = null;
+                for (Iterator iter = schemasList.iterator();iter.hasNext();){
+                    schema = (XmlSchema) iter.next();
+                    extensionSchemaType = getSchemaType(schema, 
schemaExtension.getBaseTypeName());
+                    if (extensionSchemaType != null){
+                        break;
                     }
                 }
 
                 // ok now we got the parent schema. Now let's get the 
extension's schema type
 
-                XmlSchemaType extensionSchemaType =
-                        
parentSchema.getTypeByName(schemaExtension.getBaseTypeName());
-
                 handleAllCasesOfComplexTypes(extensionSchemaType, message, 
partNameList,
                                              qnameSuffix);
             }
         }
+    }
+
+    private XmlSchemaType getSchemaType(XmlSchema schema, QName typeName) {
+        XmlSchemaType xmlSchemaType = null;
+        if (schema != null) {
+            xmlSchemaType = schema.getTypeByName(typeName);
+            if (xmlSchemaType == null) {
+                // try to find in an import or an include
+                XmlSchemaObjectCollection includes = schema.getIncludes();
+                if (includes != null) {
+                    Iterator includesIter = includes.getIterator();
+                    Object object = null;
+                    while (includesIter.hasNext()) {
+                        object = includesIter.next();
+                        if (object instanceof XmlSchemaImport) {
+                            XmlSchema schema1 = ((XmlSchemaImport) 
object).getSchema();
+                            xmlSchemaType = getSchemaType(schema1,typeName);
+                        }
+                        if (object instanceof XmlSchemaInclude) {
+                            XmlSchema schema1 = ((XmlSchemaInclude) 
object).getSchema();
+                            xmlSchemaType = getSchemaType(schema1,typeName);
+                        }
+                        if (xmlSchemaType != null){
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+        return xmlSchemaType;
     }
 
     private void processXMLSchemaSequence(XmlSchemaParticle schemaParticle,

Modified: 
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/TestClassTemplate.xsl
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/TestClassTemplate.xsl?view=diff&rev=544413&r1=544412&r2=544413
==============================================================================
--- 
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/TestClassTemplate.xsl
 (original)
+++ 
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/TestClassTemplate.xsl
 Tue Jun  5 00:27:35 2007
@@ -28,8 +28,13 @@
 
      <xsl:for-each select="method">
          <xsl:if test="@mep='12'">
+
           <xsl:variable name="outputtype"><xsl:value-of 
select="output/param/@type"></xsl:value-of></xsl:variable>
-          <xsl:if test="$isSync='1'">
+          <xsl:variable name="outParamType" select="output/[EMAIL 
PROTECTED]'body']/@type"></xsl:variable>
+          <xsl:variable name="outParamComplexType" select="output/[EMAIL 
PROTECTED]'body']/@complextype"></xsl:variable>
+          <xsl:variable name="outParamCount" select="count(output/[EMAIL 
PROTECTED]'body']/param)"></xsl:variable>
+
+        <xsl:if test="$isSync='1'">
         /**
          * Auto generated test method
          */
@@ -165,8 +170,19 @@
         private class <xsl:value-of select="$tempCallbackName"/>  extends 
<xsl:value-of select="$package"/>.<xsl:value-of select="$callbackname"/>{
             public <xsl:value-of select="$tempCallbackName"/>(){ super(null);}
 
-            public void receiveResult<xsl:value-of 
select="@name"/>(org.apache.axis2.client.async.AsyncResult result) {
-                
assertNotNull(result.getResponseEnvelope().getBody().getFirstElement());
+            public void receiveResult<xsl:value-of select="@name"/>(
+                         <xsl:choose>
+                            <xsl:when test="$outParamCount=1">
+                                 <xsl:value-of select="output/[EMAIL 
PROTECTED]'body']/param/@type"/><xsl:text> </xsl:text>result
+                            </xsl:when>
+                            <xsl:when 
test="string-length(normalize-space($outParamComplexType)) > 0">
+                                <xsl:value-of 
select="$outParamComplexType"/><xsl:text> </xsl:text>result
+                            </xsl:when>
+                            <xsl:when 
test="string-length(normalize-space($outParamType)) > 0">
+                                <xsl:value-of 
select="$outParamType"/><xsl:text> </xsl:text>result
+                            </xsl:when>
+                        </xsl:choose>) {
+                
             }
 
             public void receiveError<xsl:value-of 
select="@name"/>(java.lang.Exception e) {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to