summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/datamodel
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/plugins/datamodel')
-rw-r--r--src/uscxml/plugins/datamodel/CMakeLists.txt15
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp8
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp17
3 files changed, 27 insertions, 13 deletions
diff --git a/src/uscxml/plugins/datamodel/CMakeLists.txt b/src/uscxml/plugins/datamodel/CMakeLists.txt
index f04cb78..1b2a047 100644
--- a/src/uscxml/plugins/datamodel/CMakeLists.txt
+++ b/src/uscxml/plugins/datamodel/CMakeLists.txt
@@ -69,25 +69,14 @@ if (BUILD_DM_ECMA)
endif()
-# NULL datamodel
+# NULL datamodel (not useful as plugin)
set(USCXML_DATAMODELS "null ${USCXML_DATAMODELS}")
file(GLOB NULL_DATAMODEL
null/*.cpp
null/*.h
)
-if (BUILD_AS_PLUGINS)
- source_group("" FILES ${NULL_DATAMODEL})
- add_library(datamodel_null SHARED ${NULL_DATAMODEL} "../Plugins.cpp")
- target_link_libraries(datamodel_null uscxml)
- set_target_properties(datamodel_null PROPERTIES FOLDER "Plugin DataModel")
- set_target_properties(datamodel_null PROPERTIES COMPILE_FLAGS "-DPLUMA_EXPORTS")
- set_target_properties(datamodel_null PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${OUTPUT_DIR}/lib")
-
-
-else()
- list (APPEND USCXML_FILES ${NULL_DATAMODEL})
-endif()
+list (APPEND USCXML_FILES ${NULL_DATAMODEL})
# XPath datamodel
diff --git a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
index a6909b5..72252e4 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
@@ -212,6 +212,12 @@ void JSCDataModel::setEvent(const Event& event) {
JSValueRef exception = NULL;
+ if (event.raw.size() == 0) {
+ std::stringstream ssRaw;
+ ssRaw << event;
+ privData->nativeObj->raw = ssRaw.str();
+ }
+
if (event.dom) {
JSStringRef propName = JSStringCreateWithUTF8CString("data");
JSObjectSetProperty(_ctx, eventObj, propName, getNodeAsValue(event.dom), 0, &exception);
@@ -555,6 +561,8 @@ void JSCDataModel::assign(const Element<std::string>& assignElem,
throw Event("error.execution", Event::PLATFORM);
if (key.compare("_invokers") == 0)
throw Event("error.execution", Event::PLATFORM);
+ if (key.compare("_event") == 0)
+ throw Event("error.execution", Event::PLATFORM);
if (HAS_ATTR(assignElem, "expr")) {
evalAsValue(key + " = " + ATTR(assignElem, "expr"));
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
index 2bdd796..8b222f7 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
@@ -228,6 +228,12 @@ void V8DataModel::setEvent(const Event& event) {
eventObj->SetInternalField(0, V8DOM::toExternal(privData));
eventObj.MakeWeak(0, V8SCXMLEvent::jsDestructor);
+ if (event.raw.size() == 0) {
+ std::stringstream ssRaw;
+ ssRaw << event;
+ privData->nativeObj->raw = ssRaw.str();
+ }
+
if (event.dom) {
eventObj->Set(v8::String::New("data"), getNodeAsValue(event.dom));
} else if (event.content.length() > 0) {
@@ -595,6 +601,17 @@ void V8DataModel::assign(const Element<std::string>& assignElem,
if (key.length() == 0)
throw Event("error.execution", Event::PLATFORM);
+ if (key.compare("_sessionid") == 0) // test 322
+ throw Event("error.execution", Event::PLATFORM);
+ if (key.compare("_name") == 0)
+ throw Event("error.execution", Event::PLATFORM);
+ if (key.compare("_ioprocessors") == 0) // test 326
+ throw Event("error.execution", Event::PLATFORM);
+ if (key.compare("_invokers") == 0)
+ throw Event("error.execution", Event::PLATFORM);
+ if (key.compare("_event") == 0)
+ throw Event("error.execution", Event::PLATFORM);
+
if (HAS_ATTR(assignElem, "expr")) {
evalAsValue(key + " = " + ATTR(assignElem, "expr"));
} else if (node) {