From 78bb3387b15d15d766fb5d17a99612f0480f2bee Mon Sep 17 00:00:00 2001 From: Adrian Kummerländer Date: Thu, 5 Jun 2014 20:44:26 +0200 Subject: Implemented ErrorMultiplexer as primary error handler * ErrorMultiplexer is derived from both xercesc::ErrorHandler and xalan::ProblemListener * registers itself as XalanTransformer's ErrorHandler and ProblemListener * distributes captured errors and warnings to all registered ErrorMultiplexer::Receiver instances ** ErrorCapacitor implements the ErrorMultiplexer::Receiver interface and as such registers itself in a given ErrorMultiplexer instance ** ErrorMultiplexer reduces the different xalan and xercesc internal error classifications into either warnings or errors * this was implemented to make it possible to easily differentiate between warnings and errors ** previously warnings were treated as errors ** ErrorCapacitor ignores warnings and only captures errors ** WarningCapacitor will be implemented to handle warnings during XSLT processing --- src/transformation_facade.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/transformation_facade.cc') diff --git a/src/transformation_facade.cc b/src/transformation_facade.cc index f415cd8..6d7b7a3 100644 --- a/src/transformation_facade.cc +++ b/src/transformation_facade.cc @@ -7,6 +7,8 @@ #include +#include "support/error/error_capacitor.h" + namespace InputXSLT { TransformationFacade::TransformationFacade( @@ -14,10 +16,11 @@ TransformationFacade::TransformationFacade( IncludeEntityResolver* resolver ): transformation_{}, - transformer_() { + transformer_(), + error_multiplexer_(&transformer_) { this->transformer_.setEntityResolver(resolver); - ErrorCapacitor errorCapacitor(&this->transformer_); + ErrorCapacitor errorCapacitor(&this->error_multiplexer_); this->transformer_.compileStylesheet( xalan::XSLTInputSource(transformation.data()), @@ -68,7 +71,7 @@ void TransformationFacade::generate( xalan::XSLTResultTarget&& outputTarget, StylesheetParameterGuard& ) { - ErrorCapacitor errorCapacitor(&this->transformer_); + ErrorCapacitor errorCapacitor(&this->error_multiplexer_); std::stringstream emptyStream(""); xalan::XSLTInputSource inputSource(emptyStream); -- cgit v1.2.3