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/03/08 00:59:08 UTC

svn commit: r634870 - in /commons/proper/scxml/branches/J5: ./ src/main/java/org/apache/commons/scxml/io/ src/test/java/org/apache/commons/scxml/ src/test/java/org/apache/commons/scxml/env/jexl/

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