aboutsummaryrefslogtreecommitdiff
path: root/src/transformation_facade.cc
diff options
context:
space:
mode:
authorAdrian Kummerländer2014-06-05 20:44:26 +0200
committerAdrian Kummerländer2014-06-05 20:44:26 +0200
commit78bb3387b15d15d766fb5d17a99612f0480f2bee (patch)
treec87a2516f56d7f6317a704b91b340bc14cabfd28 /src/transformation_facade.cc
parent11355181c0b5f8377774daefcc17bb5e6bc20f61 (diff)
downloadInputXSLT-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.cc9
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);