X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2FAbstractDOMCachingXMLObject.cpp;h=061df1a0373997d464516b00a9453dd3163a6ba0;hb=f78acc6c0cf56a9d8975b6523ffa4eb9a89ceb3a;hp=775b4bc17aab5cf6254776ba83e7e89fe49b12f7;hpb=a0d768778a8f5f539b909baf5b115e70ea765f0f;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/AbstractDOMCachingXMLObject.cpp b/xmltooling/AbstractDOMCachingXMLObject.cpp index 775b4bc..061df1a 100644 --- a/xmltooling/AbstractDOMCachingXMLObject.cpp +++ b/xmltooling/AbstractDOMCachingXMLObject.cpp @@ -1,17 +1,21 @@ -/* - * 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. - * You may obtain a copy of the License at +/** + * Licensed to the University Corporation for Advanced Internet + * Development, Inc. (UCAID) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. * - * http://www.apache.org/licenses/LICENSE-2.0 + * UCAID licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the + * License at * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. */ /** @@ -55,11 +59,15 @@ DOMElement* AbstractDOMCachingXMLObject::getDOM() const void AbstractDOMCachingXMLObject::setDOM(DOMElement* dom, bool bindDocument) const { - m_dom=dom; - if (dom) { - if (bindDocument) { - setDocument(dom->getOwnerDocument()); - } + m_dom = dom; + if (dom && bindDocument) { + DOMDocument* doc = dom->getOwnerDocument(); + setDocument(doc); + DOMElement* documentRoot = doc->getDocumentElement(); + if (!documentRoot) + doc->appendChild(dom); + else if (documentRoot != dom) + doc->replaceChild(dom, documentRoot); } }