Author: jonathan
Date: Wed Jan 9 02:01:22 2008
New Revision: 12052
Log:
more rpc changes.
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 Wed Jan 9
02:01:22 2008
@@ -104,19 +104,27 @@
<xsl:template match="w11soap:body | w12soap:body" mode="rpctypes">
<xsl:variable name="soapbody" select="."/>
- <xsl:if test="$soapbody/../../@style = 'rpc' or
$soapbody/../../../w11soap:binding/@style = 'rpc' or
$soapbody/../../../w12soap:binding/@style = 'rpc'">
- <xsl:variable name="message_name_prefix"
select="substring-before(../@message,':')"/>
+ <xsl:if test="$soapbody/../../w11soap:operation/@style = 'rpc' or
+ $soapbody/../../w12soap:operation/@style = 'rpc' or
+ $soapbody/../../../w11soap:binding/@style = 'rpc' or
+ $soapbody/../../../w12soap:binding/@style = 'rpc'">
+ <xsl:variable name="portType_name"
select="substring-after(ancestor::w11:binding/@type,':')"/>
+ <xsl:variable name="operation_name"
select="ancestor::w11:operation/@name"/>
+ <xsl:variable name="bound_operation"
select="/w11:definitions/w11:[EMAIL PROTECTED] = $portType_name]/w11:[EMAIL
PROTECTED] = $operation_name]"/>
+ <xsl:variable name="message_name"
select="$bound_operation/*[local-name() = local-name(current()/..)]/@message"/>
+ <xsl:variable name="message_name_prefix"
select="substring-before($message_name,':')"/>
<xsl:variable name="message_name_local-name">
<xsl:choose>
- <xsl:when test="contains(../@message,':')">
- <xsl:value-of
select="substring-after(../@message,':')"/>
+ <xsl:when test="contains($message_name,':')">
+ <xsl:value-of
select="substring-after($message_name,':')"/>
</xsl:when>
<xsl:otherwise>
- <xsl:value-of select="../@message"/>
+ <xsl:value-of select="$message_name"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="message_name_namespace-uri"
select="../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]"/>
<xsl:variable name="parts" select="$soapbody/@parts"/>
@@ -126,43 +134,66 @@
<xsl:with-param name="message" select="$message"/>
</xsl:call-template>
</xsl:variable>
- <xsl:if test="$usestypes='no'"><!--TODO check -->
- <xsl:variable name="localName">
- <xsl:call-template
name="resolve-soaprpc-element-localname">
- <xsl:with-param name="msg" select=".."/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:if test="$localName != '#any'">
- <xs:schema targetNamespace="[EMAIL PROTECTED]">
- <xs:element name="{$localName}">
- <xs:complexType>
- <xs:sequence>
- <xsl:for-each
select="$message/w11:part[contains($parts,
- concat(' ',@name,' '))]">
- <xsl:variable name="element_prefix"
select="substring-before(@element,':')"/>
- <xsl:variable
name="element_local-name">
- <xsl:choose>
- <xsl:when
test="contains(@element,':')">
- <xsl:value-of
select="substring-after(@element,':')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of
select="@element"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable
name="element_namespace-uri"
select="namespace::*[local-name()=$element_prefix]"/>
- <xsl:variable
name="element_prefix-separator">
- <xsl:if test="$element_prefix !=
''">:</xsl:if>
- </xsl:variable>
- <xs:element
ref="{$element_prefix}{$element_prefix-separator}{$element_local-name}">
- <xsl:copy-of
select="namespace::*[local-name()=$element_prefix]"/><!-- no namespace remap -->
- </xs:element>
- </xsl:for-each>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:schema>
- </xsl:if>
+
+ <xsl:variable name="localName">
+ <xsl:call-template name="resolve-soaprpc-element-localname">
+ <xsl:with-param name="msg" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="$localName != '#any'">
+ <xs:schema targetNamespace="[EMAIL PROTECTED]">
+ <xs:element name="{$localName}">
+ <xs:complexType>
+ <xs:sequence>
+ <xsl:choose>
+ <xsl:when test="$usestypes='yes'">
+ <xsl:for-each
select="$message/w11:part[not($parts) or contains($parts,concat(' ',@name,'
'))]">
+ <xsl:variable name="type_prefix"
select="substring-before(@type,':')"/>
+ <xsl:variable
name="type_local-name">
+ <xsl:choose>
+ <xsl:when
test="contains(@type,':')">
+ <xsl:value-of
select="substring-after(@type,':')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of
select="@type"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable
name="type_namespace-uri" select="namespace::*[local-name()=$type_prefix]"/>
+ <xsl:variable
name="type_prefix-separator">
+ <xsl:if test="$type_prefix !=
''">:</xsl:if>
+ </xsl:variable>
+ <xs:element name="[EMAIL
PROTECTED]" type="{$type_prefix}{$type_prefix-separator}{$type_local-name}">
+ <xsl:copy-of
select="namespace::*[local-name()=$type_prefix]"/>
</xs:element>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise><!--TODO check -->
+ <xsl:for-each
select="$message/w11:part[not($parts) or contains($parts,concat(' ',@name,'
'))]">
+ <xsl:variable
name="element_prefix" select="substring-before(@element,':')"/>
+ <xsl:variable
name="element_local-name">
+ <xsl:choose>
+ <xsl:when
test="contains(@element,':')">
+ <xsl:value-of
select="substring-after(@element,':')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of
select="@element"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable
name="element_namespace-uri"
select="namespace::*[local-name()=$element_prefix]"/>
+ <xsl:variable
name="element_prefix-separator">
+ <xsl:if test="$element_prefix
!= ''">:</xsl:if>
+ </xsl:variable>
+ <xs:element
ref="{$element_prefix}{$element_prefix-separator}{$element_local-name}">
+ <xsl:copy-of
select="namespace::*[local-name()=$element_prefix]"/><!-- no namespace remap -->
+ </xs:element>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:schema>
</xsl:if>
</xsl:if>
</xsl:template>
@@ -413,6 +444,7 @@
<xsl:template name="resolve-elementType-attrs">
<!-- This template is called by resolve-elementType to set attribute
values -->
<xsl:param name="element"/>
+ <xsl:param name="namespace"/>
<xsl:param name="faultname"/>
<xsl:choose>
<xsl:when test="self::w11:fault">
@@ -424,9 +456,15 @@
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
+ <xsl:variable name="prefix">
+ <xsl:value-of
select="local-name(namespace::*[.=$namespace])"/>
+ </xsl:variable>
<xsl:attribute name="element">
+ <xsl:value-of select="$prefix"/>
+ <xsl:text>:</xsl:text>
<xsl:value-of select="$element"/>
</xsl:attribute>
+ <xsl:copy-of select="namespace::*[.=$namespace]"/>
</xsl:otherwise>
</xsl:choose>
<xsl:copy-of select="@wsaw:Action"/>
@@ -491,7 +529,11 @@
<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 -->
- <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: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/../../w11soap:operation/@style = 'rpc' or
@@ -514,29 +556,17 @@
</xsl:call-template>
</xsl:variable>
<xsl:variable name="elementType_namespace-uri"
select="$soapbody/@namespace"/>
- <xsl:variable name="elementType">
- <xsl:choose>
- <xsl:when test="$localName = '#any'">
- <xsl:value-of select="$localName"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of
select="concat('bodyns:',$localName)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="$localName != '#any'">
- <!--TODO <xsl:namespace name="bodyns"
- select="$soapbody/@namespace" />
--->
- </xsl:if>
+ <xsl:variable name="elementType" select="$localName"/>
<xsl:call-template name="resolve-elementType-attrs">
<xsl:with-param name="element"
select="$elementType"/>
+ <xsl:with-param name="namespace"
select="$elementType_namespace-uri"/>
<xsl:with-param name="faultname" select="@name"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="resolve-elementType-attrs">
- <xsl:with-param name="element" select="'#any'"/>
+ <xsl:with-param name="element"
select="$message_name_local-name"/>
+ <xsl:with-param name="namespace"
select="$message_name_namespace-uri"/>
<xsl:with-param name="faultname" select="@name"/>
</xsl:call-template>
</xsl:otherwise>
@@ -557,9 +587,9 @@
</xsl:choose>
</xsl:variable>
<xsl:variable name="elementType_namespace-uri"
select="$message/w11:part/namespace::*[local-name()=$elementType_prefix]"/>
- <xsl:copy-of
select="$message/w11:part/namespace::*[local-name()=$elementType_prefix]"/><!--
no namespace remap -->
<xsl:call-template name="resolve-elementType-attrs">
- <xsl:with-param name="element"
select="$message/w11:part/@element"/>
+ <xsl:with-param name="element"
select="$elementType_local-name"/>
+ <xsl:with-param name="namespace"
select="$elementType_namespace-uri"/>
<xsl:with-param name="faultname" select="@name"/>
</xsl:call-template>
</xsl:when>
@@ -599,9 +629,9 @@
</xsl:choose>
</xsl:variable>
<xsl:variable
name="elementType_namespace-uri"
select="$bodypart/namespace::*[local-name()=$elementType_prefix]"/>
- <xsl:copy-of
select="$bodypart/namespace::*[local-name()=$elementType_prefix]"/><!-- no
namespace remap -->
<xsl:call-template
name="resolve-elementType-attrs">
<xsl:with-param name="element"
select="$bodypart/@element"/>
+ <xsl:with-param name="namespace"
select="$bodypart/namespace::*[local-name()=$elementType_prefix]"/>
<xsl:with-param name="faultname"
select="@name"/>
</xsl:call-template>
</xsl:if>
@@ -616,11 +646,9 @@
</xsl:when>
<!-- Is the message bound to HTTP with URL replacement? -->
<xsl:when test="contains($httpUrlReplacement, 'y')">
- <!--TODO <xsl:namespace name="convertns"
- select="concat(/w11:definitions/@targetNamespace, 'GEN')" />
--->
<xsl:call-template name="resolve-elementType-attrs">
<xsl:with-param name="element"
select="concat('convertns:', ../@name)"/>
+ <xsl:with-param name="namespace"
select="concat(/w11:definitions/@targetNamespace, 'GEN')"/>
<xsl:with-param name="faultname" select="@name"/>
</xsl:call-template>
</xsl:when>
_______________________________________________
Commons-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/commons-dev