From 79d3e2bdfd441d6eba2f22af78d5bea5e488daf1 Mon Sep 17 00:00:00 2001 From: Adrian Kummerländer Date: Fri, 30 May 2014 22:19:32 +0200 Subject: 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 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 --- src/support/error_handler.cc | 107 ------------------------------------------- 1 file changed, 107 deletions(-) delete mode 100644 src/support/error_handler.cc (limited to 'src/support/error_handler.cc') 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 - -#include - -#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(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()); - } -} - -} -- cgit v1.2.3