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]