aboutsummaryrefslogtreecommitdiff
path: root/src/function/external_text_formatter.cc
diff options
context:
space:
mode:
authorAdrian Kummerländer2014-05-31 14:18:48 +0200
committerAdrian Kummerländer2014-05-31 14:18:48 +0200
commit1a744712426c9c19019b8ebebdd0c703aae204a6 (patch)
treefd82b4e5b0e53b39dd0d9df5e5dda6aa0f050eb0 /src/function/external_text_formatter.cc
parentd5367d268e8f2be9dd519b3b90f7baa64d6d50b7 (diff)
downloadInputXSLT-1a744712426c9c19019b8ebebdd0c703aae204a6.tar
InputXSLT-1a744712426c9c19019b8ebebdd0c703aae204a6.tar.gz
InputXSLT-1a744712426c9c19019b8ebebdd0c703aae204a6.tar.bz2
InputXSLT-1a744712426c9c19019b8ebebdd0c703aae204a6.tar.lz
InputXSLT-1a744712426c9c19019b8ebebdd0c703aae204a6.tar.xz
InputXSLT-1a744712426c9c19019b8ebebdd0c703aae204a6.tar.zst
InputXSLT-1a744712426c9c19019b8ebebdd0c703aae204a6.zip
Revamped external function result trees
* the root node of the result tree of each function is a domain element ** i.e. the root node of "read-xml-file" is "file", the root node of "read-directory" is "directory" * the root node contains the result state of the function call encoded in a "result" attribute ** possible values are "success" and "error" ** the root node may contain additional attributes such as the target path of a called transformation * the actual function result is contained within the child nodes of the function root node ** i.e. the XML file tree returned by "read-xml-file" is a child of the function root node ** if specific errors occured they are also returned as child nodes of the function root node *** this is currently only the case for "transform" where transformation errors are returned as "error" value node childs of the function root node * updated test cases accordingly
Diffstat (limited to 'src/function/external_text_formatter.cc')
-rw-r--r--src/function/external_text_formatter.cc17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/function/external_text_formatter.cc b/src/function/external_text_formatter.cc
index d1b9e92..22f53c5 100644
--- a/src/function/external_text_formatter.cc
+++ b/src/function/external_text_formatter.cc
@@ -86,17 +86,20 @@ xercesc::DOMDocument* FunctionExternalTextFormatter::constructDocument(
boost::process::status status = formatterProcess.wait();
- if ( status.exited() ) {
- ResultNodeFacade result(domDocument, rootNode, "result");
+ ResultNodeFacade result(domDocument, rootNode, "output");
+ result.setAttribute("formatter", formatterPath);
+ result.setAttribute("code", std::to_string(status.exit_status()));
- result.setValueNode("code", std::to_string(status.exit_status()));
- result.setContent(importDocumentElement(outputStream, domDocument));
+ if ( status.exited() ) {
+ result.setAttribute("result", "success");
+ result.setContent(
+ importDocumentElement(outputStream, domDocument)->getChildNodes()
+ );
} else {
- ResultNodeFacade result(domDocument, rootNode, "error");
-
- result.setValueNode("code", std::to_string(status.exit_status()));
+ result.setAttribute("result", "error");
}
+
return domDocument;
}