[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jakarta-commons-dev
Subject:    svn commit: r981100 - in
From:       jbeard () apache ! org
Date:       2010-07-31 22:34:10
Message-ID: 20100731223410.C77302388906 () eris ! apache ! org
[Download RAW message or body]

Author: jbeard
Date: Sat Jul 31 22:34:10 2010
New Revision: 981100

URL: http://svn.apache.org/viewvc?rev=981100&view=rev
Log:
Intermediate commit. Added sample code to generate send.

Added:
    commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/lib/xslt/
  commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/lib/xslt/javascript-literals.xsl \
(with props)  commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/lib/xslt/xml-to-string.xsl
                
      - copied, changed from r981099, \
commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/util/xml-to-string.xsl
  commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/javascript/scxml/cgf/util/external_communications/common.js \
(with props) Modified:
    commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/javascript/scxml/cgf/util/external_communications/jquery.js
  commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/filterParams.xsl
  commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/genMessageTemplates.xsl
  commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/sendToMessageTemplate.xsl
  commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/splitNamelist.xsl
  commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/util/xml-to-string.xsl
  commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/test/send/TestSend.xml
  commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/test/test_with_xsltproc.sh


Added: commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/lib/xslt/javascript-literals.xsl
                
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-14 \
3_external-communications-module/lib/xslt/javascript-literals.xsl?rev=981100&view=auto
 ==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/lib/xslt/javascript-literals.xsl \
                (added)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/lib/xslt/javascript-literals.xsl \
Sat Jul 31 22:34:10 2010 @@ -0,0 +1,112 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:import href="xml-to-string.xsl"/>
+
+  <xsl:template match="/">
+    <html xml:space="preserve">
+      <head>
+        <title>Top-level elements displayed</title>
+        <script language="JavaScript">
+          <xsl:comment>
+            <xsl:apply-templates select="/*/*" mode="script"/>
+            <xsl:text>&#xA;// </xsl:text>
+          </xsl:comment>
+        </script>
+      </head>
+      <body>
+        <h2>Top-level elements, each as a stand-alone XML document</h2>
+        <form name="myForm">
+          <textarea name="xml" cols="75" rows="18"/>
+          <br/>
+          <select name="choice" onchange="on_change();">
+            <xsl:apply-templates select="/*/*"/>
+          </select>
+        </form>
+        <script language="JavaScript">
+          <xsl:comment>
+            function on_change() {
+                document.myForm.xml.value = eval('e' + \
document.myForm.choice.selectedIndex); +            }
+
+            if (document.myForm.xml.value == "")
+                on_change();
+          // </xsl:comment>
+        </script>
+      </body>
+    </html>
+  </xsl:template>
+
+  <xsl:template match="/*/*">
+    <option>
+      <xsl:value-of select="position()"/>
+      <xsl:text>. </xsl:text>
+      <xsl:value-of select="name()"/>
+    </option>
+  </xsl:template>
+
+  <xsl:template match="/*/*" mode="script">
+    <xsl:text>&#xA;var e</xsl:text>
+    <xsl:value-of select="count(preceding-sibling::*)"/>
+    <xsl:text> = '</xsl:text>
+    <xsl:call-template name="escape-string">
+      <xsl:with-param name="text">
+        <xsl:call-template name="xml-to-string"/>
+      </xsl:with-param>
+    </xsl:call-template>
+    <xsl:text>';</xsl:text>
+  </xsl:template>
+
+  <xsl:template name="escape-string">
+    <xsl:param name="text"/>
+    <xsl:variable name="slashesEscaped">
+      <xsl:call-template name="replace-string">
+        <xsl:with-param name="text" select="$text"/>
+        <xsl:with-param name="replace" select="'\'"/>
+        <xsl:with-param name="with" select="'\\'"/>
+      </xsl:call-template>
+    </xsl:variable>
+    <xsl:variable name="apostrophesEscaped">
+      <xsl:call-template name="replace-string">
+        <xsl:with-param name="text" select="$slashesEscaped"/>
+        <xsl:with-param name="replace" select="&quot;'&quot;"/>
+        <xsl:with-param name="with" select="&quot;\&apos;&quot;"/>
+      </xsl:call-template>
+    </xsl:variable>
+    <xsl:variable name="newlinesEscaped">
+      <xsl:call-template name="replace-string">
+        <xsl:with-param name="text" select="$apostrophesEscaped"/>
+        <xsl:with-param name="replace" select="'&#xA;'"/>
+        <xsl:with-param name="with" select="'\n'"/>
+      </xsl:call-template>
+    </xsl:variable>
+    <xsl:call-template name="escape-dash-dash">
+      <xsl:with-param name="text" select="$newlinesEscaped"/>
+      <xsl:with-param name="replace" select="'--'"/>
+      <xsl:with-param name="with" select='"-&apos; + &apos;-"'/>
+    </xsl:call-template>
+  </xsl:template>
+
+  <xsl:template name="escape-dash-dash">
+    <xsl:param name="text"/>
+    <xsl:variable name="tempText">
+      <xsl:call-template name="replace-string">
+        <xsl:with-param name="text" select="$text"/>
+        <xsl:with-param name="replace" select="'--'"/>
+        <xsl:with-param name="with" select='"-&apos; + &apos;-"'/>
+      </xsl:call-template>
+    </xsl:variable>
+    <xsl:choose>
+      <xsl:when test="contains($tempText, '--')">
+        <xsl:call-template name="escape-dash-dash">
+          <xsl:with-param name="text" select="$tempText"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$tempText"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file

Propchange: commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/lib/xslt/javascript-literals.xsl
                
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/lib/xslt/xml-to-string.xsl \
(from r981099, commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/util/xml-to-string.xsl)
                
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-14 \
3_external-communications-module/lib/xslt/xml-to-string.xsl?p2=commons/sandbox/gsoc/20 \
10/scxml-js/branches/SCXML-143_external-communications-module/lib/xslt/xml-to-string.x \
sl&p1=commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/util/xml-to-string.xsl&r1=981099&r2=981100&rev=981100&view=diff
 ==============================================================================
    (empty)

Added: commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/javascript/scxml/cgf/util/external_communications/common.js
                
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-14 \
3_external-communications-module/src/javascript/scxml/cgf/util/external_communications/common.js?rev=981100&view=auto
 ==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/javascript/scxml/cgf/util/external_communications/common.js \
                (added)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/javascript/scxml/cgf/util/external_communications/common.js \
Sat Jul 31 22:34:10 2010 @@ -0,0 +1,27 @@
+require.def("src/javascript/scxml/cgf/util/external_communications/common",
+{
+	genProperties : function ($names) {
+		var toReturn = [], value, name;
+
+		for (name in $names) {
+			if ($names.hasOwnProperty(name)) {
+				value = $names[name];
+				toReturn.push('<scxml:property name="', name, '">', value, '</scxml:property>');
+			}
+		}
+		return toReturn.join('');
+	},
+
+	scxmlMessageTemplate : function (data) {
+		//TODO: hints
+		return [
+			'<scxml:message xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
xsi:schemaLocation="http://www.w3.org/2005/07/scxml scxml-message.xsd" source="" \
sourcetype="scxml"', +			'sourcetype="scxml" ',
+			'sendid="', data.$sendid, '" ',
+			'type="', data.$type, '" ',
+			'name="', data.$event, '" ',
+			'target="', data.$target, '">',
+			'<scxml:payload>', data.$content || this.genProperties(data.$names), \
'</scxml:payload></scxml:message>' +		].join('');
+	}
+});

Propchange: commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/javascript/scxml/cgf/util/external_communications/common.js
                
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/javascript/scxml/cgf/util/external_communications/jquery.js
                
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-14 \
3_external-communications-module/src/javascript/scxml/cgf/util/external_communications/jquery.js?rev=981100&r1=981099&r2=981100&view=diff
 ==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/javascript/scxml/cgf/util/external_communications/jquery.js \
                (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/javascript/scxml/cgf/util/external_communications/jquery.js \
Sat Jul 31 22:34:10 2010 @@ -1,7 +1,8 @@
 require.def("src/javascript/scxml/cgf/util/external_communications/jquery",
-["lib/js/jquery.js"],
-function(){
+["src/javascript/scxml/cgf/util/external_communications/common","lib/js/jquery.js"],
+function(common){
 	//fixme: json or xml? how do we handle the difference for get? for post?
+
 	return {
 		get : function(url){
 			var toReturn;
@@ -14,7 +15,20 @@ function(){
 			});
 			return toReturn;
 		},
-		post : function(url,data){
+		post : function(url,messagedata,contentdata){
+			var postDataString = null;
+			if(typeof contentdata == "string"){
+				//assume content
+				messagedata.$content = contentdata;
+			}else if(typeof contentdata == "object"){
+				//assume we are given an object hash
+				messagedata.$names = contentdata;
+			}			
+			postDataString = common.scxmlMessageTemplate(data);
+
+			jQuery.post(url,{_content:postDataString});
+
+			/*
 			var toReturn;
 			$.ajax({
 				type:'POST',
@@ -22,10 +36,13 @@ function(){
 				success: function(result) {
 					toReturn = result;
 				},
-				data:data,
+				data:{
+					_content : postDataString 
+				},
 				async:false
 			});
 			return toReturn;
+			*/
 		}
 	}
 })

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/filterParams.xsl
                
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-14 \
3_external-communications-module/src/xslt/ir-compiler/external_communications/filterParams.xsl?rev=981100&r1=981099&r2=981100&view=diff
 ==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/filterParams.xsl \
                (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/filterParams.xsl \
Sat Jul 31 22:34:10 2010 @@ -14,14 +14,22 @@
 	</xsl:template>
 
 	<xsl:template match="s:send">
-		<xsl:variable name="namelistNodes" select="c:namelist/c:name/text()"/>
+		<xsl:variable name="namelistNodes" select="c:namelist/c:name"/>
+		<xsl:variable name="filteredParams" select="s:param[not(@name = \
$namelistNodes/text())]"/> +
+		<!--
+		<xsl:message>
+			namelistNodes : <xsl:value-of select="count($namelistNodes)"/>
+			filteredParams : <xsl:value-of select="count($filteredParams)"/>
+		</xsl:message>
+		-->
 
 		<xsl:copy>
 			<xsl:apply-templates select="@*"/>
 
-			<xsl:apply-templates select="param[not(@name = $namelistNodes)]"/>
+			<xsl:apply-templates select="$filteredParams"/>
 
-			<xsl:apply-templates select="node()[not(self::param)]"/>
+			<xsl:apply-templates select="node()[not(self::s:param)]"/>
 		</xsl:copy>
 	</xsl:template>
 

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/genMessageTemplates.xsl
                
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-14 \
3_external-communications-module/src/xslt/ir-compiler/external_communications/genMessageTemplates.xsl?rev=981100&r1=981099&r2=981100&view=diff
 ==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/genMessageTemplates.xsl \
                (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/genMessageTemplates.xsl \
Sat Jul 31 22:34:10 2010 @@ -22,9 +22,21 @@
 	xmlns:c="http://commons.apache.org/scxml-js"
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	version="1.0">
+
+	<xsl:import href="../../util/xml-to-string.xsl"/>
+
   	<xsl:output method="text"/>
 
-	<xsl:template match="send">
+	<!--
+	<xsl:template match="/">
+		<TestElement>
+			<xsl:apply-templates mode="escape"/>
+		</TestElement>
+	</xsl:template>
+	-->
+
+	<!--
+	<xsl:template match="s:send">
 		<xsl:text>send(</xsl:text>
 			<xsl:apply-templates select="c:messageTemplate"/>,
 			<xsl:text>&apos;</xsl:text><xsl:value-of \
select="@target"/><xsl:text>&apos;</xsl:text> @@ -32,13 +44,13 @@
 	</xsl:template>
 		
 	<xsl:template match="c:messageTemplate">
-		<xsl:text>return &apos;</xsl:text><xsl:apply-templates select="*"/> \
<xsl:text>&apos;</xsl:text> +		<xsl:text>return &apos;</xsl:text><xsl:apply-templates \
mode="escape"/> <xsl:text>&apos;</xsl:text>  </xsl:template>
 
 	<xsl:template match="c:name">
 		<xsl:text>&apos; + </xsl:text>
 			<xsl:value-of select="@name"/>
-		<xsl:text> + apos;</xsl:text>
+		<xsl:text> + &apos;</xsl:text>
 	</xsl:template>
 
 	<xsl:template match="c:param">
@@ -47,51 +59,168 @@
 			<xsl:if test="@expr">
 				|| <xsl:value-of select="@expr"/>
 			</xsl:if>
-		<xsl:text> + apos;</xsl:text>
+		<xsl:text> + &apos;</xsl:text>
 	</xsl:template>
-	
-	<!-- from: http://stackoverflow.com/questions/1162352/converting-xml-to-escaped-text-in-xslt \
                -->
-	<xsl:template match="*" mode="escape">
-		<!-- Begin opening tag -->
-		<xsl:text>&lt;</xsl:text>
-		<xsl:value-of select="name()"/>
-		
-		<!-- Namespaces -->
-		<xsl:for-each select="namespace::*">
-			<xsl:text> xmlns</xsl:text>
-			<xsl:if test="name() != ''">
-				<xsl:text>:</xsl:text>
-				<xsl:value-of select="name()"/>
-			</xsl:if>
-			<xsl:text>='</xsl:text>
-			<xsl:call-template name="escape-xml">
-					<xsl:with-param name="text" select="."/>
-			</xsl:call-template>
-			<xsl:text>'</xsl:text>
-		</xsl:for-each>
-		
-		<!-- Attributes -->
-		<xsl:for-each select="@*">
-			<xsl:text> </xsl:text>
-			<xsl:value-of select="name()"/>
-			<xsl:text>='</xsl:text>
-			<xsl:call-template name="escape-xml">
-					<xsl:with-param name="text" select="."/>
-			</xsl:call-template>
-			<xsl:text>'</xsl:text>
-		</xsl:for-each>
-		
-		<!-- End opening tag -->
-		<xsl:text>&gt;</xsl:text>
-		
-		<!-- Content (child elements, text nodes, and PIs) -->
-		<xsl:apply-templates select="node()" mode="escape" />
-		
-		<!-- Closing tag -->
-		<xsl:text>&lt;/</xsl:text>
-		<xsl:value-of select="name()"/>
-		<xsl:text>&gt;</xsl:text>
+	-->
+
+	<xsl:template match="/">
+		<xsl:apply-templates select="//s:send"/>
 	</xsl:template>
-		
-		
+
+	<xsl:template match="s:send">
+		<!-- TODO: switch based on whether send is internal.
+			the code so far is only for external -->
+
+		<xsl:variable name="eventParamValue">
+			<xsl:choose>
+				<xsl:when test="@event">
+					&quot;<xsl:value-of select="@event"/>&quot;
+				</xsl:when>
+				<xsl:when test="@eventexpr">
+					<xsl:value-of select="@eventexpr"/>
+				</xsl:when>
+				<xsl:otherwise>
+					<!-- TODO: move into constant variable -->
+					"external.event"
+				</xsl:otherwise>
+			</xsl:choose>
+		</xsl:variable>
+
+
+		<xsl:variable name="targetParamValue">
+			<xsl:choose>
+				<xsl:when test="@target">
+					&quot;<xsl:value-of select="@target"/>&quot;
+				</xsl:when>
+				<xsl:when test="@targetexpr">
+					<xsl:value-of select="@targetexpr"/>
+				</xsl:when>
+				<xsl:otherwise>
+					<xsl:message terminate="yes">
+						You must specify a @target or @targetexpr on a send element.
+					</xsl:message>
+				</xsl:otherwise>
+			</xsl:choose>
+		</xsl:variable>
+
+
+		<xsl:variable name="typeParamValue">
+			<xsl:choose>
+				<xsl:when test="@type">
+					&quot;<xsl:value-of select="@type"/>&quot;
+				</xsl:when>
+				<xsl:when test="@typeexpr">
+					<xsl:value-of select="@typeexpr"/>
+				</xsl:when>
+				<xsl:otherwise>
+					"scxml"
+				</xsl:otherwise>
+			</xsl:choose>
+		</xsl:variable>
+
+
+		<xsl:variable name="idParamValue">
+			<xsl:choose>
+				<xsl:when test="@id">
+					&quot;<xsl:value-of select="@id"/>&quot;
+				</xsl:when>
+				<xsl:when test="@idlocation">
+					<xsl:value-of select="@idlocation"/>
+				</xsl:when>
+				<xsl:otherwise>
+					<!-- empty node-set? empty string?-->
+					""
+				</xsl:otherwise>
+			</xsl:choose>
+		</xsl:variable>
+
+
+		<xsl:variable name="delayParamValue">
+			<xsl:choose>
+				<xsl:when test="@delay">
+					&quot;<xsl:value-of select="@delay"/>&quot;
+				</xsl:when>
+				<xsl:when test="@delayexpr">
+					<xsl:value-of select="@delayexpr"/>
+				</xsl:when>
+				<xsl:otherwise>
+					<!-- empty node-set? empty string?-->
+					""
+				</xsl:otherwise>
+			</xsl:choose>
+		</xsl:variable>
+
+		<xsl:variable name="hintsParamValue">
+			<xsl:choose>
+				<xsl:when test="@hints">
+					&quot;<xsl:value-of select="@hints"/>&quot;
+				</xsl:when>
+				<xsl:when test="@hintsexpr">
+					<xsl:value-of select="@hintsexpr"/>
+				</xsl:when>
+				<xsl:otherwise>
+					<!-- empty node-set? empty string?-->
+					""
+				</xsl:otherwise>
+			</xsl:choose>
+		</xsl:variable>
+
+		<xsl:variable name="payload">
+			<xsl:choose>
+				<xsl:when test="s:content">
+					<!-- serialize to js-safe string -->
+					'<xsl:apply-templates select="s:content"/>'
+				</xsl:when>
+				<xsl:otherwise>
+					{
+					<xsl:for-each select="c:namelist/c:name | s:param">
+						<xsl:variable name="name">
+							<xsl:choose>
+								<xsl:when test="@name">
+									<xsl:value-of select="@name"/>
+								</xsl:when>
+								<xsl:otherwise>
+									<xsl:value-of select="."/>
+								</xsl:otherwise>
+							</xsl:choose>
+						</xsl:variable>
+						<xsl:value-of select="$name" /> : <xsl:value-of select="$name" />
+						<xsl:if test="@expr">
+							|| <xsl:value-of select="@expr"/>
+						</xsl:if>
+						<xsl:if test="not(position() = last())">
+						,
+						</xsl:if>
+					</xsl:for-each>
+					}
+				</xsl:otherwise>
+			</xsl:choose>
+		</xsl:variable>
+
+		<xsl:text>send(</xsl:text>
+			<xsl:value-of select="$targetParamValue"/>,
+			{
+				$event : <xsl:value-of select="$eventParamValue"/>,
+				$target : <xsl:value-of select="$targetParamValue"/>,
+				$type : <xsl:value-of select="$typeParamValue"/>,
+				$sendid : <xsl:value-of select="$idParamValue"/>,
+				$delay : <xsl:value-of select="$delayParamValue"/>,
+				$hints : <xsl:value-of select="$hintsParamValue"/>
+
+			},
+			<xsl:value-of select="$payload"/>
+		<xsl:text>)</xsl:text>
+		<xsl:text>&#xA;&#xA;</xsl:text>
+	</xsl:template>
+
+	<xsl:template match="s:content">
+		<xsl:call-template name="escape-js-string">
+			<xsl:with-param name="text">
+				<xsl:for-each select="node()">
+					<xsl:call-template name="xml-to-string"/>
+				</xsl:for-each>
+			</xsl:with-param>
+		</xsl:call-template>
+	</xsl:template>
+
 </xsl:stylesheet>

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/sendToMessageTemplate.xsl
                
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-14 \
3_external-communications-module/src/xslt/ir-compiler/external_communications/sendToMessageTemplate.xsl?rev=981100&r1=981099&r2=981100&view=diff
 ==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/sendToMessageTemplate.xsl \
                (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/sendToMessageTemplate.xsl \
Sat Jul 31 22:34:10 2010 @@ -40,72 +40,52 @@
 			<xsl:apply-templates select="@*"/>
 
 
-			<!-- TODO: idlocation -->
+			<!-- TODO: id or idlocation -->
 			<!-- TODO: hints --> 
 			<c:messageTemplate>
 				<message 
 					xsi:schemaLocation="http://www.w3.org/2005/07/scxml scxml-message.xsd"
 					sourcetype="scxml"
 					sendid="{@id}">
-					<payload>
-						<!-- these properties may be static or dynamic -->
-						<xsl:choose>
-							<xsl:when test="@type">
-								<xsl:attribute name="type">
-									<xsl:value-of select="@type"/>
-								</xsl:attribute>
-							</xsl:when>
-							<xsl:otherwise>
-								<!-- accept it as a parameter --> 
-								<c:param name="type"/>
-							</xsl:otherwise>
-						</xsl:choose>
-
-						<xsl:choose>
-							<xsl:when test="@event">
-								<xsl:attribute name="name">
-									<xsl:value-of select="@event"/>
-								</xsl:attribute>
-							</xsl:when>
-							<xsl:otherwise>
-								<!-- accept it as a parameter --> 
-								<c:param name="event"/>
-							</xsl:otherwise>
-						</xsl:choose>
-
-						<xsl:choose>
-							<xsl:when test="@target">
-								<xsl:attribute name="target">
-									<xsl:value-of select="@target"/>
-								</xsl:attribute>
-							</xsl:when>
-							<xsl:otherwise>
-								<!-- accept it as a parameter --> 
-								<c:param name="target"/>
-							</xsl:otherwise>
-						</xsl:choose>
-
-						<!-- grab all of the things that might be properties -->
-						<xsl:choose>
-							<xsl:when test="content">
-								<xsl:apply-templates select="content"/>
-							</xsl:when>
-							<xsl:otherwise>
-								<xsl:for-each select="c:namelist/c:name">
-									<property name="{.}">
-										<c:param name="{.}"/>
-									</property>
-								</xsl:for-each> 
-								<xsl:for-each select="param/@name">
-									<property name="{.}">
-										<c:name name="{.}"/>
-									</property>
-								</xsl:for-each> 
-
-
-							</xsl:otherwise>
-						</xsl:choose>
-					</payload>
+
+					<!-- these properties may be static or dynamic -->
+					
+					<xsl:if test="@type">
+						<xsl:attribute name="type">
+							<xsl:value-of select="@type"/>
+						</xsl:attribute>
+					</xsl:if>
+
+					<xsl:if test="@event">
+						<xsl:attribute name="name">
+							<xsl:value-of select="@event"/>
+						</xsl:attribute>
+					</xsl:if>
+
+					<xsl:if test="@target">
+						<xsl:attribute name="target">
+							<xsl:value-of select="@target"/>
+						</xsl:attribute>
+					</xsl:if>
+
+					<xsl:if test="s:content or c:namelist/c:name or s:param">
+						<payload>
+							<!-- grab all of the things that might be properties -->
+							<xsl:choose>
+								<xsl:when test="s:content">
+									<xsl:apply-templates select="s:content"/>
+								</xsl:when>
+								<xsl:otherwise>
+									<xsl:for-each select="c:namelist/c:name">
+										<property name="{.}"><c:param name="{.}"/></property>
+									</xsl:for-each> 
+									<xsl:for-each select="s:param/@name">
+										<property name="{.}"><c:name name="{.}"/></property>
+									</xsl:for-each> 
+								</xsl:otherwise>
+							</xsl:choose>
+						</payload>
+					</xsl:if>
 				</message>
 			</c:messageTemplate>
 

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/splitNamelist.xsl
                
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-14 \
3_external-communications-module/src/xslt/ir-compiler/external_communications/splitNamelist.xsl?rev=981100&r1=981099&r2=981100&view=diff
 ==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/splitNamelist.xsl \
                (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/ir-compiler/external_communications/splitNamelist.xsl \
Sat Jul 31 22:34:10 2010 @@ -33,13 +33,16 @@
 
 	
 	<xsl:template match="s:send">
+		<xsl:variable name="normalizedNamelist" select="normalize-space(@namelist)"/>
 		<xsl:copy>
 			<xsl:apply-templates select="@*|node()"/>
-			<c:namelist>
-				<xsl:call-template name="namelistAttributeToNodeList">
-					<xsl:with-param name="list" select="@namelist"/>
-				</xsl:call-template>	
-			</c:namelist>
+			<xsl:if test="$normalizedNamelist">
+				<c:namelist>
+					<xsl:call-template name="namelistAttributeToNodeList">
+						<xsl:with-param name="list" select="$normalizedNamelist"/>
+					</xsl:call-template>	
+				</c:namelist>
+			</xsl:if>
 		</xsl:copy>
 	</xsl:template>
 

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/util/xml-to-string.xsl
                
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-14 \
3_external-communications-module/src/xslt/util/xml-to-string.xsl?rev=981100&r1=981099&r2=981100&view=diff
 ==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/util/xml-to-string.xsl \
                (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/src/xslt/util/xml-to-string.xsl \
Sat Jul 31 22:34:10 2010 @@ -314,4 +314,55 @@ Recent changes:
     </xsl:choose>
   </xsl:template>
 
+  <xsl:template name="escape-js-string">
+    <xsl:param name="text"/>
+    <xsl:variable name="slashesEscaped">
+      <xsl:call-template name="replace-string">
+        <xsl:with-param name="text" select="$text"/>
+        <xsl:with-param name="replace" select="'\'"/>
+        <xsl:with-param name="with" select="'\\'"/>
+      </xsl:call-template>
+    </xsl:variable>
+    <xsl:variable name="apostrophesEscaped">
+      <xsl:call-template name="replace-string">
+        <xsl:with-param name="text" select="$slashesEscaped"/>
+        <xsl:with-param name="replace" select="&quot;'&quot;"/>
+        <xsl:with-param name="with" select="&quot;\&apos;&quot;"/>
+      </xsl:call-template>
+    </xsl:variable>
+    <xsl:variable name="newlinesEscaped">
+      <xsl:call-template name="replace-string">
+        <xsl:with-param name="text" select="$apostrophesEscaped"/>
+        <xsl:with-param name="replace" select="'&#xA;'"/>
+        <xsl:with-param name="with" select="'\n'"/>
+      </xsl:call-template>
+    </xsl:variable>
+    <xsl:call-template name="escape-dash-dash">
+      <xsl:with-param name="text" select="$newlinesEscaped"/>
+      <xsl:with-param name="replace" select="'--'"/>
+      <xsl:with-param name="with" select='"-&apos; + &apos;-"'/>
+    </xsl:call-template>
+  </xsl:template>
+
+  <xsl:template name="escape-dash-dash">
+    <xsl:param name="text"/>
+    <xsl:variable name="tempText">
+      <xsl:call-template name="replace-string">
+        <xsl:with-param name="text" select="$text"/>
+        <xsl:with-param name="replace" select="'--'"/>
+        <xsl:with-param name="with" select='"-&apos; + &apos;-"'/>
+      </xsl:call-template>
+    </xsl:variable>
+    <xsl:choose>
+      <xsl:when test="contains($tempText, '--')">
+        <xsl:call-template name="escape-dash-dash">
+          <xsl:with-param name="text" select="$tempText"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$tempText"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
 </xsl:stylesheet>

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/test/send/TestSend.xml
                
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-14 \
3_external-communications-module/test/send/TestSend.xml?rev=981100&r1=981099&r2=981100&view=diff
 ==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/test/send/TestSend.xml \
                (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/test/send/TestSend.xml \
Sat Jul 31 22:34:10 2010 @@ -21,7 +21,7 @@
 	profile="ecmascript">
 
 	<initial>
-		<transition target="a1"/>
+		<transition target="a"/>
 	</initial>
 
 	<datamodel>
@@ -32,19 +32,19 @@
 
 	<!-- given event foo.bar, foo should be selected, and we should end in state b1-->
 	<state id="a">
-		<transition id="b2" event="t1">
+		<transition target="b" event="t1">
 			<send target="http://www.google.com"/>
 		</transition>
 	</state>
 
 	<state id="b">
-		<transition id="c" event="t2">
+		<transition target="c" event="t2">
 			<send target="http://www.google.com" namelist="foo bar"/>
 		</transition>
 	</state>
 
 	<state id="c">
-		<transition id="d" event="t3">
+		<transition target="d" event="t3">
 			<!-- namelist foo should take priority over param foo,
 				default expression in bar should be ignored, as it's already defined in the data \
model,  and bat is not defined, so should here use the value 'default3' --> 
@@ -57,7 +57,7 @@
 	</state>
 	
 	<state id="d">
-		<transition id="e" event="t4">
+		<transition target="e" event="t4">
 			<!-- try with JSON data -->
 			<send target="http://www.google.com">
 				<content><![CDATA[
@@ -72,7 +72,7 @@
 	</state>
 
 	<state id="e">
-		<transition id="f" event="t5">
+		<transition target="f" event="t5">
 			<!-- try it with some arbirary XML content, here a bit of XSL -->
 			<send target="http://www.google.com">
 				<content>

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/test/test_with_xsltproc.sh
                
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-14 \
3_external-communications-module/test/test_with_xsltproc.sh?rev=981100&r1=981099&r2=981100&view=diff
 ==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/test/test_with_xsltproc.sh \
                (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/SCXML-143_external-communications-module/test/test_with_xsltproc.sh \
Sat Jul 31 22:34:10 2010 @@ -1,6 +1,7 @@
 #!/bin/sh
 #cat prefix_events/TestPrefixEvents.xml | \
-cat simple2.xml | \
+cat send/TestSend.xml | \
+#cat kitchen_sink/KitchenSink.xml | \
 xsltproc ../src/xslt/ir-compiler/normalizeInitialStates.xsl - | \
 xsltproc ../src/xslt/ir-compiler/generateUniqueStateIds.xsl - | \
 xsltproc ../src/xslt/ir-compiler/generateUniqueInitialStateIds.xsl - | \
@@ -20,10 +21,16 @@ xsltproc ../src/xslt/ir-compiler/addEven
 xsltproc ../src/xslt/ir-compiler/expandStarEvent.xsl - | \
 #
 xsltproc ../src/xslt/ir-compiler/numberStatesAndTransitions.xsl - | \
+#
+xsltproc ../src/xslt/ir-compiler/external_communications/splitNamelist.xsl - | \
+xsltproc ../src/xslt/ir-compiler/external_communications/filterParams.xsl - | \
+#xsltproc ../src/xslt/ir-compiler/external_communications/sendToMessageTemplate.xsl \
- | \  xmlindent > tmp_IR.xml;
+#cat > tmp_IR.xml;
 
+xsltproc ../src/xslt/ir-compiler/external_communications/genMessageTemplates.xsl \
tmp_IR.xml > out.js  #uncomment to compile IR to js
-xsltproc ../build/StateTableStatechartGenerator_combined.xsl tmp_IR.xml > out.js
+#xsltproc ../build/StateTableStatechartGenerator_combined.xsl tmp_IR.xml > out.js
 
 #uncomment to prettify js. need to have beautify.js, beautify-cl.js and \
beautify-html.js in this directory  #java -cp ../lib/java/js.jar \
org.mozilla.javascript.tools.shell.Main -debug beautify-cl.js -i 4 out.js > \
out_pretty.js


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic