diff options
author | Adrian Kummerländer | 2014-05-30 22:19:32 +0200 |
---|---|---|
committer | Adrian Kummerländer | 2014-05-30 22:19:32 +0200 |
commit | 79d3e2bdfd441d6eba2f22af78d5bea5e488daf1 (patch) | |
tree | b28b0603958140777ee46d98f2fc4359c9f72c4d /test.cc | |
parent | 484143667bd6885236b679a8f54dad3c512ea2dd (diff) | |
download | InputXSLT-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 'test.cc')
-rw-r--r-- | test.cc | 33 |
1 files changed, 18 insertions, 15 deletions
@@ -43,25 +43,28 @@ int main(int ac, char** av) { InputXSLT::PlattformGuard plattform(includePath); - InputXSLT::TransformationFacade transformation( - variables["transformation"].as<std::string>(), - plattform.getEntityResolver() - ); - - InputXSLT::TransformationFacade::return_type errors{}; - - if ( variables.count("target") ) { - errors = transformation.generate( - variables["target"].as<std::string>() + try { + InputXSLT::TransformationFacade transformation( + variables["transformation"].as<std::string>(), + plattform.getEntityResolver() ); - } else { - errors = transformation.generate(std::cout); - } - if ( errors ) { - for ( auto&& error : *errors ) { + if ( variables.count("target") ) { + transformation.generate( + variables["target"].as<std::string>() + ); + } else { + transformation.generate(std::cout); + } + + return 0; + } + catch (const InputXSLT::ErrorCapacitor::exception& exception) { + for ( auto&& error : *(exception.getCachedErrors()) ) { std::cerr << error << std::endl; } + + return 1; } } else { std::cout << optionDescription << std::endl; |