summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp')
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp17
1 files changed, 17 insertions, 0 deletions
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) {