diff options
Diffstat (limited to 'src/function/read_directory.cc')
-rw-r--r-- | src/function/read_directory.cc | 62 |
1 files changed, 2 insertions, 60 deletions
diff --git a/src/function/read_directory.cc b/src/function/read_directory.cc index 48ffa51..8b41dae 100644 --- a/src/function/read_directory.cc +++ b/src/function/read_directory.cc @@ -6,13 +6,10 @@ #include <xercesc/dom/DOMText.hpp> #include "support/xerces_string_guard.h" -#include "support/filesystem_context.h" -namespace { - -using InputXSLT::XercesStringGuard; +namespace InputXSLT { -xercesc::DOMDocument* constructDocument( +xercesc::DOMDocument* FunctionReadDirectory::constructDocument( const InputXSLT::FilesystemContext& fsContext, const boost::filesystem::path& directoryPath ) { @@ -84,58 +81,3 @@ xercesc::DOMDocument* constructDocument( } } - -namespace InputXSLT { - -FunctionReadDirectory::FunctionReadDirectory(): - document_cache_(std::make_shared<DomDocumentCache>()) { } - -xalan::XObjectPtr FunctionReadDirectory::execute( - xalan::XPathExecutionContext& executionContext, - xalan::XalanNode*, - const xalan::XObjectPtr argument, - const xalan::Locator* locator -) const { - const FilesystemContext fsContext(locator); - - const boost::filesystem::path directoryPath( - fsContext.resolve(argument->str()) - ); - - DomDocumentCache::optional_item optionalCachedDocument( - this->document_cache_->get(directoryPath.string()) - ); - - if ( !optionalCachedDocument.first ) { - optionalCachedDocument = this->document_cache_->create( - directoryPath.string(), - constructDocument(fsContext, directoryPath) - ); - } - - xalan::XPathExecutionContext::BorrowReturnMutableNodeRefList nodeList( - executionContext - ); - - nodeList->addNodes( - *optionalCachedDocument.second->getXalanDocument() - ->getDocumentElement() - ->getChildNodes() - ); - - return executionContext.getXObjectFactory().createNodeSet(nodeList); -} - -FunctionReadDirectory* FunctionReadDirectory::clone( - xalan::MemoryManager& manager) const { - return xalan::XalanCopyConstruct(manager, *this); -} - -const xalan::XalanDOMString& FunctionReadDirectory::getError( - xalan::XalanDOMString& result) const { - result.assign("The read-directory() function expects one argument of type string."); - - return result; -} - -} |