diff options
author | Adrian Kummerländer | 2014-04-28 20:03:06 +0200 |
---|---|---|
committer | Adrian Kummerländer | 2014-04-28 20:03:06 +0200 |
commit | 22cbef9c75aeb58d6c88c9b736526cb9d52a52a2 (patch) | |
tree | bc0ac83d1ec0186b43aef7d574dba044e9ff7e9c /src | |
parent | 947a8389728ff7d052fa820f598da3c17802f3d1 (diff) | |
download | InputXSLT-22cbef9c75aeb58d6c88c9b736526cb9d52a52a2.tar InputXSLT-22cbef9c75aeb58d6c88c9b736526cb9d52a52a2.tar.gz InputXSLT-22cbef9c75aeb58d6c88c9b736526cb9d52a52a2.tar.bz2 InputXSLT-22cbef9c75aeb58d6c88c9b736526cb9d52a52a2.tar.lz InputXSLT-22cbef9c75aeb58d6c88c9b736526cb9d52a52a2.tar.xz InputXSLT-22cbef9c75aeb58d6c88c9b736526cb9d52a52a2.tar.zst InputXSLT-22cbef9c75aeb58d6c88c9b736526cb9d52a52a2.zip |
Adapted read-directory tree construction to match the other functions
* throwing std::out_of_range exception from DomDocumentCache::get instead of returning nullptr in case of a problem
* moved xalanToString method back into FilesystemContext compilation unit as is only needed there
Diffstat (limited to 'src')
-rw-r--r-- | src/function/read_directory.cc | 11 | ||||
-rw-r--r-- | src/support/dom/document_cache.cc | 4 | ||||
-rw-r--r-- | src/support/filesystem_context.cc | 14 | ||||
-rw-r--r-- | src/support/utility.h | 18 |
4 files changed, 22 insertions, 25 deletions
diff --git a/src/function/read_directory.cc b/src/function/read_directory.cc index 6fcb447..b0ae13f 100644 --- a/src/function/read_directory.cc +++ b/src/function/read_directory.cc @@ -5,7 +5,6 @@ #include <xercesc/dom/DOMElement.hpp> #include <xercesc/dom/DOMText.hpp> -#include "support/utility.h" #include "support/xerces_string_guard.h" namespace InputXSLT { @@ -20,8 +19,12 @@ xalan::XObjectPtr FunctionReadDirectory::execute( const xalan::XObjectPtr argument, const xalan::Locator* ) const { + const boost::filesystem::path directoryPath( + this->fs_context_.resolve(argument->str()) + ); + DomDocumentCache::item* const cachedDocument( - this->document_cache_->get(xalanToString(argument->str())) + this->document_cache_->get(directoryPath.string()) ); if ( !cachedDocument->isFinalized() ) { @@ -33,9 +36,7 @@ xalan::XObjectPtr FunctionReadDirectory::execute( domDocument->getDocumentElement() ); - if (boost::filesystem::is_directory( - this->fs_context_.resolve(argument->str()) - )) { + if ( boost::filesystem::is_directory(directoryPath) ) { xercesc::DOMElement* const contentNode( domDocument->createElement(*XercesStringGuard("content")) ); diff --git a/src/support/dom/document_cache.cc b/src/support/dom/document_cache.cc index f814559..1573af8 100644 --- a/src/support/dom/document_cache.cc +++ b/src/support/dom/document_cache.cc @@ -1,5 +1,7 @@ #include "document_cache.h" +#include <stdexcept> + namespace InputXSLT { DomDocumentCache::DomDocumentCache(): @@ -16,7 +18,7 @@ DomDocumentCache::item* DomDocumentCache::get(const std::string& key) { if ( result.second ) { return (*(result.first)).second.get(); } else { - return nullptr; + throw std::out_of_range("failed to instantiate DomDocumentCache"); } } else { return (*itemIter).second.get(); diff --git a/src/support/filesystem_context.cc b/src/support/filesystem_context.cc index 34b8950..6ad682f 100644 --- a/src/support/filesystem_context.cc +++ b/src/support/filesystem_context.cc @@ -1,6 +1,18 @@ #include "filesystem_context.h" -#include "support/utility.h" +namespace { + +inline std::string xalanToString(const xalan::XalanDOMString& text) { + xalan::CharVectorType castHelper; + text.transcode(castHelper); + + return std::string( + castHelper.begin(), + castHelper.end() - 1 + ); +} + +} namespace InputXSLT { diff --git a/src/support/utility.h b/src/support/utility.h deleted file mode 100644 index 4c63c72..0000000 --- a/src/support/utility.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef INPUTXSLT_SRC_SUPPORT_UTILITY_H_ -#define INPUTXSLT_SRC_SUPPORT_UTILITY_H_ - -namespace { - -inline std::string xalanToString(const xalan::XalanDOMString& text) { - xalan::CharVectorType castHelper; - text.transcode(castHelper); - - return std::string( - castHelper.begin(), - castHelper.end() - 1 - ); -} - -} - -#endif // INPUTXSLT_SRC_SUPPORT_UTILITY_H_ |