diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2014-11-13 23:56:53 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2014-11-13 23:56:53 (GMT) |
commit | 7a1dc775d5d8edcf9193ca4ad7154af5eab18f1c (patch) | |
tree | b681e35b778f5c17d768b0713d8141a17a1dedb9 /embedding | |
parent | 2bc6ae32bbb67d242436d173c41fabc47626b943 (diff) | |
download | uscxml-7a1dc775d5d8edcf9193ca4ad7154af5eab18f1c.zip uscxml-7a1dc775d5d8edcf9193ca4ad7154af5eab18f1c.tar.gz uscxml-7a1dc775d5d8edcf9193ca4ad7154af5eab18f1c.tar.bz2 |
Support for DataModelExtensions
Diffstat (limited to 'embedding')
-rw-r--r-- | embedding/java/src/org/uscxml/tests/datamodel/TestPlatformExtensions.java | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/embedding/java/src/org/uscxml/tests/datamodel/TestPlatformExtensions.java b/embedding/java/src/org/uscxml/tests/datamodel/TestPlatformExtensions.java new file mode 100644 index 0000000..86ba884 --- /dev/null +++ b/embedding/java/src/org/uscxml/tests/datamodel/TestPlatformExtensions.java @@ -0,0 +1,59 @@ +package org.uscxml.tests.datamodel; + +import org.uscxml.Data; +import org.uscxml.DataModelExtension; +import org.uscxml.Interpreter; +import org.uscxml.InterpreterException; +import org.uscxml.InterpreterState; + +public class TestPlatformExtensions extends DataModelExtension { + + /* Currently only with ECMAScript via JavaScriptCore! */ + + @Override + public String provides() { + return "_x.platform.pool"; + } + + @Override + public Data getValueOf(String member) { + return new Data(true); + } + + @Override + public void setValueOf(String member, Data data) { + System.out.println("Setting " + member + " to \n" + data); + } + + public static void main(String[] args) throws InterpreterException { + // load JNI library from build directory + System.load("/Users/sradomski/Documents/TK/Code/uscxml/build/cli/lib/libuscxmlNativeJava64.jnilib"); + + TestPlatformExtensions ext = new TestPlatformExtensions(); + + String xml = + "<scxml datamodel=\"ecmascript\">" + + " <script src=\"http://uscxml.tk.informatik.tu-darmstadt.de/scripts/dump.js\" />" + + " <state id=\"s1\">" + + " <onentry>" + + " <script>_x.platform.pool('member.second', { foo: 12, bar: 34})</script>" + + " <log label=\"ext\" expr=\"dump(_x.platform.pool('member.first'))\" />" + + " </onentry>" + + " <transition target=\"done\" />" + + " </state>" + + " <final id=\"done\" />" + + "</scxml>"; + + Interpreter interpreter = Interpreter.fromXML(xml); + interpreter.addDataModelExtension(ext); + + InterpreterState state; + + do { + state = interpreter.step(); + } while (state != InterpreterState.USCXML_FINISHED && + state != InterpreterState.USCXML_DESTROYED); + + } + +} |