You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by jb...@apache.org on 2010/06/25 18:16:52 UTC

svn commit: r958019 - in /commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137: ./ src/xslt/backends/js/ src/xslt/ir-compiler/ test/ test/conditional_transition/scripts/

Author: jbeard
Date: Fri Jun 25 16:16:52 2010
New Revision: 958019

URL: http://svn.apache.org/viewvc?rev=958019&view=rev
Log:
Guard conditions now working for table and switch techniques as well.

Modified:
    commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js
    commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl
    commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/AbstractStatechartGenerator.xsl
    commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/StatePatternStatechartGenerator.xsl
    commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/StateTableStatechartGenerator.xsl
    commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/ir-compiler/flattenTransitions.xsl
    commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/conditional_transition/scripts/unitTest.js
    commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/test_with_xsltproc.sh

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js?rev=958019&r1=958018&r2=958019&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js Fri Jun 25 16:16:52 2010
@@ -56,8 +56,8 @@ require.def("build",
 			//enums
 			//we keep backward links of these
 			var backends = {
-				//"switch" : true,
-				//"table" : true,
+				"switch" : true,
+				"table" : true,
 				"state" : true
 			}
 

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl?rev=958019&r1=958018&r2=958019&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl Fri Jun 25 16:16:52 2010
@@ -65,12 +65,7 @@
 		<call-template name="genTriggerIdToNameMap"/>
 
 		//transition functions
-		<for-each select="$transitions">
-			<call-template name="genTriggerDispatcherContext">
-				<with-param name="s" select=".."/>
-				<with-param name="t" select="."/>
-			</call-template>
-		</for-each>
+		<call-template name="genTriggerHandlerFunctions"/>
 
 		<call-template name="genEnumeratedHooks"/>
 	</template>
@@ -94,25 +89,52 @@
 		];
 	</template>
 
+	<template name="genTriggerHandlerFunctions">
+
+		<for-each select="$basicStates">
+
+			<variable name="state" select="."/>
+
+			<for-each select="$eventsEnum/c:name">
+				<variable name="eventName">
+					<value-of select="."/>
+				</variable>
+
+				<variable name="transitionsForEvent" select="$state/s:transition[@event = $eventName]"/>
+
+				<if test="$transitionsForEvent">
+					<call-template name="genTriggerDispatcherContext">
+						<with-param name="s" select="$state"/>
+						<with-param name="transitions" select="$transitionsForEvent"/>
+						<with-param name="eventName" select="$eventName"/>
+					</call-template>
+				</if>
+			</for-each>
+
+			<!-- now do default transitions -->
+			<variable name="defaultTransitionsForState" select="$state/s:transition[not(@event)]"/>
+			<if test="$defaultTransitionsForState">
+				<call-template name="genTriggerDispatcherContext">
+					<with-param name="s" select="$state"/>
+					<with-param name="transitions" select="$defaultTransitionsForState"/>
+					<with-param name="eventName" select="'$default'"/>
+				</call-template>
+			</if>
+
+		</for-each>
+	</template>
+
 	<template name="genTriggerDispatcherContext">
 		<param name="s"/>
-		<param name="t"/>
+		<param name="transitions"/>
+		<param name="eventName"/>
 
-		var <value-of select="$t/@c:tName"/> = function(){
-			<choose>
-				<when test="$s/@c:isHistory">
-					<call-template name="genHistoryTriggerDispatcher">
-						<with-param name="s" select="$s"/>
-						<with-param name="t" select="$t"/>
-					</call-template>
-				</when>
-				<otherwise>
-					<call-template name="genTriggerDispatcherContents">
-						<with-param name="s" select="$s"/>
-						<with-param name="t" select="$t"/>
-					</call-template>
-				</otherwise>
-			</choose>
+		var <value-of select="$transitions[1]/@c:tName"/> = function(){
+			<call-template name="genTriggerDispatcherContents">
+				<with-param name="s" select="$s"/>
+				<with-param name="transitions" select="$transitions"/>
+				<with-param name="eventName" select="$eventName"/>
+			</call-template>
 		}
 	</template>
 

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/AbstractStatechartGenerator.xsl
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/AbstractStatechartGenerator.xsl?rev=958019&r1=958018&r2=958019&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/AbstractStatechartGenerator.xsl (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/AbstractStatechartGenerator.xsl Fri Jun 25 16:16:52 2010
@@ -574,7 +574,30 @@
 		});
 	</template>
 
-	<template name="genTriggerDispatcherContents"> 
+	<template name="genTriggerDispatcherContents">
+		<param name="s"/>
+		<param name="transitions"/>
+		<param name="eventName"/>
+
+		<choose>
+			<when test="$s/@c:isHistory">
+				<call-template name="genHistoryTriggerDispatcher">
+					<with-param name="s" select="$s"/>
+					<with-param name="t" select="$transitions[1]"/>
+				</call-template>
+			</when>
+			<otherwise>
+				<for-each select="$transitions">
+					<call-template name="genTriggerDispatcherGuardConditionBlockContents">
+						<with-param name="s" select="$s"/>
+						<with-param name="t" select="."/>
+					</call-template>
+				</for-each>
+			</otherwise>
+		</choose>
+	</template>
+
+	<template name="genTriggerDispatcherGuardConditionBlockContents"> 
 		<param name="s"/>
 		<param name="t"/>
 

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/StatePatternStatechartGenerator.xsl
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/StatePatternStatechartGenerator.xsl?rev=958019&r1=958018&r2=958019&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/StatePatternStatechartGenerator.xsl (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/StatePatternStatechartGenerator.xsl Fri Jun 25 16:16:52 2010
@@ -118,22 +118,12 @@
 		<param name="eventName"/>
 
 		this.<value-of select="$eventName"/> = function(){
-			<choose>
-				<when test="local-name($s) = 'history'">
-					<call-template name="genHistoryTriggerDispatcher">
-						<with-param name="s" select="$s"/>
-						<with-param name="t" select="$transitions[1]"/>
-					</call-template>
-				</when>
-				<otherwise>
-					<for-each select="$transitions">
-						<call-template name="genTriggerDispatcherContents">
-							<with-param name="s" select="$s"/>
-							<with-param name="t" select="."/>
-						</call-template>
-					</for-each>
-				</otherwise>
-			</choose>
+
+			<call-template name="genTriggerDispatcherContents">
+				<with-param name="s" select="$s"/>
+				<with-param name="transitions" select="$transitions"/>
+				<with-param name="eventName" select="$eventName"/>
+			</call-template>
 
 			<!-- if by this point he hasn't returned, then none of the transitions passed, 
 				and we need to pass the transition up the hierarchy chain -->

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/StateTableStatechartGenerator.xsl
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/StateTableStatechartGenerator.xsl?rev=958019&r1=958018&r2=958019&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/StateTableStatechartGenerator.xsl (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/backends/js/StateTableStatechartGenerator.xsl Fri Jun 25 16:16:52 2010
@@ -76,9 +76,7 @@
 
 						<choose>
 							<when test="$correspondingTransitions">
-								<for-each select="$correspondingTransitions">
-									<value-of select="@c:tName"/>
-								</for-each>
+								<value-of select="$correspondingTransitions[1]/@c:tName"/>
 							</when>
 							<otherwise>
 								<value-of select="$nullTransitionFunctionName"/>

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/ir-compiler/flattenTransitions.xsl
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/ir-compiler/flattenTransitions.xsl?rev=958019&r1=958018&r2=958019&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/ir-compiler/flattenTransitions.xsl (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/src/xslt/ir-compiler/flattenTransitions.xsl Fri Jun 25 16:16:52 2010
@@ -59,10 +59,11 @@ collision. 
 
 		<xsl:variable name="currentTransitions" select="s:transition"/>
 
-		<!-- get active transitions -->
-		<xsl:variable name="filteredParentTransitions" select="$parentTransitions[not(@event = $currentTransitions/@event)]"/>
+		<!-- we used to filter the parent transitions here to avoid transitions with duplicate events,
+			but this is no longer necessary, as parent transitions will have lower priority
+			as they are appended in a deeper document order -->
 
-		<xsl:variable name="activeTransitions" select="$filteredParentTransitions | $currentTransitions"/>
+		<xsl:variable name="activeTransitions" select="$currentTransitions | $parentTransitions"/>
 
 		<!--
 		<xsl:message>
@@ -98,10 +99,11 @@ collision. 
 
 		<xsl:variable name="currentTransitions" select="s:transition"/>
 
-		<!-- get active transitions -->
-		<xsl:variable name="filteredParentTransitions" select="$parentTransitions[not(@event = $currentTransitions/@event)]"/>
+		<!-- we used to filter the parent transitions here to avoid transitions with duplicate events,
+			but this is no longer necessary, as parent transitions will have lower priority
+			as they are appended in a deeper document order -->
 
-		<xsl:variable name="activeTransitions" select="$filteredParentTransitions | $currentTransitions"/>
+		<xsl:variable name="activeTransitions" select="$currentTransitions | $parentTransitions"/>
 
 		<!--
 		<xsl:message>

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/conditional_transition/scripts/unitTest.js
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/conditional_transition/scripts/unitTest.js?rev=958019&r1=958018&r2=958019&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/conditional_transition/scripts/unitTest.js (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/conditional_transition/scripts/unitTest.js Fri Jun 25 16:16:52 2010
@@ -51,7 +51,6 @@ dojo.require("doh.runner");
 					console.log($(conf2));
 					doh.assertTrue(setwiseEqual(conf2,[sc._states.e1]));
 
-debugger;
 					console.info("sending event t3")
 					sc.t3()
 					var conf3 = sc.getCurrentConfiguration();

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/test_with_xsltproc.sh
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/test_with_xsltproc.sh?rev=958019&r1=958018&r2=958019&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/test_with_xsltproc.sh (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/test_with_xsltproc.sh Fri Jun 25 16:16:52 2010
@@ -17,7 +17,7 @@ xsltproc ../src/xslt/ir-compiler/numberS
 xmlindent > tmp_IR.xml;
 
 #uncomment to compile IR to js
-xsltproc ../src/xslt/backends/js/StatePatternStatechartGenerator_combined.xsl tmp_IR.xml > out.js
+xsltproc ../build/StatePatternStatechartGenerator_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