#include "logging.h"
#include "util/CurlURLInputStream.h"
#include "util/NDC.h"
+#include "util/PathResolver.h"
#include "util/ParserPool.h"
#include "util/Threads.h"
#include "util/XMLHelper.h"
#include <functional>
#include <boost/algorithm/string.hpp>
#include <boost/bind.hpp>
-#include <boost/tokenizer.hpp>
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/util/XMLUniDefs.hpp>
#include <xercesc/sax/SAXException.hpp>
return false;
}
- Lock lock(m_lock.get());
+ Lock lock(m_lock);
m_schemaLocMap[nsURI]=pathname;
m_schemaLocations.erase();
for_each(m_schemaLocMap.begin(), m_schemaLocMap.end(), doubleit<xstring>(m_schemaLocations,chSpace));
bool ParserPool::loadCatalogs(const char* pathnames)
{
- boost::tokenizer< char_separator<char> > catpaths(string(pathnames), char_separator<char>(PATH_SEPARATOR_STR));
- for_each(
- catpaths.begin(), catpaths.end(),
- // Call loadCatalog with an inner call to s->c_str() on each entry.
- boost::bind(static_cast<bool (ParserPool::*)(const char*)>(&ParserPool::loadCatalog),
- boost::ref(this), boost::bind(&string::c_str, _1))
- );
- return catpaths.begin() != catpaths.end();
+ string temp(pathnames);
+ vector<string> catpaths;
+ split(catpaths, temp, is_any_of(PATH_SEPARATOR_STR), algorithm::token_compress_on);
+ for (vector<string>::iterator i = catpaths.begin(); i != catpaths.end(); ++i) {
+ XMLToolingConfig::getConfig().getPathResolver()->resolve(*i, PathResolver::XMLTOOLING_XML_FILE);
+ loadCatalog(i->c_str());
+ }
+ return !catpaths.empty();
}
bool ParserPool::loadCatalog(const char* pathname)
// Fetch all the <system> elements.
DOMNodeList* mappings=root->getElementsByTagNameNS(CATALOG_NS,system);
- Lock lock(m_lock.get());
+ Lock lock(m_lock);
for (XMLSize_t i=0; i<mappings->getLength(); i++) {
root=static_cast<DOMElement*>(mappings->item(i));
const XMLCh* from=root->getAttributeNS(nullptr,systemId);
DOMLSParser* ParserPool::checkoutBuilder()
{
- Lock lock(m_lock.get());
+ Lock lock(m_lock);
if (m_pool.empty()) {
DOMLSParser* builder=createBuilder();
return builder;
void ParserPool::checkinBuilder(DOMLSParser* builder)
{
if (builder) {
- Lock lock(m_lock.get());
+ Lock lock(m_lock);
m_pool.push(builder);
}
}
DOMBuilder* ParserPool::checkoutBuilder()
{
- Lock lock(m_lock.get());
+ Lock lock(m_lock);
if (m_pool.empty()) {
DOMBuilder* builder=createBuilder();
return builder;
void ParserPool::checkinBuilder(DOMBuilder* builder)
{
if (builder) {
- Lock lock(m_lock.get());
+ Lock lock(m_lock);
m_pool.push(builder);
}
}