Author: rahul Date: Fri Mar 7 15:59:06 2008 New Revision: 634870 URL: http://svn.apache.org/viewvc?rev=634870&view=rev Log: Port r620242 to J5 branch. SCXML-67 Process <parallel> child of <state> Thanks to SeongSoo, Park <mysunlite at hanmail dot net>
Added: commons/proper/scxml/branches/J5/src/test/java/org/apache/commons/scxml/env/jexl/microwave-05.xml (with props) Modified: commons/proper/scxml/branches/J5/pom.xml commons/proper/scxml/branches/J5/project.xml commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/io/ModelUpdater.java commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/io/SCXMLSerializer.java commons/proper/scxml/branches/J5/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java Modified: commons/proper/scxml/branches/J5/pom.xml URL: http://svn.apache.org/viewvc/commons/proper/scxml/branches/J5/pom.xml?rev=634870&r1=634869&r2=634870&view=diff ============================================================================== --- commons/proper/scxml/branches/J5/pom.xml (original) +++ commons/proper/scxml/branches/J5/pom.xml Fri Mar 7 15:59:06 2008 @@ -98,6 +98,9 @@ <name>Ross Yakulis</name> </contributor> <contributor> + <name>SeongSoo Park</name> + </contributor> + <contributor> <name>Tony Seebregts</name> </contributor> </contributors> Modified: commons/proper/scxml/branches/J5/project.xml URL: http://svn.apache.org/viewvc/commons/proper/scxml/branches/J5/project.xml?rev=634870&r1=634869&r2=634870&view=diff ============================================================================== --- commons/proper/scxml/branches/J5/project.xml (original) +++ commons/proper/scxml/branches/J5/project.xml Fri Mar 7 15:59:06 2008 @@ -142,6 +142,9 @@ <name>Ross Yakulis</name> </contributor> <contributor> + <name>SeongSoo Park</name> + </contributor> + <contributor> <name>Tony Seebregts</name> </contributor> </contributors> Modified: commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/io/ModelUpdater.java URL: http://svn.apache.org/viewvc/commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/io/ModelUpdater.java?rev=634870&r1=634869&r2=634870&view=diff ============================================================================== --- commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/io/ModelUpdater.java (original) +++ commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/io/ModelUpdater.java Fri Mar 7 15:59:06 2008 @@ -193,7 +193,11 @@ } } else { for (TransitionTarget tt : c.values()) { - updateState((State) tt, targets); + if (tt instanceof State) { + updateState((State) tt, targets); + } else if (tt instanceof Parallel) { + updateParallel((Parallel) tt, targets); + } } } } Modified: commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/io/SCXMLSerializer.java URL: http://svn.apache.org/viewvc/commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/io/SCXMLSerializer.java?rev=634870&r1=634869&r2=634870&view=diff ============================================================================== --- commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/io/SCXMLSerializer.java (original) +++ commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/io/SCXMLSerializer.java Fri Mar 7 15:59:06 2008 @@ -155,8 +155,11 @@ } else { Map<String, TransitionTarget> c = s.getChildren(); for (TransitionTarget tt : c.values()) { - State cs = (State) tt; - serializeState(b, cs, indent + INDENT); + if (tt instanceof State) { + serializeState(b, (State) tt, indent + INDENT); + } else if (tt instanceof Parallel) { + serializeParallel(b, (Parallel) tt, indent + INDENT); + } } } serializeOnExit(b, s, indent + INDENT); Modified: commons/proper/scxml/branches/J5/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java URL: http://svn.apache.org/viewvc/commons/proper/scxml/branches/J5/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java?rev=634870&r1=634869&r2=634870&view=diff ============================================================================== --- commons/proper/scxml/branches/J5/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java (original) +++ commons/proper/scxml/branches/J5/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java Fri Mar 7 15:59:06 2008 @@ -50,7 +50,7 @@ // Test data private URL microwave01jsp, microwave02jsp, microwave01jexl, - microwave02jexl, microwave03jexl, microwave04jexl, transitions01, + microwave02jexl, microwave03jexl, microwave04jexl, microwave05jexl, transitions01, transitions02, transitions03, transitions04, prefix01, send01, send02; private SCXMLExecutor exec; @@ -70,6 +70,8 @@ getResource("org/apache/commons/scxml/env/jexl/microwave-03.xml"); microwave04jexl = this.getClass().getClassLoader(). getResource("org/apache/commons/scxml/env/jexl/microwave-04.xml"); + microwave05jexl = this.getClass().getClassLoader(). + getResource("org/apache/commons/scxml/env/jexl/microwave-05.xml"); transitions01 = this.getClass().getClassLoader(). getResource("org/apache/commons/scxml/transitions-01.xml"); transitions02 = this.getClass().getClassLoader(). @@ -91,7 +93,7 @@ */ public void tearDown() { microwave01jsp = microwave02jsp = microwave01jexl = microwave02jexl = - microwave04jexl = transitions01 = transitions02 = transitions03 = + microwave04jexl = microwave05jexl = transitions01 = transitions02 = transitions03 = transitions04 = prefix01 = send01 = send02 = null; } @@ -136,6 +138,15 @@ // Uses SCXMLParser (latest WD) public void testSCXMLExecutorMicrowave04JexlSample() { SCXML scxml = SCXMLTestHelper.parse(microwave04jexl); + assertNotNull(scxml); + exec = SCXMLTestHelper.getExecutor(scxml); + assertNotNull(exec); + checkMicrowave02Sample(); + } + + // Uses SCXMLParser (latest WD) + public void testSCXMLExecutorMicrowave05JexlSample() { + SCXML scxml = SCXMLTestHelper.parse(microwave05jexl); assertNotNull(scxml); exec = SCXMLTestHelper.getExecutor(scxml); assertNotNull(exec); Added: commons/proper/scxml/branches/J5/src/test/java/org/apache/commons/scxml/env/jexl/microwave-05.xml URL: http://svn.apache.org/viewvc/commons/proper/scxml/branches/J5/src/test/java/org/apache/commons/scxml/env/jexl/microwave-05.xml?rev=634870&view=auto ============================================================================== --- commons/proper/scxml/branches/J5/src/test/java/org/apache/commons/scxml/env/jexl/microwave-05.xml (added) +++ commons/proper/scxml/branches/J5/src/test/java/org/apache/commons/scxml/env/jexl/microwave-05.xml Fri Mar 7 15:59:06 2008 @@ -0,0 +1,98 @@ +<?xml version="1.0"?> +<!-- + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +--> +<!-- + This document uses Commons JEXL as the expressions language. + Needs SCXMLParser. +--> +<scxml xmlns="http://www.w3.org/2005/07/scxml" + xmlns:cs="http://commons.apache.org/scxml" + version="1.0" + initialstate="microwave"> + + <!-- trivial microwave oven example --> + <!-- using parallel (part of composite state) and In() predicate --> + + <state id="microwave"> + + <initial> + <transition target="parts"/> + </initial> + + <parallel id="parts"> + + <state id="oven"> + <initial> + <transition target="off"/> + </initial> + + <state id="off"> + <!-- off state --> + <transition event="turn_on" target="on"/> + </state> + + <state id="on"> + <initial> + <transition target="idle"/> + </initial> + + <!-- on/pause state --> + <onentry> + <!-- we assume the cook_time is passed in as a context parameter --> + <if cond="empty(cook_time)"> + <!-- default setting, note namespace of this custom action --> + <cs:var name="cook_time" expr="5"/> + </if> + <!-- timer variable --> + <cs:var name="timer" expr="0"/> + </onentry> + + <transition event="turn_off" target="off"/> + + <transition cond="timer ge cook_time" target="off"/> + + <state id="idle"> + <transition cond="In('closed')" target="cooking"/> + </state> + + <state id="cooking"> + <transition cond="not In('closed')" target="idle"/> + + <transition event="time" target="cooking"> + <assign name="timer" expr="timer + 1"/> + </transition> + </state> + </state> + </state> + + <state id="door"> + <initial> + <transition target="closed"/> + </initial> + <state id="closed"> + <transition event="door_open" target="open"/> + </state> + <state id="open"> + <transition event="door_close" target="closed"/> + </state> + </state> + + </parallel> + + </state> + +</scxml> Propchange: commons/proper/scxml/branches/J5/src/test/java/org/apache/commons/scxml/env/jexl/microwave-05.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/proper/scxml/branches/J5/src/test/java/org/apache/commons/scxml/env/jexl/microwave-05.xml ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL