m_document->release();\r
}\r
\r
+void AbstractDOMCachingXMLObject::setDOM(DOMElement* dom, bool bindDocument)\r
+{\r
+ m_dom=dom;\r
+ if (dom) {\r
+ if (bindDocument) {\r
+ DOMDocument* tmp=setDocument(dom->getOwnerDocument());\r
+ if (tmp)\r
+ tmp->release();\r
+ }\r
+ }\r
+ else if (m_document) {\r
+ m_document->release();\r
+ m_document=NULL;\r
+ }\r
+}\r
+\r
void AbstractDOMCachingXMLObject::releaseDOM()\r
{\r
Category& log=Category::getInstance(XMLTOOLING_LOGCAT".DOM");\r
if (log.isDebugEnabled())\r
- log.debug("Releasing cached DOM reprsentation for %s", getElementQName().toString().c_str());\r
-\r
- // We don't get rid of the document we're holding, if any.\r
- // The marshalling process deals with that.\r
+ log.debug("releasing cached DOM reprsentation for %s", getElementQName().toString().c_str());\r
setDOM(NULL);\r
}\r
\r
Category& log=Category::getInstance(XMLTOOLING_LOGCAT".DOM");\r
if (log.isDebugEnabled()) {\r
log.debug(\r
- "Releasing cached DOM representation for parent of %s with propagation set to %s",\r
+ "releasing cached DOM representation for parent of %s with propagation set to %s",\r
getElementQName().toString().c_str(), propagateRelease ? "true" : "false"\r
);\r
}\r
class _release : public binary_function<XMLObject*,bool,void> {\r
public:\r
void operator()(XMLObject* obj, bool propagate) const {\r
- DOMCachingXMLObject* domCachingParent = dynamic_cast<DOMCachingXMLObject*>(obj);\r
- if (domCachingParent) {\r
- domCachingParent->releaseDOM();\r
+ DOMCachingXMLObject* domCaching = dynamic_cast<DOMCachingXMLObject*>(obj);\r
+ if (domCaching) {\r
+ domCaching->releaseDOM();\r
if (propagate)\r
- domCachingParent->releaseChildrenDOM(propagate);\r
+ domCaching->releaseChildrenDOM(propagate);\r
}\r
}\r
};\r
Category& log=Category::getInstance(XMLTOOLING_LOGCAT".DOM");\r
if (log.isDebugEnabled()) {\r
log.debug(\r
- "Releasing cached DOM representation for children of %s with propagation set to %s",\r
+ "releasing cached DOM representation for children of %s with propagation set to %s",\r
getElementQName().toString().c_str(), propagateRelease ? "true" : "false"\r
);\r
}\r