X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-xmltooling.git;a=blobdiff_plain;f=xmltoolingtest%2FXMLObjectBaseTestCase.h;h=f6d6f1e6cefa3f1da570da03b52e5f86cb53ba1f;hp=99aa08f2c76512b9bd3c7ef8511214b3506e9c67;hb=e5a84f387d04247eb6938270f0222cf001bb716e;hpb=208033c53430f82706ddf5f411747230d8da70da diff --git a/xmltoolingtest/XMLObjectBaseTestCase.h b/xmltoolingtest/XMLObjectBaseTestCase.h index 99aa08f..f6d6f1e 100644 --- a/xmltoolingtest/XMLObjectBaseTestCase.h +++ b/xmltoolingtest/XMLObjectBaseTestCase.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2007 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. @@ -15,6 +15,7 @@ */ #include +#include #include #include #include @@ -46,17 +47,18 @@ extern string data_path; #endif class SimpleXMLObject - : public AbstractComplexElement, + : public AbstractAttributeExtensibleXMLObject, + public AbstractComplexElement, public AbstractDOMCachingXMLObject, public AbstractXMLObjectMarshaller, public AbstractXMLObjectUnmarshaller { protected: SimpleXMLObject(const SimpleXMLObject& src) - : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), + : AbstractXMLObject(src), AbstractAttributeExtensibleXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_id(XMLString::replicate(src.m_id)) { #ifndef XMLTOOLING_NO_XMLSEC - m_children.push_back(NULL); + m_children.push_back(nullptr); m_signature=m_children.begin(); #endif VectorOf(SimpleXMLObject) mine=getSimpleXMLObjects(); @@ -74,10 +76,10 @@ public: static const XMLCh ID_ATTRIB_NAME[]; SimpleXMLObject( - const XMLCh* nsURI=NULL, const XMLCh* localName=NULL, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL - ) : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_id(NULL) { + const XMLCh* nsURI=nullptr, const XMLCh* localName=nullptr, const XMLCh* prefix=nullptr, const xmltooling::QName* schemaType=nullptr + ) : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_id(nullptr) { #ifndef XMLTOOLING_NO_XMLSEC - m_children.push_back(NULL); + m_children.push_back(nullptr); m_signature=m_children.begin(); #endif } @@ -125,13 +127,14 @@ public: protected: void marshallAttributes(xercesc::DOMElement* domElement) const { if(getId()) { - domElement->setAttributeNS(NULL, SimpleXMLObject::ID_ATTRIB_NAME, getId()); + domElement->setAttributeNS(nullptr, SimpleXMLObject::ID_ATTRIB_NAME, getId()); #ifdef XMLTOOLING_XERCESC_BOOLSETIDATTRIBUTE - domElement->setIdAttributeNS(NULL, SimpleXMLObject::ID_ATTRIB_NAME, true); + domElement->setIdAttributeNS(nullptr, SimpleXMLObject::ID_ATTRIB_NAME, true); #else - domElement->setIdAttributeNS(NULL, SimpleXMLObject::ID_ATTRIB_NAME); + domElement->setIdAttributeNS(nullptr, SimpleXMLObject::ID_ATTRIB_NAME); #endif } + marshallExtensionAttributes(domElement); } void processChildElement(XMLObject* childXMLObject, const xercesc::DOMElement* root) { @@ -153,10 +156,11 @@ protected: } void processAttribute(const xercesc::DOMAttr* attribute) { - if (XMLHelper::isNodeNamed(attribute, NULL, SimpleXMLObject::ID_ATTRIB_NAME)) + if (XMLHelper::isNodeNamed(attribute, nullptr, SimpleXMLObject::ID_ATTRIB_NAME)) { setId(attribute->getValue()); - else - throw UnmarshallingException("Unknown attribute cannot be processed by parent object."); + return; + } + unmarshallExtensionAttribute(attribute); } private: @@ -175,7 +179,7 @@ public: } XMLObject* buildObject( - const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL + const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=nullptr, const xmltooling::QName* schemaType=nullptr ) const { return new SimpleXMLObject(nsURI, localName, prefix, schemaType); }