Author: jonathan
Date: Tue Jan 8 23:19:04 2008
New Revision: 12003
Log:
Some misc rpc handling improvements.
Modified:
trunk/commons/dynamic-codegen/src/wsdl11to20.xsl10.xsl
Modified: trunk/commons/dynamic-codegen/src/wsdl11to20.xsl10.xsl
==============================================================================
--- trunk/commons/dynamic-codegen/src/wsdl11to20.xsl10.xsl (original)
+++ trunk/commons/dynamic-codegen/src/wsdl11to20.xsl10.xsl Tue Jan 8
23:19:04 2008
@@ -124,7 +124,6 @@
<xsl:call-template name="message-is-using-types">
<xsl:with-param name="parts" select="$parts"/>
<xsl:with-param name="message" select="$message"/>
- <xsl:with-param name="name" select="current()"/>
</xsl:call-template>
</xsl:variable>
<xsl:if test="$usestypes='no'"><!--TODO check -->
@@ -436,28 +435,36 @@
<xsl:template name="message-is-using-types">
<xsl:param name="parts"/>
<xsl:param name="message"/>
- <xsl:param name="name"/>
- <xsl:variable name="first-part" select="substring-before($parts, '
')"/>
- <xsl:if test="$first-part != ''">
- <xsl:variable name="remaining-parts-use-types">
- <xsl:call-template name="message-is-using-types">
- <xsl:with-param name="parts"
select="substring-after($parts, ' ')"/>
- <xsl:with-param name="message" select="$message"/>
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$remaining-parts-use-types =
'no'">no</xsl:when>
- <xsl:otherwise>
- <xsl:variable name="bodypart" select="$message/w11:[EMAIL
PROTECTED] =
- $first-part]"/>
- <xsl:choose>
- <xsl:when test="$bodypart/@type and
not($bodypart/@element)">yes</xsl:when>
- <xsl:otherwise>no</xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
+ <xsl:param name="first-part" select="substring-before($parts, ' ')"/>
+ <xsl:choose>
+ <!-- omitted parts attribute -->
+ <xsl:when test="not($parts)">
+ <xsl:choose>
+ <xsl:when test="$message/w11:part/@type and
not($message/w11:part/@element)">yes</xsl:when>
+ <xsl:otherwise>no</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$first-part != ''">
+ <xsl:variable name="remaining-parts-use-types">
+ <xsl:call-template name="message-is-using-types">
+ <xsl:with-param name="parts" select="$parts"/>
+ <xsl:with-param name="message" select="$message"/>
+ <xsl:with-param name="first-part"
select="substring-after($parts, ' ')"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$remaining-parts-use-types =
'no'">no</xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="bodypart"
select="$message/w11:[EMAIL PROTECTED] =
+ $first-part]"/>
+ <xsl:choose>
+ <xsl:when test="$bodypart/@type and
not($bodypart/@element)">yes</xsl:when>
+ <xsl:otherwise>no</xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
</xsl:template>
<xsl:template name="resolve-elementType">
@@ -472,7 +479,7 @@
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
- <xsl:variable name="message_name_namespace-uri"
select="$type/namespace::*[local-name()=$message_name_prefix]"/>
+ <xsl:variable name="message_name_namespace-uri"
select="string(namespace::*[local-name()=$message_name_prefix])"/>
<xsl:variable name="message"
select="/w11:definitions/w11:message[/w11:definitions/@targetNamespace =
$message_name_namespace-uri and @name =
$message_name_local-name]"/>
@@ -481,13 +488,14 @@
<xsl:variable name="portType_local-name" select="../../@name"/>
<xsl:variable name="operation_name" select="../@name"/>
- <xsl:variable name="bound_operation" select="//w11:[EMAIL PROTECTED] =
portType_local-name]/w11:[EMAIL PROTECTED]"/>
+ <xsl:variable name="bound_operation" select="//w11:[EMAIL PROTECTED] =
$portType_local-name or
contains(concat(':',@type,':'),concat($portType_local-name,':')) ]/w11:[EMAIL
PROTECTED]"/>
<!-- FIXME: this has a good chance of breaking if the message is bound
more than once -->
- <!-- FIXME: Only running tests on one operation, and will fail if
@message is missing on input -->
- <xsl:variable name="soapbody" select="$bound_operation/w11:[EMAIL
PROTECTED] = $message_name_local-name]/w11soap:body |
$bound_operation/w11:[EMAIL PROTECTED] = $message_name_local-name]/w11soap:body
| $bound_operation/w11:[EMAIL PROTECTED] =
$message_name_local-name]/w12soap:body | $bound_operation/w11:[EMAIL PROTECTED]
= $message_name_local-name]/w12soap:body"/>
+ <!-- FIXME: Only running tests on one operation -->
+ <xsl:variable name="soapbody"
select="$bound_operation/w11:input[not(@message) or @message =
$message_name_local-name]/w11soap:body |
$bound_operation/w11:output[not(@message) or @message =
$message_name_local-name]/w11soap:body |
$bound_operation/w11:input[not(@message) or @message =
$message_name_local-name]/w12soap:body |
$bound_operation/w11:output[not(@message) or @message =
$message_name_local-name]/w12soap:body"/>
<xsl:choose>
<!-- Is this SOAP RPC? -->
- <xsl:when test="$soapbody/../../@style = 'rpc' or
+ <xsl:when test="$soapbody/../../w11soap:operation/@style = 'rpc' or
+ $soapbody/../../w12soap:operation/@style = 'rpc' or
$soapbody/../../../w11soap:binding/@style = 'rpc' or
$soapbody/../../../w12soap:binding/@style = 'rpc'">
<!-- Check that all parts are defined with elements -->
@@ -495,7 +503,6 @@
<xsl:call-template name="message-is-using-types">
<xsl:with-param name="parts"
select="$soapbody/@parts"/>
<xsl:with-param name="message" select="$message"/>
- <xsl:with-param name="name" select="current()"/>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
_______________________________________________
Commons-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/commons-dev