From: cantor Date: Mon, 6 Mar 2006 06:43:17 +0000 (+0000) Subject: Unix fixes X-Git-Tag: 1.4.1~777 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fxmltooling.git;a=commitdiff_plain;h=3ac78427b7a4ce8c7492dcb5fcac52563c5760ec Unix fixes git-svn-id: https://svn.middleware.georgetown.edu/cpp-xmltooling/trunk@46 de75baf8-a10c-0410-a50a-987c0e22f00f --- diff --git a/xmltooling/util/XMLObjectChildrenList.h b/xmltooling/util/XMLObjectChildrenList.h index 91cda64..18888af 100644 --- a/xmltooling/util/XMLObjectChildrenList.h +++ b/xmltooling/util/XMLObjectChildrenList.h @@ -146,7 +146,7 @@ namespace xmltooling { template class XMLObjectChildrenList { - typename Container& m_container; + Container& m_container; typename std::list<_Ty*>* m_list; typename std::list<_Ty*>::iterator m_fence; XMLObject* m_parent; diff --git a/xmltoolingtest/XMLObjectBaseTestCase.h b/xmltoolingtest/XMLObjectBaseTestCase.h index 9adb659..68c3b3e 100644 --- a/xmltoolingtest/XMLObjectBaseTestCase.h +++ b/xmltoolingtest/XMLObjectBaseTestCase.h @@ -1,265 +1,263 @@ -/* - * Copyright 2001-2005 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 - * - * 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. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace xmltooling; -using namespace std; - -extern ParserPool* validatingPool; -extern ParserPool* nonvalidatingPool; -extern string data_path; - -#if defined (_MSC_VER) - #pragma warning( push ) - #pragma warning( disable : 4250 4251 ) -#endif - -class SimpleXMLObject : public AbstractDOMCachingXMLObject -{ -public: - static const XMLCh NAMESPACE[]; - static const XMLCh NAMESPACE_PREFIX[]; - static const XMLCh LOCAL_NAME[]; - static const XMLCh ID_ATTRIB_NAME[]; - - SimpleXMLObject() : AbstractDOMCachingXMLObject(NAMESPACE, LOCAL_NAME, NAMESPACE_PREFIX), m_id(NULL), m_value(NULL) {} - virtual ~SimpleXMLObject() { - XMLString::release(&m_id); - XMLString::release(&m_value); - } - - const XMLCh* getId() const { return m_id; } - void setId(const XMLCh* id) { m_id=prepareForAssignment(m_id,id); } - - const XMLCh* getValue() const { return m_value; } - void setValue(const XMLCh* value) { m_value=prepareForAssignment(m_value,value); } - - VectorOf(SimpleXMLObject) getSimpleXMLObjects() { - return VectorOf(SimpleXMLObject)(this, m_simples, &m_children, m_children.end()); - } - - SimpleXMLObject* clone() const { - auto_ptr domClone(AbstractDOMCachingXMLObject::clone()); - SimpleXMLObject* ret=dynamic_cast(domClone.get()); - if (ret) { - domClone.release(); - return ret; - } - - ret=new SimpleXMLObject(); - ret->setId(m_id); - ret->setValue(m_value); - xmltooling::clone(m_children, ret->m_children); - return ret; - } - -private: - XMLCh* m_id; - XMLCh* m_value; - vector m_simples; -}; - -class SimpleXMLObjectBuilder : public XMLObjectBuilder -{ -public: - SimpleXMLObject* buildObject() const { - return new SimpleXMLObject(); - } -}; - -class SimpleXMLObjectMarshaller : public AbstractXMLObjectMarshaller -{ -public: - SimpleXMLObjectMarshaller() {} - -private: - void marshallAttributes(const XMLObject& xmlObject, DOMElement* domElement) const { - const SimpleXMLObject& simpleXMLObject = dynamic_cast(xmlObject); - - if(simpleXMLObject.getId()) { - domElement->setAttributeNS(NULL, SimpleXMLObject::ID_ATTRIB_NAME, simpleXMLObject.getId()); - domElement->setIdAttributeNS(NULL, SimpleXMLObject::ID_ATTRIB_NAME); - } - } - - void marshallElementContent(const XMLObject& xmlObject, DOMElement* domElement) const { - const SimpleXMLObject& simpleXMLObject = dynamic_cast(xmlObject); - - if(simpleXMLObject.getValue()) { - domElement->setTextContent(simpleXMLObject.getValue()); - } - } -}; - -class SimpleXMLObjectUnmarshaller : public AbstractXMLObjectUnmarshaller -{ -public: - SimpleXMLObjectUnmarshaller() {} - -private: - void processChildElement(XMLObject& parentXMLObject, XMLObject* childXMLObject) const { - SimpleXMLObject& simpleXMLObject = dynamic_cast(parentXMLObject); - - SimpleXMLObject* child = dynamic_cast(childXMLObject); - if (child) { - simpleXMLObject.getSimpleXMLObjects().push_back(child); - } - else { - throw UnmarshallingException("Unknown child element cannot be added to parent object."); - } - } - - void processAttribute(XMLObject& xmlObject, const DOMAttr* attribute) const { - SimpleXMLObject& simpleXMLObject = dynamic_cast(xmlObject); - - if (XMLString::equals(attribute->getLocalName(),SimpleXMLObject::ID_ATTRIB_NAME)) { - simpleXMLObject.setId(attribute->getValue()); - } - else { - throw UnmarshallingException("Unknown attribute cannot be processed by parent object."); - } - } - - void processElementContent(XMLObject& xmlObject, const XMLCh* elementContent) const { - SimpleXMLObject& simpleXMLObject = dynamic_cast(xmlObject); - - simpleXMLObject.setValue(elementContent); - } - -}; - -class WildcardXMLObjectMarshaller; - -class WildcardXMLObject : public AbstractExtensibleXMLObject, public AbstractAttributeExtensibleXMLObject -{ - friend class WildcardXMLObjectMarshaller; -public: - WildcardXMLObject(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix) - : AbstractDOMCachingXMLObject(nsURI, localName, prefix), - AbstractExtensibleXMLObject(nsURI, localName, prefix), - AbstractAttributeExtensibleXMLObject(nsURI, localName, prefix) {} - virtual ~WildcardXMLObject() {} - - WildcardXMLObject* clone() const { - auto_ptr domClone(AbstractDOMCachingXMLObject::clone()); - WildcardXMLObject* ret=dynamic_cast(domClone.get()); - if (ret) { - domClone.release(); - return ret; - } - - ret=new WildcardXMLObject( - getElementQName().getNamespaceURI(),getElementQName().getLocalPart(),getElementQName().getPrefix() - ); - for (map::const_iterator i=m_attributeMap.begin(); i!=m_attributeMap.end(); i++) { - ret->m_attributeMap[i->first]=XMLString::replicate(i->second); - } - xmltooling::clone(m_children, ret->m_children); - return ret; - } -}; - -class WildcardXMLObjectBuilder : public XMLObjectBuilder -{ -public: - XMLObject* buildObject() const { - throw XMLObjectException("No default builder available."); - } - - WildcardXMLObject* buildObject(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix) const { - return new WildcardXMLObject(nsURI,localName,prefix); - } -}; - -class WildcardXMLObjectMarshaller : public AbstractXMLObjectMarshaller -{ -public: - WildcardXMLObjectMarshaller() : AbstractXMLObjectMarshaller() {} - -private: - void marshallAttributes(const XMLObject& xmlObject, DOMElement* domElement) const { - const WildcardXMLObject& wcXMLObject = dynamic_cast(xmlObject); - - for (map::const_iterator i=wcXMLObject.m_attributeMap.begin(); i!=wcXMLObject.m_attributeMap.end(); i++) { - DOMAttr* attr=domElement->getOwnerDocument()->createAttributeNS(i->first.getNamespaceURI(),i->first.getLocalPart()); - if (i->first.hasPrefix()) - attr->setPrefix(i->first.getPrefix()); - attr->setNodeValue(i->second); - domElement->setAttributeNode(attr); - } - } - - void marshallElementContent(const XMLObject& xmlObject, DOMElement* domElement) const { - const WildcardXMLObject& wcXMLObject = dynamic_cast(xmlObject); - - if(wcXMLObject.getTextContent()) { - domElement->appendChild(domElement->getOwnerDocument()->createTextNode(wcXMLObject.getTextContent())); - } - } -}; - -class WildcardXMLObjectUnmarshaller : public AbstractXMLObjectUnmarshaller -{ -public: - WildcardXMLObjectUnmarshaller() {} - -private: - XMLObject* buildXMLObject(const DOMElement* domElement) const { - const WildcardXMLObjectBuilder* builder = - dynamic_cast(XMLObjectBuilder::getBuilder(domElement)); - if (builder) - return builder->buildObject(domElement->getNamespaceURI(),domElement->getLocalName(),domElement->getPrefix()); - throw UnmarshallingException("Failed to locate WildcardObjectBuilder for element."); - } - - void processChildElement(XMLObject& parentXMLObject, XMLObject* childXMLObject) const { - WildcardXMLObject& wcXMLObject = dynamic_cast(parentXMLObject); - - wcXMLObject.getXMLObjects().push_back(childXMLObject); - } - - void processAttribute(XMLObject& xmlObject, const DOMAttr* attribute) const { - WildcardXMLObject& wcXMLObject = dynamic_cast(xmlObject); - - wcXMLObject.setAttribute( - QName(attribute->getNamespaceURI(),attribute->getLocalName(),attribute->getPrefix()), - attribute->getNodeValue() - ); - } - - void processElementContent(XMLObject& xmlObject, const XMLCh* elementContent) const { - WildcardXMLObject& wcXMLObject = dynamic_cast(xmlObject); - - wcXMLObject.setTextContent(elementContent); - } - -}; - -#if defined (_MSC_VER) - #pragma warning( pop ) -#endif +/* + * Copyright 2001-2005 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 + * + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace xmltooling; +using namespace std; + +extern ParserPool* validatingPool; +extern ParserPool* nonvalidatingPool; +extern string data_path; + +#if defined (_MSC_VER) + #pragma warning( push ) + #pragma warning( disable : 4250 4251 ) +#endif + +class SimpleXMLObject : public AbstractDOMCachingXMLObject +{ +public: + static const XMLCh NAMESPACE[]; + static const XMLCh NAMESPACE_PREFIX[]; + static const XMLCh LOCAL_NAME[]; + static const XMLCh ID_ATTRIB_NAME[]; + + SimpleXMLObject() : AbstractDOMCachingXMLObject(NAMESPACE, LOCAL_NAME, NAMESPACE_PREFIX), m_id(NULL), m_value(NULL) {} + virtual ~SimpleXMLObject() { + XMLString::release(&m_id); + XMLString::release(&m_value); + } + + const XMLCh* getId() const { return m_id; } + void setId(const XMLCh* id) { m_id=prepareForAssignment(m_id,id); } + + const XMLCh* getValue() const { return m_value; } + void setValue(const XMLCh* value) { m_value=prepareForAssignment(m_value,value); } + + VectorOf(SimpleXMLObject) getSimpleXMLObjects() { + return VectorOf(SimpleXMLObject)(this, m_simples, &m_children, m_children.end()); + } + + SimpleXMLObject* clone() const { + auto_ptr domClone(AbstractDOMCachingXMLObject::clone()); + SimpleXMLObject* ret=dynamic_cast(domClone.get()); + if (ret) { + domClone.release(); + return ret; + } + + ret=new SimpleXMLObject(); + ret->setId(m_id); + ret->setValue(m_value); + xmltooling::clone(m_children, ret->m_children); + return ret; + } + +private: + XMLCh* m_id; + XMLCh* m_value; + vector m_simples; +}; + +class SimpleXMLObjectBuilder : public XMLObjectBuilder +{ +public: + SimpleXMLObject* buildObject() const { + return new SimpleXMLObject(); + } +}; + +class SimpleXMLObjectMarshaller : public AbstractXMLObjectMarshaller +{ +public: + SimpleXMLObjectMarshaller() {} + +private: + void marshallAttributes(const XMLObject& xmlObject, DOMElement* domElement) const { + const SimpleXMLObject& simpleXMLObject = dynamic_cast(xmlObject); + + if(simpleXMLObject.getId()) { + domElement->setAttributeNS(NULL, SimpleXMLObject::ID_ATTRIB_NAME, simpleXMLObject.getId()); + domElement->setIdAttributeNS(NULL, SimpleXMLObject::ID_ATTRIB_NAME); + } + } + + void marshallElementContent(const XMLObject& xmlObject, DOMElement* domElement) const { + const SimpleXMLObject& simpleXMLObject = dynamic_cast(xmlObject); + + if(simpleXMLObject.getValue()) { + domElement->setTextContent(simpleXMLObject.getValue()); + } + } +}; + +class SimpleXMLObjectUnmarshaller : public AbstractXMLObjectUnmarshaller +{ +public: + SimpleXMLObjectUnmarshaller() {} + +private: + void processChildElement(XMLObject& parentXMLObject, XMLObject* childXMLObject) const { + SimpleXMLObject& simpleXMLObject = dynamic_cast(parentXMLObject); + + SimpleXMLObject* child = dynamic_cast(childXMLObject); + if (child) { + simpleXMLObject.getSimpleXMLObjects().push_back(child); + } + else { + throw UnmarshallingException("Unknown child element cannot be added to parent object."); + } + } + + void processAttribute(XMLObject& xmlObject, const DOMAttr* attribute) const { + SimpleXMLObject& simpleXMLObject = dynamic_cast(xmlObject); + + if (XMLString::equals(attribute->getLocalName(),SimpleXMLObject::ID_ATTRIB_NAME)) { + simpleXMLObject.setId(attribute->getValue()); + } + else { + throw UnmarshallingException("Unknown attribute cannot be processed by parent object."); + } + } + + void processElementContent(XMLObject& xmlObject, const XMLCh* elementContent) const { + SimpleXMLObject& simpleXMLObject = dynamic_cast(xmlObject); + + simpleXMLObject.setValue(elementContent); + } + +}; + +class WildcardXMLObjectMarshaller; + +class WildcardXMLObject : public AbstractExtensibleXMLObject, public AbstractAttributeExtensibleXMLObject +{ + friend class WildcardXMLObjectMarshaller; +public: + WildcardXMLObject(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix) + : AbstractDOMCachingXMLObject(nsURI, localName, prefix), + AbstractExtensibleXMLObject(nsURI, localName, prefix), + AbstractAttributeExtensibleXMLObject(nsURI, localName, prefix) {} + virtual ~WildcardXMLObject() {} + + WildcardXMLObject* clone() const { + auto_ptr domClone(AbstractDOMCachingXMLObject::clone()); + WildcardXMLObject* ret=dynamic_cast(domClone.get()); + if (ret) { + domClone.release(); + return ret; + } + + ret=new WildcardXMLObject( + getElementQName().getNamespaceURI(),getElementQName().getLocalPart(),getElementQName().getPrefix() + ); + for (map::const_iterator i=m_attributeMap.begin(); i!=m_attributeMap.end(); i++) { + ret->m_attributeMap[i->first]=XMLString::replicate(i->second); + } + xmltooling::clone(m_children, ret->m_children); + return ret; + } +}; + +class WildcardXMLObjectBuilder : public XMLObjectBuilder +{ +public: + XMLObject* buildObject() const { + throw XMLObjectException("No default builder available."); + } + + WildcardXMLObject* buildObject(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix) const { + return new WildcardXMLObject(nsURI,localName,prefix); + } +}; + +class WildcardXMLObjectMarshaller : public AbstractXMLObjectMarshaller +{ +public: + WildcardXMLObjectMarshaller() : AbstractXMLObjectMarshaller() {} + +private: + void marshallAttributes(const XMLObject& xmlObject, DOMElement* domElement) const { + const WildcardXMLObject& wcXMLObject = dynamic_cast(xmlObject); + + for (map::const_iterator i=wcXMLObject.m_attributeMap.begin(); i!=wcXMLObject.m_attributeMap.end(); i++) { + DOMAttr* attr=domElement->getOwnerDocument()->createAttributeNS(i->first.getNamespaceURI(),i->first.getLocalPart()); + if (i->first.hasPrefix()) + attr->setPrefix(i->first.getPrefix()); + attr->setNodeValue(i->second); + domElement->setAttributeNode(attr); + } + } + + void marshallElementContent(const XMLObject& xmlObject, DOMElement* domElement) const { + const WildcardXMLObject& wcXMLObject = dynamic_cast(xmlObject); + + if(wcXMLObject.getTextContent()) { + domElement->appendChild(domElement->getOwnerDocument()->createTextNode(wcXMLObject.getTextContent())); + } + } +}; + +class WildcardXMLObjectUnmarshaller : public AbstractXMLObjectUnmarshaller +{ +public: + WildcardXMLObjectUnmarshaller() {} + +private: + XMLObject* buildXMLObject(const DOMElement* domElement) const { + const WildcardXMLObjectBuilder* builder = + dynamic_cast(XMLObjectBuilder::getBuilder(domElement)); + if (builder) + return builder->buildObject(domElement->getNamespaceURI(),domElement->getLocalName(),domElement->getPrefix()); + throw UnmarshallingException("Failed to locate WildcardObjectBuilder for element."); + } + + void processChildElement(XMLObject& parentXMLObject, XMLObject* childXMLObject) const { + WildcardXMLObject& wcXMLObject = dynamic_cast(parentXMLObject); + + wcXMLObject.getXMLObjects().push_back(childXMLObject); + } + + void processAttribute(XMLObject& xmlObject, const DOMAttr* attribute) const { + WildcardXMLObject& wcXMLObject = dynamic_cast(xmlObject); + + QName q(attribute->getNamespaceURI(),attribute->getLocalName(),attribute->getPrefix()); + wcXMLObject.setAttribute(q,attribute->getNodeValue()); + } + + void processElementContent(XMLObject& xmlObject, const XMLCh* elementContent) const { + WildcardXMLObject& wcXMLObject = dynamic_cast(xmlObject); + + wcXMLObject.setTextContent(elementContent); + } + +}; + +#if defined (_MSC_VER) + #pragma warning( pop ) +#endif