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/08/10 16:20:41 UTC

svn commit: r984038 - in /commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js: AbstractEnumeratedStatechartGenerator.xsl AbstractStatechartGenerator.xsl StatePatternStatechartGenerator.xsl

Author: jbeard
Date: Tue Aug 10 14:20:40 2010
New Revision: 984038

URL: http://svn.apache.org/viewvc?rev=984038&view=rev
Log:
This fixes a bug for the following situation: a transition originates at a composite state inside of a parallel region, and ends at a state (composite or basic) inside of that same parallel region.

Modified:
    commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl
    commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl
    commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StatePatternStatechartGenerator.xsl

Modified: commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl?rev=984038&r1=984037&r2=984038&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl (original)
+++ commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractEnumeratedStatechartGenerator.xsl Tue Aug 10 14:20:40 2010
@@ -204,6 +204,21 @@
 		]; 
 	</template>
 
+	<template name="genParallelSubstateAndCompositeConfigurationSetString">
+		<param name="s"/>
+		<param name="t"/>
+
+		currentConfiguration.splice(currentConfiguration.indexOf(statesExited[0].id),1,
+			<for-each select="$t/c:targets/c:target/c:targetState">
+				<variable name="targetStateId" select="."/>
+				<value-of select="$allStates[@id = $targetStateId]/@c:enumId"/>
+
+				<if test="not(position() = last())"> , </if>
+			</for-each>);
+		
+	</template>
+
+
 	<template name="genParallelSubstateConfigurationSetString">
 		<param name="s"/>
 		<param name="t"/>

Modified: commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl?rev=984038&r1=984037&r2=984038&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl (original)
+++ commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl Tue Aug 10 14:20:40 2010
@@ -810,12 +810,15 @@
 			hasTakenDefaultTransition = true;
 		</if>
 
+		<variable name="precomputeExit" 
+			select="local-name($s) = 'initial' or local-name($s) = 'history' or 
+					( $s/@c:isBasic and 
+						( not($s/@c:isParallelSubstate) or 
+							($s/@c:isParallelSubstate and not($t/@c:exitsParallelRegion))))"/>
+
 		//exit states
 		<choose>
-			<when test="local-name($s) = 'initial' or local-name($s) = 'history' or 
-						( $s/@c:isBasic and 
-							( not($s/@c:isParallelSubstate) or 
-								($s/@c:isParallelSubstate and not($t/@c:exitsParallelRegion))))">
+			<when test="$precomputeExit">
 				<for-each select="$t/c:exitpath/c:state">
 					<value-of select="."/>.exitAction();
 				</for-each>
@@ -839,7 +842,13 @@
 
 		//update configuration
 		<choose>
-			<when test="$s/@c:isParallelSubstate and not($t/@c:exitsParallelRegion)">
+			<when test="$s/@c:isParallelSubstate and not($t/@c:exitsParallelRegion) and not($s/@c:isBasic)">
+				<call-template name="genParallelSubstateAndCompositeConfigurationSetString">
+					<with-param name="s" select="$s"/>
+					<with-param name="t" select="$t"/>
+				</call-template>
+			</when>
+			<when test="$s/@c:isParallelSubstate and not($t/@c:exitsParallelRegion) and $s/@c:isBasic">
 				<call-template name="genParallelSubstateConfigurationSetString">
 					<with-param name="s" select="$s"/>
 					<with-param name="t" select="$t"/>

Modified: commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StatePatternStatechartGenerator.xsl
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StatePatternStatechartGenerator.xsl?rev=984038&r1=984037&r2=984038&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StatePatternStatechartGenerator.xsl (original)
+++ commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/StatePatternStatechartGenerator.xsl Tue Aug 10 14:20:40 2010
@@ -97,6 +97,18 @@
 		
 	</template>
 
+	<template name="genParallelSubstateAndCompositeConfigurationSetString">
+		<param name="s"/>
+		<param name="t"/>
+
+		currentConfiguration.splice(currentConfiguration.indexOf(statesExited[0]),1,
+			<for-each select="$t/c:targets/c:target/c:targetState">
+				<value-of select="."/>
+				<if test="not(position() = last())">,</if>
+			</for-each> 
+		); 
+	</template>
+
 	<template name="genParallelSubstateConfigurationSetString">
 		<param name="s"/>
 		<param name="t"/>