You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ra...@apache.org on 2008/02/10 05:23:38 UTC
svn commit: r620242 - in /commons/proper/scxml/trunk/src:
main/java/org/apache/commons/scxml/io/ test/java/org/apache/commons/scxml/
test/java/org/apache/commons/scxml/env/jexl/
Author: rahul
Date: Sat Feb 9 20:23:38 2008
New Revision: 620242
URL: http://svn.apache.org/viewvc?rev=620242&view=rev
Log:
SCXML-67 Process <parallel> child of <state>
Thanks to SeongSoo, Park <mysunlite at hanmail dot net>
TODOs: More tests, update contributor list, port to J5 branch
Added:
commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/env/jexl/microwave-05.xml (with props)
Modified:
commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/io/ModelUpdater.java
commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/io/SCXMLSerializer.java
commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java
Modified: commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/io/ModelUpdater.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/io/ModelUpdater.java?rev=620242&r1=620241&r2=620242&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/io/ModelUpdater.java (original)
+++ commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/io/ModelUpdater.java Sat Feb 9 20:23:38 2008
@@ -205,7 +205,12 @@
} else {
Iterator j = c.keySet().iterator();
while (j.hasNext()) {
- updateState((State) c.get(j.next()), targets);
+ TransitionTarget tt = (TransitionTarget) c.get(j.next());
+ if (tt instanceof State) {
+ updateState((State) tt, targets);
+ } else if (tt instanceof Parallel) {
+ updateParallel((Parallel) tt, targets);
+ }
}
}
}
Modified: commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/io/SCXMLSerializer.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/io/SCXMLSerializer.java?rev=620242&r1=620241&r2=620242&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/io/SCXMLSerializer.java (original)
+++ commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/io/SCXMLSerializer.java Sat Feb 9 20:23:38 2008
@@ -160,8 +160,12 @@
Map c = s.getChildren();
Iterator j = c.keySet().iterator();
while (j.hasNext()) {
- State cs = (State) c.get(j.next());
- serializeState(b, cs, indent + INDENT);
+ TransitionTarget tt = (TransitionTarget) c.get(j.next());
+ 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/trunk/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java?rev=620242&r1=620241&r2=620242&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java (original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java Sat Feb 9 20:23:38 2008
@@ -51,7 +51,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;
@@ -71,6 +71,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().
@@ -92,7 +94,7 @@
*/
public void tearDown() {
microwave01jsp = microwave02jsp = microwave01jexl = microwave02jexl =
- microwave04jexl = transitions01 = transitions02 = transitions03 =
+ microwave04jexl = microwave05jexl = transitions01 = transitions02 = transitions03 =
transitions04 = prefix01 = send01 = send02 = null;
}
@@ -143,6 +145,15 @@
checkMicrowave02Sample();
}
+ // Uses SCXMLParser (latest WD)
+ public void testSCXMLExecutorMicrowave05JexlSample() {
+ SCXML scxml = SCXMLTestHelper.parse(microwave05jexl);
+ assertNotNull(scxml);
+ exec = SCXMLTestHelper.getExecutor(scxml);
+ assertNotNull(exec);
+ checkMicrowave02Sample();
+ }
+
public void testSCXMLExecutorPrefix01Sample() {
exec = SCXMLTestHelper.getExecutor(prefix01);
assertNotNull(exec);
Added: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/env/jexl/microwave-05.xml
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/env/jexl/microwave-05.xml?rev=620242&view=auto
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/env/jexl/microwave-05.xml (added)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/env/jexl/microwave-05.xml Sat Feb 9 20:23:38 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/trunk/src/test/java/org/apache/commons/scxml/env/jexl/microwave-05.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/env/jexl/microwave-05.xml
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL