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/11/15 00:43:16 UTC
svn commit: r714191 - in /commons/proper/scxml/trunk: ./
src/main/java/org/apache/commons/scxml/
src/main/java/org/apache/commons/scxml/model/
src/test/java/org/apache/commons/scxml/model/
Author: rahul
Date: Fri Nov 14 15:43:16 2008
New Revision: 714191
URL: http://svn.apache.org/viewvc?rev=714191&view=rev
Log:
<assign> doesn't remove all children of old node.
A variant of a patch thanks to Joel Truher <joel at truher dot org>.
Adding Joel to list of contributors.
Also fixed a minor formatting inconsistency in a related error message.
SCXML-89
Added:
commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/assign-test-01.xml (props changed)
- copied unchanged from r714183, commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/assign-test.xml
commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/assign-test-02.xml (with props)
Removed:
commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/assign-test.xml
Modified:
commons/proper/scxml/trunk/pom.xml
commons/proper/scxml/trunk/project.xml
commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Builtin.java
commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/model/Assign.java
commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/AssignTest.java
Modified: commons/proper/scxml/trunk/pom.xml
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/pom.xml?rev=714191&r1=714190&r2=714191&view=diff
==============================================================================
--- commons/proper/scxml/trunk/pom.xml (original)
+++ commons/proper/scxml/trunk/pom.xml Fri Nov 14 15:43:16 2008
@@ -117,6 +117,9 @@
<contributor>
<name>Jakob Sachse</name>
</contributor>
+ <contributor>
+ <name>Joel Truher</name>
+ </contributor>
</contributors>
<dependencies>
Modified: commons/proper/scxml/trunk/project.xml
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/project.xml?rev=714191&r1=714190&r2=714191&view=diff
==============================================================================
--- commons/proper/scxml/trunk/project.xml (original)
+++ commons/proper/scxml/trunk/project.xml Fri Nov 14 15:43:16 2008
@@ -164,6 +164,9 @@
<contributor>
<name>Jakob Sachse</name>
</contributor>
+ <contributor>
+ <name>Joel Truher</name>
+ </contributor>
</contributors>
<dependencies>
Modified: commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Builtin.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Builtin.java?rev=714191&r1=714190&r2=714191&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Builtin.java (original)
+++ commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Builtin.java Fri Nov 14 15:43:16 2008
@@ -126,7 +126,7 @@
} else {
if (length > 1) {
Log log = LogFactory.getLog(Builtin.class);
- log.warn("Data(): Multiple nodes matching XPath expression"
+ log.warn("Data(): Multiple nodes matching XPath expression \""
+ path + "\", returning first");
}
return result.item(0);
@@ -209,7 +209,7 @@
} else {
if (length > 1) {
Log log = LogFactory.getLog(Builtin.class);
- log.warn("Data(): Multiple nodes matching XPath expression"
+ log.warn("Data(): Multiple nodes matching XPath expression \""
+ path + "\", returning first");
}
return result.item(0);
Modified: commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/model/Assign.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/model/Assign.java?rev=714191&r1=714190&r2=714191&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/model/Assign.java (original)
+++ commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/model/Assign.java Fri Nov 14 15:43:16 2008
@@ -196,10 +196,11 @@
newNode = eval.evalLocation(ctx, expr);
}
// Remove all children
- for (Node child = oldNode.getFirstChild();
- child != null;
- child = child.getNextSibling()) {
- oldNode.removeChild(child);
+ Node removeChild = oldNode.getFirstChild();
+ while (removeChild != null) {
+ Node nextChild = removeChild.getNextSibling();
+ oldNode.removeChild(removeChild);
+ removeChild = nextChild;
}
if (newNode != null) {
// Adopt new children
Modified: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/AssignTest.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/AssignTest.java?rev=714191&r1=714190&r2=714191&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/AssignTest.java (original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/AssignTest.java Fri Nov 14 15:43:16 2008
@@ -45,21 +45,24 @@
}
// Test data
+ private URL assign01, assign02;
private SCXMLExecutor exec;
/**
* Set up instance variables required by this test case.
*/
public void setUp() {
- URL assignSample = this.getClass().getClassLoader().
- getResource("org/apache/commons/scxml/model/assign-test.xml");
- exec = SCXMLTestHelper.getExecutor(assignSample);
+ assign01 = this.getClass().getClassLoader().
+ getResource("org/apache/commons/scxml/model/assign-test-01.xml");
+ assign02 = this.getClass().getClassLoader().
+ getResource("org/apache/commons/scxml/model/assign-test-02.xml");
}
/**
* Tear down instance variables required by this test case.
*/
public void tearDown() {
+ assign01 = assign02 = null;
exec = null;
}
@@ -67,6 +70,7 @@
* Test the implementation
*/
public void testAssignSrc() {
+ exec = SCXMLTestHelper.getExecutor(assign01);
Set currentStates = exec.getCurrentStatus().getStates();
assertEquals(1, currentStates.size());
assertEquals("assign3", ((State)currentStates.iterator().
@@ -74,7 +78,16 @@
assertTrue(exec.getCurrentStatus().isFinal());
}
- public static void main(String args[]) {
+ public void testAssignDeep() {
+ exec = SCXMLTestHelper.getExecutor(assign02);
+ Set currentStates = exec.getCurrentStatus().getStates();
+ assertEquals(1, currentStates.size());
+ assertEquals("assign3", ((State)currentStates.iterator().
+ next()).getId());
+ assertTrue(exec.getCurrentStatus().isFinal());
+ }
+
+ public static void main(String args[]) {
TestRunner.run(suite());
}
}
Propchange: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/assign-test-01.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/assign-test-01.xml
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/assign-test-01.xml
------------------------------------------------------------------------------
svn:mergeinfo =
Added: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/assign-test-02.xml
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/assign-test-02.xml?rev=714191&view=auto
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/assign-test-02.xml (added)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/assign-test-02.xml Fri Nov 14 15:43:16 2008
@@ -0,0 +1,46 @@
+<?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.
+-->
+<!-- Regress JIRA 89, incomplete child removal -->
+<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:rad="http://foo/bar" version="1.0" initialstate="assign1">
+ <datamodel>
+ <data name="source">
+ <rad:foo>
+ <rad:a>1</rad:a>
+ <rad:b>2</rad:b>
+ </rad:foo>
+ </data>
+ <data name="destination">
+ <rad:bar>
+ <rad:a>3</rad:a>
+ <rad:b>4</rad:b>
+ </rad:bar>
+ </data>
+ </datamodel>
+ <!-- verify the destination contents -->
+ <state id="assign1" final="true">
+ <transition cond="Data(destination,'rad:bar/rad:a') eq 3 and Data(destination,'rad:bar/rad:b') eq 4" target="assign2" />
+ </state>
+ <!-- copy the new contents and verify -->
+ <state id="assign2">
+ <onentry>
+ <assign location="Data(destination,'rad:bar')" expr="Data(source,'rad:foo')" />
+ </onentry>
+ <transition cond="Data(destination,'rad:bar/rad:a') eq 1 and Data(destination,'rad:bar/rad:b') eq 2" target="assign3" />
+ </state>
+ <state id="assign3" final="true" />
+</scxml>
Propchange: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/assign-test-02.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/assign-test-02.xml
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL