aboutsummaryrefslogtreecommitdiff
path: root/src/support/error_handler.cc
diff options
context:
space:
mode:
authorAdrian Kummerländer2014-05-30 22:19:32 +0200
committerAdrian Kummerländer2014-05-30 22:19:32 +0200
commit79d3e2bdfd441d6eba2f22af78d5bea5e488daf1 (patch)
treeb28b0603958140777ee46d98f2fc4359c9f72c4d /src/support/error_handler.cc
parent484143667bd6885236b679a8f54dad3c512ea2dd (diff)
downloadInputXSLT-79d3e2bdfd441d6eba2f22af78d5bea5e488daf1.tar
InputXSLT-79d3e2bdfd441d6eba2f22af78d5bea5e488daf1.tar.gz
InputXSLT-79d3e2bdfd441d6eba2f22af78d5bea5e488daf1.tar.bz2
InputXSLT-79d3e2bdfd441d6eba2f22af78d5bea5e488daf1.tar.lz
InputXSLT-79d3e2bdfd441d6eba2f22af78d5bea5e488daf1.tar.xz
InputXSLT-79d3e2bdfd441d6eba2f22af78d5bea5e488daf1.tar.zst
InputXSLT-79d3e2bdfd441d6eba2f22af78d5bea5e488daf1.zip
Rewrote error handling based on exceptions
* ErrorHandler is replaced by ErrorCapacitor ** temporarily registers itself as both the ProblemListener and ErrorHandler of a given XalanTransformer instance ** deregisters itself on destruction ** collects all problems and errors during its lifetime inside a internal std::vector<std::string> instance ** if this instance is not empty it is thrown contained within a ErrorCapacitor::exception by the member method ErrorCapacitor::discharge * this enables using the same code for handling transformation compilation and generation errors and problems * updated test frontend accordingly
Diffstat (limited to 'src/support/error_handler.cc')
-rw-r--r--src/support/error_handler.cc107
1 files changed, 0 insertions, 107 deletions
diff --git a/src/support/error_handler.cc b/src/support/error_handler.cc
deleted file mode 100644
index 2ca721d..0000000
--- a/src/support/error_handler.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-#include "error_handler.h"
-
-#include <xercesc/sax/SAXParseException.hpp>
-
-#include <iostream>
-
-#include "support/xalan_string.h"
-#include "support/xerces_string_guard.h"
-
-namespace {
-
-inline std::string getMessage(const xercesc::SAXParseException& exception) {
- return std::string(
- *InputXSLT::XercesStringGuard<char>(exception.getMessage())
- );
-}
-
-}
-
-namespace InputXSLT {
-
-ErrorHandler::ErrorHandler():
- error_cache_{} { }
-
-void ErrorHandler::warning(const xercesc::SAXParseException& exception) {
- this->constructErrorCache();
-
- this->error_cache_->emplace_back(
- "Warning: " + getMessage(exception)
- );
-}
-
-void ErrorHandler::error(const xercesc::SAXParseException& exception) {
- this->constructErrorCache();
-
- this->error_cache_->emplace_back(
- "Error: " + getMessage(exception)
- );
-}
-
-void ErrorHandler::fatalError(const xercesc::SAXParseException& exception) {
- this->constructErrorCache();
-
- this->error_cache_->emplace_back(
- "Fatal error: " + getMessage(exception)
- );
-}
-
-void ErrorHandler::resetErrors() { }
-
-void ErrorHandler::problem(
- xalan::ProblemListenerBase::eSource,
- xalan::ProblemListenerBase::eClassification,
- const xalan::XalanDOMString& message,
- const xalan::Locator*,
- const xalan::XalanNode*
-) {
- this->constructErrorCache();
-
- this->error_cache_->emplace_back(
- "XSLT problem: " + toString(message)
- );
-}
-
-void ErrorHandler::problem(
- xalan::ProblemListenerBase::eSource,
- xalan::ProblemListenerBase::eClassification,
- const xalan::XalanNode*,
- const xalan::ElemTemplateElement*,
- const xalan::XalanDOMString& message,
- const xalan::XalanDOMChar*,
- xalan::XalanFileLoc,
- xalan::XalanFileLoc
-) {
- this->constructErrorCache();
-
- this->error_cache_->emplace_back(
- "XSLT problem: " + toString(message)
- );
-}
-
-void ErrorHandler::problem(
- xalan::ProblemListenerBase::eSource,
- xalan::ProblemListenerBase::eClassification,
- const xalan::XalanDOMString& message,
- const xalan::XalanNode*
-) {
- this->constructErrorCache();
-
- this->error_cache_->emplace_back(
- "XSLT problem: " + toString(message)
- );
-}
-
-void ErrorHandler::setPrintWriter(xalan::PrintWriter*) { }
-
-auto ErrorHandler::getCachedErrors() -> error_cache_ptr {
- return error_cache_ptr(this->error_cache_.release());
-}
-
-void ErrorHandler::constructErrorCache() {
- if ( !this->error_cache_ ) {
- this->error_cache_.reset(new error_cache());
- }
-}
-
-}