Author: jbeard
Date: Sun Nov 7 09:41:31 2010
New Revision: 1032248
URL: http://svn.apache.org/viewvc?rev=1032248&view=rev
Log:
Changed the listener code in order to fix a bug where onentry listeners were
not being called when transitioning from history states. The solution was to
move the listeners into the onexit/onentry actions, which I think makes sense.
Modified:
commons/sandbox/gsoc/2010/scxml-js/trunk/src/python/scxml/cgf/backends/js/AbstractStatechartGenerator.py
commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl
Modified:
commons/sandbox/gsoc/2010/scxml-js/trunk/src/python/scxml/cgf/backends/js/AbstractStatechartGenerator.py
URL:
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/src/python/scxml/cgf/backends/js/AbstractStatechartGenerator.py?rev=1032248&r1=1032247&r2=1032248&view=diff
==============================================================================
---
commons/sandbox/gsoc/2010/scxml-js/trunk/src/python/scxml/cgf/backends/js/AbstractStatechartGenerator.py
(original)
+++
commons/sandbox/gsoc/2010/scxml-js/trunk/src/python/scxml/cgf/backends/js/AbstractStatechartGenerator.py
Sun Nov 7 09:41:31 2010
@@ -7,6 +7,7 @@ config = {
"xslt/ir-compiler/computeLCA.xsl",
"xslt/ir-compiler/transformIf.xsl",
"xslt/ir-compiler/appendStateInformation.xsl",
-
"xslt/ir-compiler/appendBasicStateInformation.xsl"],
+
"xslt/ir-compiler/appendBasicStateInformation.xsl",
+
"xslt/ir-compiler/addBasicDescendantsToTransitions.xsl" ],
"code" : None
}
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=1032248&r1=1032247&r2=1032248&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
Sun Nov 7 09:41:31 2010
@@ -444,6 +444,17 @@
</if>
<apply-templates
select="$state/s:onentry/*[self::s:if or self::s:raise or self::s:log or
self::s:script or self::s:send or self::s:cancel or self::s:invoke or
self::s:finalize or self::s:datamodel or self::s:data or self::s:assign or
self::s:validate or self::s:param]"/>
+
+ <if test="$genListenerHooks">
+ <call-template
name="genForEach">
+ <with-param name="var"
select="'listener'"/>
+ <with-param name="in"
select="'listeners'"/>
+ <with-param name="do">
+ //to
+
listener.onEntry("<value-of select="$stateName"/>");
+ </with-param>
+ </call-template>
+ </if>
}
this.exitAction = function(){
@@ -456,6 +467,21 @@
</if>
<apply-templates
select="$state/s:onexit/*[self::s:if or self::s:raise or self::s:log or
self::s:script or self::s:send or self::s:cancel or self::s:invoke or
self::s:finalize or self::s:datamodel or self::s:data or self::s:assign or
self::s:validate or self::s:param]"/>
+
+
+ <if test="$genListenerHooks">
+ <call-template
name="genForEach">
+ <with-param name="var"
select="'listener'"/>
+ <with-param name="in"
select="'listeners'"/>
+ <with-param name="do">
+ //from
+
listener.onExit("<value-of select="$stateName"/>");
+ </with-param>
+ <!-- inner loop; assign
these so we don't have a collision -->
+ <with-param
name="iteratorVarName" select="concat(generate-id(),'_iterator')"/>
+ <with-param
name="hoistVarName" select="concat(generate-id(),'_hoist')"/>
+ </call-template>
+ </if>
}
<call-template name="genStateHooks">
@@ -1010,20 +1036,6 @@
<with-param name="in" select="'statesExited'"/>
<with-param name="do">
state.exitAction();
-
- <if test="$genListenerHooks">
- <call-template name="genForEach">
- <with-param name="var"
select="'listener'"/>
- <with-param name="in"
select="'listeners'"/>
- <with-param name="do">
- //from
-
listener.onExit(state.toString());
- </with-param>
- <!-- inner loop; assign these
so we don't have a collision -->
- <with-param
name="iteratorVarName" select="concat(generate-id(),'_iterator')"/>
- <with-param name="hoistVarName"
select="concat(generate-id(),'_hoist')"/>
- </call-template>
- </if>
</with-param>
</call-template>
</template>
@@ -1098,15 +1110,6 @@
<when test="$precomputeExit">
<for-each
select="$t/c:exitpath/c:state">
<value-of
select="."/>.exitAction();
-
- <call-template
name="genForEach">
- <with-param
name="var" select="'listener'"/>
- <with-param
name="in" select="'listeners'"/>
- <with-param
name="do">
- //from
-
listener.onExit("<value-of select="."/>");
- </with-param>
- </call-template>
</for-each>
</when>
<otherwise>
@@ -1140,18 +1143,6 @@
<!-- iterate in reverse order -->
<sort select="position()"
data-type="number" order="descending"/>
<value-of select="."/>.enterAction();
-
- <if test="$genListenerHooks">
-
- <call-template
name="genForEach">
- <with-param name="var"
select="'listener'"/>
- <with-param name="in"
select="'listeners'"/>
- <with-param name="do">
- //to
-
listener.onEntry("<value-of select="."/>");
- </with-param>
- </call-template>
- </if>
</for-each>
//update configuration