summaryrefslogtreecommitdiffstats
path: root/embedding
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-11-13 23:56:53 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-11-13 23:56:53 (GMT)
commit7a1dc775d5d8edcf9193ca4ad7154af5eab18f1c (patch)
treeb681e35b778f5c17d768b0713d8141a17a1dedb9 /embedding
parent2bc6ae32bbb67d242436d173c41fabc47626b943 (diff)
downloaduscxml-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.java59
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);
+
+ }
+
+}