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

Reply via email to