diff options
Diffstat (limited to 'src/uscxml/Interpreter.cpp')
-rw-r--r-- | src/uscxml/Interpreter.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/uscxml/Interpreter.cpp b/src/uscxml/Interpreter.cpp index 77c6805..b6266e2 100644 --- a/src/uscxml/Interpreter.cpp +++ b/src/uscxml/Interpreter.cpp @@ -709,6 +709,13 @@ void InterpreterImpl::send(const Arabica::DOM::Node<std::string>& element) { return; } + if (sendReq.dom) { + std::stringstream ss; + ss << sendReq.dom; + sendReq.xml = ss.str(); + _dataModel.replaceExpressions(sendReq.xml); + } + assert(_sendIds.find(sendReq.sendid) == _sendIds.end()); _sendIds[sendReq.sendid] = std::make_pair(this, sendReq); if (sendReq.delayMs > 0) { @@ -839,6 +846,13 @@ void InterpreterImpl::invoke(const Arabica::DOM::Node<std::string>& element) { return; } + if (invokeReq.dom) { + std::stringstream ss; + ss << invokeReq.dom; + invokeReq.xml = ss.str(); + _dataModel.replaceExpressions(invokeReq.xml); + } + // test 422 if (invokeReq.type.size() == 0) invokeReq.type = "http://www.w3.org/TR/scxml/"; @@ -1330,11 +1344,11 @@ Arabica::XPath::NodeSet<std::string> InterpreterImpl::getStates(const std::vecto Arabica::DOM::Node<std::string> InterpreterImpl::getState(const std::string& stateId) { - if (_cachedStates.find(stateId) != _cachedStates.end() && false) { + if (_cachedStates.find(stateId) != _cachedStates.end()) { return _cachedStates[stateId]; } - // first try atomic and compund states + // first try atomic and compound states NodeSet<std::string> target = _xpath.evaluate("//" + _xpathPrefix + "state[@id='" + stateId + "']", _scxml).asNodeSet(); if (target.size() > 0) goto FOUND; |