/*
- * Copyright 2001-2009 Internet2
+ * Copyright 2001-2010 Internet2
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
using namespace xercesc;
using namespace std;
-AbstractDOMCachingXMLObject::AbstractDOMCachingXMLObject() : m_dom(NULL), m_document(NULL)
+AbstractDOMCachingXMLObject::AbstractDOMCachingXMLObject() : m_dom(nullptr), m_document(nullptr)
{
}
AbstractDOMCachingXMLObject::AbstractDOMCachingXMLObject(const AbstractDOMCachingXMLObject& src)
- : AbstractXMLObject(src), m_dom(NULL), m_document(NULL)
+ : AbstractXMLObject(src), m_dom(nullptr), m_document(nullptr)
{
}
string qname=getElementQName().toString();
m_log.debug("releasing cached DOM representation for (%s)", qname.empty() ? "unknown" : qname.c_str());
}
- setDOM(NULL);
+ setDOM(nullptr);
}
}
DOMElement* AbstractDOMCachingXMLObject::cloneDOM(DOMDocument* doc) const
{
if (getDOM()) {
- if (!doc)
- doc=DOMImplementationRegistry::getDOMImplementation(NULL)->createDocument();
- return static_cast<DOMElement*>(doc->importNode(getDOM(),true));
+ DOMDocument* cloneDoc = doc;
+ if (!cloneDoc)
+ cloneDoc=DOMImplementationRegistry::getDOMImplementation(nullptr)->createDocument();
+ try {
+ return static_cast<DOMElement*>(cloneDoc->importNode(getDOM(),true));
+ }
+ catch (XMLException& ex) {
+ if (!doc)
+ cloneDoc->release();
+ auto_ptr_char temp(ex.getMessage());
+ m_log.error("DOM clone failed: %s", temp.get());
+ }
}
- return NULL;
+ return nullptr;
}
XMLObject* AbstractDOMCachingXMLObject::clone() const
janitor.release(); // safely transferred
return ret;
}
- return NULL;
+ return nullptr;
}
void AbstractDOMCachingXMLObject::detach()
if (parent && parent->m_document) {
// Transfer control of document to me...
setDocument(parent->m_document);
- parent->m_document = NULL;
+ parent->m_document = nullptr;
}
// The rest is done by the base.
AbstractXMLObject::detach();