diff options
author | Adrian Kummerländer | 2014-06-05 20:44:26 +0200 |
---|---|---|
committer | Adrian Kummerländer | 2014-06-05 20:44:26 +0200 |
commit | 78bb3387b15d15d766fb5d17a99612f0480f2bee (patch) | |
tree | c87a2516f56d7f6317a704b91b340bc14cabfd28 /src/transformation_facade.cc | |
parent | 11355181c0b5f8377774daefcc17bb5e6bc20f61 (diff) | |
download | InputXSLT-78bb3387b15d15d766fb5d17a99612f0480f2bee.tar InputXSLT-78bb3387b15d15d766fb5d17a99612f0480f2bee.tar.gz InputXSLT-78bb3387b15d15d766fb5d17a99612f0480f2bee.tar.bz2 InputXSLT-78bb3387b15d15d766fb5d17a99612f0480f2bee.tar.lz InputXSLT-78bb3387b15d15d766fb5d17a99612f0480f2bee.tar.xz InputXSLT-78bb3387b15d15d766fb5d17a99612f0480f2bee.tar.zst InputXSLT-78bb3387b15d15d766fb5d17a99612f0480f2bee.zip |
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
Diffstat (limited to 'src/transformation_facade.cc')
-rw-r--r-- | src/transformation_facade.cc | 9 |
1 files changed, 6 insertions, 3 deletions
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 <sstream> +#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("<dummy/>"); xalan::XSLTInputSource inputSource(emptyStream); |