X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=saml%2Fsaml1%2Fcore%2Fimpl%2FAssertionsImpl.cpp;h=e6b70512b3b11890b38cce8d5df5c51b26950575;hb=f1208cd2f514700244816377443c4951dc22c848;hp=acf9e16a0d095e1edb7a6a38549551d5a2a5ade2;hpb=549ab1cbc7fd4dc82afff0f517adab5a5292689c;p=shibboleth%2Fcpp-opensaml.git diff --git a/saml/saml1/core/impl/AssertionsImpl.cpp b/saml/saml1/core/impl/AssertionsImpl.cpp index acf9e16..e6b7051 100644 --- a/saml/saml1/core/impl/AssertionsImpl.cpp +++ b/saml/saml1/core/impl/AssertionsImpl.cpp @@ -1,34 +1,42 @@ -/* - * Copyright 2001-2007 Internet2 +/** + * 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. * - * 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 + * 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 * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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. + * 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. */ /** * AssertionsImpl.cpp * - * Implementation classes for SAML 1.x Assertions schema + * Implementation classes for SAML 1.x Assertions schema. */ #include "internal.h" #include "exceptions.h" #include "saml1/core/Assertions.h" +#include "signature/ContentReference.h" #include #include #include #include #include +#include +#include +#include #include #include @@ -60,11 +68,11 @@ namespace opensaml { public: virtual ~ConditionImpl() {} - ConditionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + ConditionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - ConditionImpl(const ConditionImpl& src) : AnyElementImpl(src) {} + ConditionImpl(const ConditionImpl& src) : AbstractXMLObject(src), AnyElementImpl(src) {} IMPL_XMLOBJECT_CLONE(Condition); }; @@ -78,7 +86,7 @@ namespace opensaml { public: virtual ~AudienceRestrictionConditionImpl() {} - AudienceRestrictionConditionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + AudienceRestrictionConditionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } @@ -114,7 +122,7 @@ namespace opensaml { public: virtual ~DoNotCacheConditionImpl() {} - DoNotCacheConditionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + DoNotCacheConditionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } @@ -140,7 +148,7 @@ namespace opensaml { delete m_NotOnOrAfter; } - ConditionsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + ConditionsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } @@ -175,7 +183,7 @@ namespace opensaml { } void init() { - m_NotBefore=m_NotOnOrAfter=NULL; + m_NotBefore=m_NotOnOrAfter=nullptr; } IMPL_XMLOBJECT_CLONE(Conditions); @@ -187,8 +195,8 @@ namespace opensaml { protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_DATETIME_ATTRIB(NotBefore,NOTBEFORE,NULL); - MARSHALL_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL); + MARSHALL_DATETIME_ATTRIB(NotBefore,NOTBEFORE,nullptr); + MARSHALL_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,nullptr); } void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { @@ -199,8 +207,8 @@ namespace opensaml { } void processAttribute(const DOMAttr* attribute) { - PROC_DATETIME_ATTRIB(NotBefore,NOTBEFORE,NULL); - PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL); + PROC_DATETIME_ATTRIB(NotBefore,NOTBEFORE,nullptr); + PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,nullptr); } }; @@ -216,7 +224,7 @@ namespace opensaml { XMLString::release(&m_NameQualifier); } - NameIdentifierImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + NameIdentifierImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } @@ -229,7 +237,7 @@ namespace opensaml { } void init() { - m_Format=m_NameQualifier=NULL; + m_Format=m_NameQualifier=nullptr; } IMPL_XMLOBJECT_CLONE(NameIdentifier); @@ -238,13 +246,13 @@ namespace opensaml { protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_STRING_ATTRIB(Format,FORMAT,NULL); - MARSHALL_STRING_ATTRIB(NameQualifier,NAMEQUALIFIER,NULL); + MARSHALL_STRING_ATTRIB(Format,FORMAT,nullptr); + MARSHALL_STRING_ATTRIB(NameQualifier,NAMEQUALIFIER,nullptr); } void processAttribute(const DOMAttr* attribute) { - PROC_STRING_ATTRIB(Format,FORMAT,NULL); - PROC_STRING_ATTRIB(NameQualifier,NAMEQUALIFIER,NULL); + PROC_STRING_ATTRIB(Format,FORMAT,nullptr); + PROC_STRING_ATTRIB(NameQualifier,NAMEQUALIFIER,nullptr); } }; @@ -253,11 +261,11 @@ namespace opensaml { public: virtual ~SubjectConfirmationDataImpl() {} - SubjectConfirmationDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + SubjectConfirmationDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - SubjectConfirmationDataImpl(const SubjectConfirmationDataImpl& src) : AnyElementImpl(src) { + SubjectConfirmationDataImpl(const SubjectConfirmationDataImpl& src) : AbstractXMLObject(src), AnyElementImpl(src) { } IMPL_XMLOBJECT_CLONE(SubjectConfirmationData); @@ -272,7 +280,7 @@ namespace opensaml { public: virtual ~SubjectConfirmationImpl() {} - SubjectConfirmationImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + SubjectConfirmationImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } @@ -293,10 +301,10 @@ namespace opensaml { } void init() { - m_SubjectConfirmationData=NULL; - m_KeyInfo=NULL; - m_children.push_back(NULL); - m_children.push_back(NULL); + m_SubjectConfirmationData=nullptr; + m_KeyInfo=nullptr; + m_children.push_back(nullptr); + m_children.push_back(nullptr); m_pos_SubjectConfirmationData=m_children.begin(); m_pos_KeyInfo=m_pos_SubjectConfirmationData; ++m_pos_KeyInfo; @@ -328,7 +336,7 @@ namespace opensaml { public: virtual ~SubjectImpl() {} - SubjectImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + SubjectImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } @@ -343,10 +351,10 @@ namespace opensaml { } void init() { - m_NameIdentifier=NULL; - m_SubjectConfirmation=NULL; - m_children.push_back(NULL); - m_children.push_back(NULL); + m_NameIdentifier=nullptr; + m_SubjectConfirmation=nullptr; + m_children.push_back(nullptr); + m_children.push_back(nullptr); m_pos_NameIdentifier=m_children.begin(); m_pos_SubjectConfirmation=m_pos_NameIdentifier; ++m_pos_SubjectConfirmation; @@ -369,11 +377,11 @@ namespace opensaml { public: virtual ~StatementImpl() {} - StatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + StatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - StatementImpl(const StatementImpl& src) : AnyElementImpl(src) {} + StatementImpl(const StatementImpl& src) : AbstractXMLObject(src), AnyElementImpl(src) {} IMPL_XMLOBJECT_CLONE(Statement); }; @@ -385,8 +393,8 @@ namespace opensaml { public AbstractXMLObjectUnmarshaller { void init() { - m_Subject=NULL; - m_children.push_back(NULL); + m_Subject=nullptr; + m_children.push_back(nullptr); m_pos_Subject=m_children.begin(); } protected: @@ -396,7 +404,7 @@ namespace opensaml { public: virtual ~SubjectStatementImpl() {} - SubjectStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + SubjectStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } @@ -429,7 +437,7 @@ namespace opensaml { XMLString::release(&m_DNSAddress); } - SubjectLocalityImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + SubjectLocalityImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } @@ -442,7 +450,7 @@ namespace opensaml { } void init() { - m_IPAddress=m_DNSAddress=NULL; + m_IPAddress=m_DNSAddress=nullptr; } IMPL_XMLOBJECT_CLONE(SubjectLocality); @@ -451,13 +459,13 @@ namespace opensaml { protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_STRING_ATTRIB(IPAddress,IPADDRESS,NULL); - MARSHALL_STRING_ATTRIB(DNSAddress,DNSADDRESS,NULL); + MARSHALL_STRING_ATTRIB(IPAddress,IPADDRESS,nullptr); + MARSHALL_STRING_ATTRIB(DNSAddress,DNSADDRESS,nullptr); } void processAttribute(const DOMAttr* attribute) { - PROC_STRING_ATTRIB(IPAddress,IPADDRESS,NULL); - PROC_STRING_ATTRIB(DNSAddress,DNSADDRESS,NULL); + PROC_STRING_ATTRIB(IPAddress,IPADDRESS,nullptr); + PROC_STRING_ATTRIB(DNSAddress,DNSADDRESS,nullptr); } }; @@ -474,7 +482,7 @@ namespace opensaml { XMLString::release(&m_Binding); } - AuthorityBindingImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + AuthorityBindingImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } @@ -488,26 +496,26 @@ namespace opensaml { } void init() { - m_AuthorityKind=NULL; - m_Location=m_Binding=NULL; + m_AuthorityKind=nullptr; + m_Location=m_Binding=nullptr; } IMPL_XMLOBJECT_CLONE(AuthorityBinding); - IMPL_XMLOBJECT_ATTRIB(AuthorityKind,QName); + IMPL_XMLOBJECT_ATTRIB(AuthorityKind,xmltooling::QName); IMPL_STRING_ATTRIB(Location); IMPL_STRING_ATTRIB(Binding); protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_QNAME_ATTRIB(AuthorityKind,AUTHORITYKIND,NULL); - MARSHALL_STRING_ATTRIB(Location,LOCATION,NULL); - MARSHALL_STRING_ATTRIB(Binding,BINDING,NULL); + MARSHALL_QNAME_ATTRIB(AuthorityKind,AUTHORITYKIND,nullptr); + MARSHALL_STRING_ATTRIB(Location,LOCATION,nullptr); + MARSHALL_STRING_ATTRIB(Binding,BINDING,nullptr); } void processAttribute(const DOMAttr* attribute) { - PROC_QNAME_ATTRIB(AuthorityKind,AUTHORITYKIND,NULL); - PROC_STRING_ATTRIB(Location,LOCATION,NULL); - PROC_STRING_ATTRIB(Binding,BINDING,NULL); + PROC_QNAME_ATTRIB(AuthorityKind,AUTHORITYKIND,nullptr); + PROC_STRING_ATTRIB(Location,LOCATION,nullptr); + PROC_STRING_ATTRIB(Binding,BINDING,nullptr); } }; @@ -519,7 +527,7 @@ namespace opensaml { delete m_AuthenticationInstant; } - AuthenticationStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + AuthenticationStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } @@ -539,10 +547,10 @@ namespace opensaml { } void init() { - m_AuthenticationMethod=NULL; - m_AuthenticationInstant=NULL; - m_SubjectLocality=NULL; - m_children.push_back(NULL); + m_AuthenticationMethod=nullptr; + m_AuthenticationInstant=nullptr; + m_SubjectLocality=nullptr; + m_children.push_back(nullptr); m_pos_SubjectLocality=m_pos_Subject; ++m_pos_SubjectLocality; } @@ -561,8 +569,8 @@ namespace opensaml { protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_STRING_ATTRIB(AuthenticationMethod,AUTHENTICATIONMETHOD,NULL); - MARSHALL_DATETIME_ATTRIB(AuthenticationInstant,AUTHENTICATIONINSTANT,NULL); + MARSHALL_STRING_ATTRIB(AuthenticationMethod,AUTHENTICATIONMETHOD,nullptr); + MARSHALL_DATETIME_ATTRIB(AuthenticationInstant,AUTHENTICATIONINSTANT,nullptr); SubjectStatementImpl::marshallAttributes(domElement); } @@ -573,8 +581,8 @@ namespace opensaml { } void processAttribute(const DOMAttr* attribute) { - PROC_STRING_ATTRIB(AuthenticationMethod,AUTHENTICATIONMETHOD,NULL); - PROC_DATETIME_ATTRIB(AuthenticationInstant,AUTHENTICATIONINSTANT,NULL); + PROC_STRING_ATTRIB(AuthenticationMethod,AUTHENTICATIONMETHOD,nullptr); + PROC_DATETIME_ATTRIB(AuthenticationInstant,AUTHENTICATIONINSTANT,nullptr); SubjectStatementImpl::processAttribute(attribute); } }; @@ -590,8 +598,8 @@ namespace opensaml { XMLString::release(&m_Namespace); } - ActionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) - : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Namespace(NULL) { + ActionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Namespace(nullptr) { } ActionImpl(const ActionImpl& src) : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) { @@ -603,11 +611,11 @@ namespace opensaml { protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_STRING_ATTRIB(Namespace,NAMESPACE,NULL); + MARSHALL_STRING_ATTRIB(Namespace,NAMESPACE,nullptr); } void processAttribute(const DOMAttr* attribute) { - PROC_STRING_ATTRIB(Namespace,NAMESPACE,NULL); + PROC_STRING_ATTRIB(Namespace,NAMESPACE,nullptr); } }; @@ -620,7 +628,7 @@ namespace opensaml { public: virtual ~EvidenceImpl() {} - EvidenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + EvidenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } @@ -664,7 +672,7 @@ namespace opensaml { XMLString::release(&m_Decision); } - AuthorizationDecisionStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + AuthorizationDecisionStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } @@ -685,10 +693,10 @@ namespace opensaml { } void init() { - m_Resource=NULL; - m_Decision=NULL; - m_Evidence=NULL; - m_children.push_back(NULL); + m_Resource=nullptr; + m_Decision=nullptr; + m_Evidence=nullptr; + m_children.push_back(nullptr); m_pos_Evidence=m_pos_Subject; ++m_pos_Evidence; } @@ -707,8 +715,8 @@ namespace opensaml { protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_STRING_ATTRIB(Resource,RESOURCE,NULL); - MARSHALL_STRING_ATTRIB(Decision,DECISION,NULL); + MARSHALL_STRING_ATTRIB(Resource,RESOURCE,nullptr); + MARSHALL_STRING_ATTRIB(Decision,DECISION,nullptr); SubjectStatementImpl::marshallAttributes(domElement); } @@ -719,8 +727,8 @@ namespace opensaml { } void processAttribute(const DOMAttr* attribute) { - PROC_STRING_ATTRIB(Resource,RESOURCE,NULL); - PROC_STRING_ATTRIB(Decision,DECISION,NULL); + PROC_STRING_ATTRIB(Resource,RESOURCE,nullptr); + PROC_STRING_ATTRIB(Decision,DECISION,nullptr); SubjectStatementImpl::processAttribute(attribute); } }; @@ -737,7 +745,7 @@ namespace opensaml { XMLString::release(&m_AttributeNamespace); } - AttributeDesignatorImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + AttributeDesignatorImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } @@ -750,7 +758,7 @@ namespace opensaml { } void init() { - m_AttributeName=m_AttributeNamespace=NULL; + m_AttributeName=m_AttributeNamespace=nullptr; } IMPL_XMLOBJECT_CLONE(AttributeDesignator); @@ -759,13 +767,13 @@ namespace opensaml { protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_STRING_ATTRIB(AttributeName,ATTRIBUTENAME,NULL); - MARSHALL_STRING_ATTRIB(AttributeNamespace,ATTRIBUTENAMESPACE,NULL); + MARSHALL_STRING_ATTRIB(AttributeName,ATTRIBUTENAME,nullptr); + MARSHALL_STRING_ATTRIB(AttributeNamespace,ATTRIBUTENAMESPACE,nullptr); } void processAttribute(const DOMAttr* attribute) { - PROC_STRING_ATTRIB(AttributeName,ATTRIBUTENAME,NULL); - PROC_STRING_ATTRIB(AttributeNamespace,ATTRIBUTENAMESPACE,NULL); + PROC_STRING_ATTRIB(AttributeName,ATTRIBUTENAME,nullptr); + PROC_STRING_ATTRIB(AttributeNamespace,ATTRIBUTENAMESPACE,nullptr); } }; @@ -781,7 +789,7 @@ namespace opensaml { XMLString::release(&m_AttributeNamespace); } - AttributeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + AttributeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } @@ -800,7 +808,7 @@ namespace opensaml { } void init() { - m_AttributeName=m_AttributeNamespace=NULL; + m_AttributeName=m_AttributeNamespace=nullptr; } IMPL_XMLOBJECT_CLONE(Attribute); @@ -813,8 +821,8 @@ namespace opensaml { protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_STRING_ATTRIB(AttributeName,ATTRIBUTENAME,NULL); - MARSHALL_STRING_ATTRIB(AttributeNamespace,ATTRIBUTENAMESPACE,NULL); + MARSHALL_STRING_ATTRIB(AttributeName,ATTRIBUTENAME,nullptr); + MARSHALL_STRING_ATTRIB(AttributeNamespace,ATTRIBUTENAMESPACE,nullptr); } void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { @@ -822,8 +830,8 @@ namespace opensaml { } void processAttribute(const DOMAttr* attribute) { - PROC_STRING_ATTRIB(AttributeName,ATTRIBUTENAME,NULL); - PROC_STRING_ATTRIB(AttributeNamespace,ATTRIBUTENAMESPACE,NULL); + PROC_STRING_ATTRIB(AttributeName,ATTRIBUTENAME,nullptr); + PROC_STRING_ATTRIB(AttributeNamespace,ATTRIBUTENAMESPACE,nullptr); } }; @@ -832,11 +840,11 @@ namespace opensaml { public: virtual ~AttributeValueImpl() {} - AttributeValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + AttributeValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - AttributeValueImpl(const AttributeValueImpl& src) : AnyElementImpl(src) {} + AttributeValueImpl(const AttributeValueImpl& src) : AbstractXMLObject(src), AnyElementImpl(src) {} IMPL_XMLOBJECT_CLONE(AttributeValue); }; @@ -846,7 +854,7 @@ namespace opensaml { public: virtual ~AttributeStatementImpl() {} - AttributeStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + AttributeStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } @@ -885,7 +893,7 @@ namespace opensaml { public: virtual ~AdviceImpl() {} - AdviceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + AdviceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } @@ -938,16 +946,16 @@ namespace opensaml { public AbstractXMLObjectUnmarshaller { void init() { - m_MinorVersion=NULL; - m_AssertionID=NULL; - m_Issuer=NULL; - m_IssueInstant=NULL; - m_children.push_back(NULL); - m_children.push_back(NULL); - m_children.push_back(NULL); - m_Conditions=NULL; - m_Advice=NULL; - m_Signature=NULL; + m_MinorVersion=nullptr; + m_AssertionID=nullptr; + m_Issuer=nullptr; + m_IssueInstant=nullptr; + m_children.push_back(nullptr); + m_children.push_back(nullptr); + m_children.push_back(nullptr); + m_Conditions=nullptr; + m_Advice=nullptr; + m_Signature=nullptr; m_pos_Conditions=m_children.begin(); m_pos_Advice=m_pos_Conditions; ++m_pos_Advice; @@ -962,7 +970,7 @@ namespace opensaml { delete m_IssueInstant; } - AssertionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + AssertionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } @@ -1038,11 +1046,16 @@ namespace opensaml { IMPL_STRING_ATTRIB(AssertionID); // have to special-case getXMLID const XMLCh* getXMLID() const { pair v = getMinorVersion(); - return (!v.first || v.second > 0) ? m_AssertionID : NULL; + return (!v.first || v.second > 0) ? m_AssertionID : nullptr; } const XMLCh* getID() const { return getAssertionID(); } + void releaseDOM() const { + if (getDOM()) + getDOM()->removeAttributeNS(nullptr, ASSERTIONID_ATTRIB_NAME); + AbstractDOMCachingXMLObject::releaseDOM(); + } IMPL_STRING_ATTRIB(Issuer); IMPL_DATETIME_ATTRIB(IssueInstant,0); IMPL_TYPED_CHILD(Conditions); @@ -1054,23 +1067,33 @@ namespace opensaml { IMPL_TYPED_CHILDREN(AuthorizationDecisionStatement, m_pos_Signature); protected: + void prepareForMarshalling() const { + if (m_Signature) + declareNonVisibleNamespaces(); + } + void marshallAttributes(DOMElement* domElement) const { static const XMLCh MAJORVERSION[] = UNICODE_LITERAL_12(M,a,j,o,r,V,e,r,s,i,o,n); - domElement->setAttributeNS(NULL,MAJORVERSION,XML_ONE); + domElement->setAttributeNS(nullptr,MAJORVERSION,XML_ONE); if (!m_MinorVersion) const_cast(this)->m_MinorVersion=XMLString::replicate(XML_ONE); - MARSHALL_INTEGER_ATTRIB(MinorVersion,MINORVERSION,NULL); + MARSHALL_INTEGER_ATTRIB(MinorVersion,MINORVERSION,nullptr); if (!m_AssertionID) const_cast(this)->m_AssertionID=SAMLConfig::getConfig().generateIdentifier(); - domElement->setAttributeNS(NULL, ASSERTIONID_ATTRIB_NAME, m_AssertionID); - if (*m_MinorVersion!=chDigit_0) - domElement->setIdAttributeNS(NULL, ASSERTIONID_ATTRIB_NAME); - MARSHALL_STRING_ATTRIB(Issuer,ISSUER,NULL); + domElement->setAttributeNS(nullptr, ASSERTIONID_ATTRIB_NAME, m_AssertionID); + if (*m_MinorVersion!=chDigit_0) { +#ifdef XMLTOOLING_XERCESC_BOOLSETIDATTRIBUTE + domElement->setIdAttributeNS(nullptr, ASSERTIONID_ATTRIB_NAME, true); +#else + domElement->setIdAttributeNS(nullptr, ASSERTIONID_ATTRIB_NAME); +#endif + } + MARSHALL_STRING_ATTRIB(Issuer,ISSUER,nullptr); if (!m_IssueInstant) { - const_cast(this)->m_IssueInstantEpoch=time(NULL); + const_cast(this)->m_IssueInstantEpoch=time(nullptr); const_cast(this)->m_IssueInstant=new DateTime(m_IssueInstantEpoch); } - MARSHALL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL); + MARSHALL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,nullptr); } void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { @@ -1088,20 +1111,25 @@ namespace opensaml { void unmarshallAttributes(const DOMElement* domElement) { // Standard processing, but then we check IDness. AbstractXMLObjectUnmarshaller::unmarshallAttributes(domElement); - if (m_AssertionID && (!m_MinorVersion || *m_MinorVersion!=chDigit_0)) - const_cast(domElement)->setIdAttributeNS(NULL, ASSERTIONID_ATTRIB_NAME); + if (m_AssertionID && (!m_MinorVersion || *m_MinorVersion!=chDigit_0)) { +#ifdef XMLTOOLING_XERCESC_BOOLSETIDATTRIBUTE + const_cast(domElement)->setIdAttributeNS(nullptr, ASSERTIONID_ATTRIB_NAME, true); +#else + const_cast(domElement)->setIdAttributeNS(nullptr, ASSERTIONID_ATTRIB_NAME); +#endif + } } void processAttribute(const DOMAttr* attribute) { static const XMLCh MAJORVERSION[] = UNICODE_LITERAL_12(M,a,j,o,r,V,e,r,s,i,o,n); - if (XMLHelper::isNodeNamed(attribute,NULL,MAJORVERSION)) { + if (XMLHelper::isNodeNamed(attribute,nullptr,MAJORVERSION)) { if (!XMLString::equals(attribute->getValue(),XML_ONE)) throw UnmarshallingException("Assertion has invalid major version."); } - PROC_INTEGER_ATTRIB(MinorVersion,MINORVERSION,NULL); - PROC_STRING_ATTRIB(AssertionID,ASSERTIONID,NULL); - PROC_STRING_ATTRIB(Issuer,ISSUER,NULL); - PROC_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL); + PROC_INTEGER_ATTRIB(MinorVersion,MINORVERSION,nullptr); + PROC_STRING_ATTRIB(AssertionID,ASSERTIONID,nullptr); + PROC_STRING_ATTRIB(Issuer,ISSUER,nullptr); + PROC_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,nullptr); } };