X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=saml%2Fsaml2%2Fcore%2Fimpl%2FProtocols20Impl.cpp;h=29c8252940d2ac04b91d55e5aa8a6b23cd8f15fe;hb=932cfaae2176c2eba1a9938dc420591a9551a7f3;hp=6cf699a3d8b5b5da8427e521f03830850cf99310;hpb=0935fa885920689f19747229d5665ce8050a595b;p=shibboleth%2Fcpp-opensaml.git diff --git a/saml/saml2/core/impl/Protocols20Impl.cpp b/saml/saml2/core/impl/Protocols20Impl.cpp index 6cf699a..29c8252 100644 --- a/saml/saml2/core/impl/Protocols20Impl.cpp +++ b/saml/saml2/core/impl/Protocols20Impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2006 Internet2 + * Copyright 2001-2007 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,9 +25,7 @@ #include "saml/encryption/EncryptedKeyResolver.h" #include "saml2/core/Protocols.h" -#include #include -#include #include #include #include @@ -45,6 +43,11 @@ using namespace xmlsignature; using namespace xmlencryption; using namespace xmltooling; using namespace std; +using xmlconstants::XMLSIG_NS; +using xmlconstants::XMLENC_NS; +using xmlconstants::XML_BOOL_NULL; +using samlconstants::SAML20_NS; +using samlconstants::SAML20P_NS; #if defined (_MSC_VER) #pragma warning( push ) @@ -65,7 +68,7 @@ namespace opensaml { //TODO need unit test for this, using objects from another namespace class SAML_DLLLOCAL ExtensionsImpl : public virtual Extensions, - public AbstractElementProxy, + public AbstractComplexElement, public AbstractDOMCachingXMLObject, public AbstractXMLObjectMarshaller, public AbstractXMLObjectUnmarshaller @@ -78,22 +81,21 @@ namespace opensaml { } ExtensionsImpl(const ExtensionsImpl& src) - : AbstractXMLObject(src), AbstractElementProxy(src), AbstractDOMCachingXMLObject(src) { - for (list::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) { - if (*i) { - getXMLObjects().push_back((*i)->clone()); - } - } + : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { + VectorOf(XMLObject) v=getUnknownXMLObjects(); + for (vector::const_iterator i=src.m_UnknownXMLObjects.begin(); i!=src.m_UnknownXMLObjects.end(); ++i) + v.push_back((*i)->clone()); } IMPL_XMLOBJECT_CLONE(Extensions); + IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end()); protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { // Unknown child. const XMLCh* nsURI=root->getNamespaceURI(); - if (!XMLString::equals(nsURI,SAMLConstants::SAML20P_NS) && nsURI && *nsURI) { - getXMLObjects().push_back(childXMLObject); + if (!XMLString::equals(nsURI,SAML20P_NS) && nsURI && *nsURI) { + getUnknownXMLObjects().push_back(childXMLObject); return; } @@ -122,7 +124,8 @@ namespace opensaml { init(); } - StatusCodeImpl(const StatusCodeImpl& src) : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src) { + StatusCodeImpl(const StatusCodeImpl& src) + : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { init(); setValue(src.getValue()); if (src.getStatusCode()) @@ -139,7 +142,7 @@ namespace opensaml { } void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_CHILD(StatusCode,SAMLConstants::SAML20P_NS,false); + PROC_TYPED_CHILD(StatusCode,SAML20P_NS,false); AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); } @@ -162,22 +165,19 @@ namespace opensaml { StatusDetailImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - StatusDetailImpl(const StatusDetailImpl& src) : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src) { - VectorOf(XMLObject) v=getDetails(); - for (vector::const_iterator i=src.m_Details.begin(); i!=src.m_Details.end(); i++) { - if (*i) { - v.push_back((*i)->clone()); - } - } - } + StatusDetailImpl(const StatusDetailImpl& src) + : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { + VectorOf(XMLObject) v=getUnknownXMLObjects(); + for (vector::const_iterator i=src.m_UnknownXMLObjects.begin(); i!=src.m_UnknownXMLObjects.end(); ++i) + v.push_back((*i)->clone()); + } IMPL_XMLOBJECT_CLONE(StatusDetail); - IMPL_XMLOBJECT_CHILDREN(Detail,m_children.end()); + IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end()); protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - getDetails().push_back(childXMLObject); - AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); + getUnknownXMLObjects().push_back(childXMLObject); } }; @@ -205,12 +205,12 @@ namespace opensaml { virtual ~StatusImpl() { } StatusImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) - : AbstractXMLObject(nsURI, localName, prefix, schemaType) - { - init(); + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + init(); } - StatusImpl(const StatusImpl& src) : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src) { + StatusImpl(const StatusImpl& src) + : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { init(); if (src.getStatusCode()) setStatusCode(src.getStatusCode()->cloneStatusCode()); @@ -228,16 +228,16 @@ namespace opensaml { protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_CHILD(StatusCode,SAMLConstants::SAML20P_NS,false); - PROC_TYPED_CHILD(StatusMessage,SAMLConstants::SAML20P_NS,false); - PROC_TYPED_CHILD(StatusDetail,SAMLConstants::SAML20P_NS,false); + PROC_TYPED_CHILD(StatusCode,SAML20P_NS,false); + PROC_TYPED_CHILD(StatusMessage,SAML20P_NS,false); + PROC_TYPED_CHILD(StatusDetail,SAML20P_NS,false); AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); } }; - class SAML_DLLLOCAL RequestImpl : public virtual Request, + class SAML_DLLLOCAL RequestAbstractTypeImpl : public virtual RequestAbstractType, public AbstractComplexElement, public AbstractDOMCachingXMLObject, public AbstractXMLObjectMarshaller, @@ -262,11 +262,11 @@ namespace opensaml { ++m_pos_Extensions; } protected: - RequestImpl() { + RequestAbstractTypeImpl() { init(); } public: - virtual ~RequestImpl() { + virtual ~RequestAbstractTypeImpl() { XMLString::release(&m_ID); XMLString::release(&m_Version); XMLString::release(&m_Destination); @@ -274,13 +274,13 @@ namespace opensaml { delete m_IssueInstant; } - RequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) - : AbstractXMLObject(nsURI, localName, prefix, schemaType) - { + RequestAbstractTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - RequestImpl(const RequestImpl& src) : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src) { + RequestAbstractTypeImpl(const RequestAbstractTypeImpl& src) + : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { init(); setID(src.getID()); setVersion(src.getVersion()); @@ -295,10 +295,6 @@ namespace opensaml { setExtensions(src.getExtensions()->cloneExtensions()); } - const XMLCh* getId() const { - return getID(); - } - //IMPL_TYPED_CHILD(Signature); // Need customized setter. protected: @@ -317,9 +313,8 @@ namespace opensaml { m_Signature->setContentReference(new opensaml::ContentReference(*this)); } - IMPL_XMLOBJECT_CLONE(Request); IMPL_STRING_ATTRIB(Version); - IMPL_STRING_ATTRIB(ID); + IMPL_ID_ATTRIB(ID); IMPL_DATETIME_ATTRIB(IssueInstant,0); IMPL_STRING_ATTRIB(Destination); IMPL_STRING_ATTRIB(Consent); @@ -329,14 +324,14 @@ namespace opensaml { protected: void marshallAttributes(DOMElement* domElement) const { if (!m_Version) - const_cast(this)->m_Version=XMLString::transcode("2.0"); + const_cast(this)->m_Version=XMLString::transcode("2.0"); MARSHALL_STRING_ATTRIB(Version,VER,NULL); if (!m_ID) - const_cast(this)->m_ID=SAMLConfig::getConfig().generateIdentifier(); + const_cast(this)->m_ID=SAMLConfig::getConfig().generateIdentifier(); MARSHALL_ID_ATTRIB(ID,ID,NULL); if (!m_IssueInstant) { - const_cast(this)->m_IssueInstantEpoch=time(NULL); - const_cast(this)->m_IssueInstant=new DateTime(m_IssueInstantEpoch); + const_cast(this)->m_IssueInstantEpoch=time(NULL); + const_cast(this)->m_IssueInstant=new DateTime(m_IssueInstantEpoch); } MARSHALL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL); MARSHALL_STRING_ATTRIB(Destination,DESTINATION,NULL); @@ -344,9 +339,9 @@ namespace opensaml { } void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_FOREIGN_CHILD(Issuer,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_FOREIGN_CHILD(Signature,xmlsignature,XMLConstants::XMLSIG_NS,false); - PROC_TYPED_CHILD(Extensions,SAMLConstants::SAML20P_NS,false); + PROC_TYPED_FOREIGN_CHILD(Issuer,saml2,SAML20_NS,false); + PROC_TYPED_FOREIGN_CHILD(Signature,xmlsignature,XMLSIG_NS,false); + PROC_TYPED_CHILD(Extensions,SAML20P_NS,false); AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); } @@ -361,7 +356,7 @@ namespace opensaml { }; - class SAML_DLLLOCAL AssertionIDRequestImpl : public virtual AssertionIDRequest, public RequestImpl + class SAML_DLLLOCAL AssertionIDRequestImpl : public virtual AssertionIDRequest, public RequestAbstractTypeImpl { public: virtual ~AssertionIDRequestImpl() { } @@ -369,7 +364,7 @@ namespace opensaml { AssertionIDRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - AssertionIDRequestImpl(const AssertionIDRequestImpl& src) : AbstractXMLObject(src), RequestImpl(src) { + AssertionIDRequestImpl(const AssertionIDRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) { VectorOf(AssertionIDRef) v=getAssertionIDRefs(); for (vector::const_iterator i=src.m_AssertionIDRefs.begin(); i!=src.m_AssertionIDRefs.end(); i++) { if (*i) { @@ -380,16 +375,20 @@ namespace opensaml { } IMPL_XMLOBJECT_CLONE(AssertionIDRequest); + RequestAbstractType* cloneRequestAbstractType() const { + return cloneAssertionIDRequest(); + } + IMPL_TYPED_FOREIGN_CHILDREN(AssertionIDRef,saml2,m_children.end()); protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_FOREIGN_CHILDREN(AssertionIDRef,saml2,SAMLConstants::SAML20_NS,false); - RequestImpl::processChildElement(childXMLObject,root); + PROC_TYPED_FOREIGN_CHILDREN(AssertionIDRef,saml2,SAML20_NS,false); + RequestAbstractTypeImpl::processChildElement(childXMLObject,root); } }; - class SAML_DLLLOCAL SubjectQueryImpl : public virtual SubjectQuery, public RequestImpl + class SAML_DLLLOCAL SubjectQueryImpl : public virtual SubjectQuery, public RequestAbstractTypeImpl { void init() { @@ -411,19 +410,18 @@ namespace opensaml { init(); } - SubjectQueryImpl(const SubjectQueryImpl& src) : AbstractXMLObject(src), RequestImpl(src) { + SubjectQueryImpl(const SubjectQueryImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) { init(); if (src.getSubject()) setSubject(src.getSubject()->cloneSubject()); } - IMPL_XMLOBJECT_CLONE(SubjectQuery); IMPL_TYPED_FOREIGN_CHILD(Subject,saml2); protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_FOREIGN_CHILD(Subject,saml2,SAMLConstants::SAML20_NS,false); - RequestImpl::processChildElement(childXMLObject,root); + PROC_TYPED_FOREIGN_CHILD(Subject,saml2,SAML20_NS,false); + RequestAbstractTypeImpl::processChildElement(childXMLObject,root); } }; @@ -443,12 +441,12 @@ namespace opensaml { } RequestedAuthnContextImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) - : AbstractXMLObject(nsURI, localName, prefix, schemaType) - { + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - RequestedAuthnContextImpl(const RequestedAuthnContextImpl& src) : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src) { + RequestedAuthnContextImpl(const RequestedAuthnContextImpl& src) + : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { init(); setComparison(src.getComparison()); for (list::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) { @@ -479,8 +477,8 @@ namespace opensaml { } void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_FOREIGN_CHILDREN(AuthnContextClassRef,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_FOREIGN_CHILDREN(AuthnContextDeclRef,saml2,SAMLConstants::SAML20_NS,false); + PROC_TYPED_FOREIGN_CHILDREN(AuthnContextClassRef,saml2,SAML20_NS,false); + PROC_TYPED_FOREIGN_CHILDREN(AuthnContextDeclRef,saml2,SAML20_NS,false); AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); } @@ -520,6 +518,13 @@ namespace opensaml { } IMPL_XMLOBJECT_CLONE(AuthnQuery); + SubjectQuery* cloneSubjectQuery() const { + return cloneAuthnQuery(); + } + RequestAbstractType* cloneRequestAbstractType() const { + return cloneAuthnQuery(); + } + IMPL_STRING_ATTRIB(SessionIndex); IMPL_TYPED_CHILD(RequestedAuthnContext); @@ -530,7 +535,7 @@ namespace opensaml { } void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_CHILD(RequestedAuthnContext,SAMLConstants::SAML20P_NS,false); + PROC_TYPED_CHILD(RequestedAuthnContext,SAML20P_NS,false); SubjectQueryImpl::processChildElement(childXMLObject,root); } void processAttribute(const DOMAttr* attribute) { @@ -561,11 +566,18 @@ namespace opensaml { } IMPL_XMLOBJECT_CLONE(AttributeQuery); + SubjectQuery* cloneSubjectQuery() const { + return cloneAttributeQuery(); + } + RequestAbstractType* cloneRequestAbstractType() const { + return cloneAttributeQuery(); + } + IMPL_TYPED_FOREIGN_CHILDREN(Attribute,saml2,m_children.end()); protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_FOREIGN_CHILDREN(Attribute,saml2,SAMLConstants::SAML20_NS,false); + PROC_TYPED_FOREIGN_CHILDREN(Attribute,saml2,SAML20_NS,false); SubjectQueryImpl::processChildElement(childXMLObject,root); } }; @@ -586,8 +598,7 @@ namespace opensaml { } AuthzDecisionQueryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) - : AbstractXMLObject(nsURI, localName, prefix, schemaType) - { + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } @@ -608,6 +619,13 @@ namespace opensaml { } IMPL_XMLOBJECT_CLONE(AuthzDecisionQuery); + SubjectQuery* cloneSubjectQuery() const { + return cloneAuthzDecisionQuery(); + } + RequestAbstractType* cloneRequestAbstractType() const { + return cloneAuthzDecisionQuery(); + } + IMPL_STRING_ATTRIB(Resource); IMPL_TYPED_FOREIGN_CHILDREN(Action,saml2,m_pos_Evidence); IMPL_TYPED_FOREIGN_CHILD(Evidence,saml2); @@ -619,8 +637,8 @@ namespace opensaml { } void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_FOREIGN_CHILD(Evidence,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_FOREIGN_CHILDREN(Action,saml2,SAMLConstants::SAML20_NS,false); + PROC_TYPED_FOREIGN_CHILD(Evidence,saml2,SAML20_NS,false); + PROC_TYPED_FOREIGN_CHILDREN(Action,saml2,SAML20_NS,false); SubjectQueryImpl::processChildElement(childXMLObject,root); } void processAttribute(const DOMAttr* attribute) { @@ -630,7 +648,7 @@ namespace opensaml { }; class SAML_DLLLOCAL NameIDPolicyImpl : public virtual NameIDPolicy, - public AbstractChildlessElement, + public AbstractSimpleElement, public AbstractDOMCachingXMLObject, public AbstractXMLObjectMarshaller, public AbstractXMLObjectUnmarshaller @@ -638,7 +656,7 @@ namespace opensaml { void init() { m_Format=NULL; m_SPNameQualifier=NULL; - m_AllowCreate=XMLConstants::XML_BOOL_NULL; + m_AllowCreate=XML_BOOL_NULL; } public: virtual ~NameIDPolicyImpl() @@ -653,7 +671,8 @@ namespace opensaml { init(); } - NameIDPolicyImpl(const NameIDPolicyImpl& src) : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src) { + NameIDPolicyImpl(const NameIDPolicyImpl& src) + : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) { init(); setFormat(src.getFormat()); setSPNameQualifier(src.getSPNameQualifier()); @@ -681,7 +700,7 @@ namespace opensaml { }; class SAML_DLLLOCAL IDPEntryImpl : public virtual IDPEntry, - public AbstractChildlessElement, + public AbstractSimpleElement, public AbstractDOMCachingXMLObject, public AbstractXMLObjectMarshaller, public AbstractXMLObjectUnmarshaller @@ -705,7 +724,8 @@ namespace opensaml { init(); } - IDPEntryImpl(const IDPEntryImpl& src) : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src) { + IDPEntryImpl(const IDPEntryImpl& src) + : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) { init(); setProviderID(src.getProviderID()); setName(src.getName()); @@ -775,8 +795,8 @@ namespace opensaml { protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_CHILDREN(IDPEntry,SAMLConstants::SAML20P_NS,false); - PROC_TYPED_CHILD(GetComplete,SAMLConstants::SAML20P_NS,false); + PROC_TYPED_CHILDREN(IDPEntry,SAML20P_NS,false); + PROC_TYPED_CHILD(GetComplete,SAML20P_NS,false); AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); } }; @@ -834,8 +854,8 @@ namespace opensaml { } void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_CHILD(IDPList,SAMLConstants::SAML20P_NS,false); - PROC_TYPED_CHILDREN(RequesterID,SAMLConstants::SAML20P_NS,false); + PROC_TYPED_CHILD(IDPList,SAML20P_NS,false); + PROC_TYPED_CHILDREN(RequesterID,SAML20P_NS,false); AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); } @@ -845,11 +865,11 @@ namespace opensaml { } }; - class SAML_DLLLOCAL AuthnRequestImpl : public virtual AuthnRequest, public RequestImpl + class SAML_DLLLOCAL AuthnRequestImpl : public virtual AuthnRequest, public RequestAbstractTypeImpl { void init() { - m_ForceAuthn=XMLConstants::XML_BOOL_NULL; - m_IsPassive=XMLConstants::XML_BOOL_NULL; + m_ForceAuthn=XML_BOOL_NULL; + m_IsPassive=XML_BOOL_NULL; m_ProtocolBinding=NULL; m_AssertionConsumerServiceIndex=NULL; m_AssertionConsumerServiceURL=NULL; @@ -893,7 +913,7 @@ namespace opensaml { init(); } - AuthnRequestImpl(const AuthnRequestImpl& src) : AbstractXMLObject(src), RequestImpl(src) { + AuthnRequestImpl(const AuthnRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) { init(); ForceAuthn(m_ForceAuthn); @@ -917,6 +937,9 @@ namespace opensaml { } IMPL_XMLOBJECT_CLONE(AuthnRequest); + RequestAbstractType* cloneRequestAbstractType() const { + return cloneAuthnRequest(); + } IMPL_BOOLEAN_ATTRIB(ForceAuthn); IMPL_BOOLEAN_ATTRIB(IsPassive); @@ -941,16 +964,16 @@ namespace opensaml { MARSHALL_STRING_ATTRIB(AssertionConsumerServiceURL,ASSERTIONCONSUMERSERVICEURL,NULL); MARSHALL_INTEGER_ATTRIB(AttributeConsumingServiceIndex,ATTRIBUTECONSUMINGSERVICEINDEX,NULL); MARSHALL_STRING_ATTRIB(ProviderName,PROVIDERNAME,NULL); - RequestImpl::marshallAttributes(domElement); + RequestAbstractTypeImpl::marshallAttributes(domElement); } void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_FOREIGN_CHILD(Subject,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_CHILD(NameIDPolicy,SAMLConstants::SAML20P_NS,false); - PROC_TYPED_FOREIGN_CHILD(Conditions,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_CHILD(RequestedAuthnContext,SAMLConstants::SAML20P_NS,false); - PROC_TYPED_CHILD(Scoping,SAMLConstants::SAML20P_NS,false); - RequestImpl::processChildElement(childXMLObject,root); + PROC_TYPED_FOREIGN_CHILD(Subject,saml2,SAML20_NS,false); + PROC_TYPED_CHILD(NameIDPolicy,SAML20P_NS,false); + PROC_TYPED_FOREIGN_CHILD(Conditions,saml2,SAML20_NS,false); + PROC_TYPED_CHILD(RequestedAuthnContext,SAML20P_NS,false); + PROC_TYPED_CHILD(Scoping,SAML20P_NS,false); + RequestAbstractTypeImpl::processChildElement(childXMLObject,root); } void processAttribute(const DOMAttr* attribute) { PROC_BOOLEAN_ATTRIB(ForceAuthn,FORCEAUTHN,NULL); @@ -960,11 +983,11 @@ namespace opensaml { PROC_STRING_ATTRIB(AssertionConsumerServiceURL,ASSERTIONCONSUMERSERVICEURL,NULL); PROC_INTEGER_ATTRIB(AttributeConsumingServiceIndex,ATTRIBUTECONSUMINGSERVICEINDEX,NULL); PROC_STRING_ATTRIB(ProviderName,PROVIDERNAME,NULL); - RequestImpl::processAttribute(attribute); + RequestAbstractTypeImpl::processAttribute(attribute); } }; - class SAML_DLLLOCAL StatusResponseImpl : public virtual StatusResponse, + class SAML_DLLLOCAL StatusResponseTypeImpl : public virtual StatusResponseType, public AbstractComplexElement, public AbstractDOMCachingXMLObject, public AbstractXMLObjectMarshaller, @@ -994,11 +1017,11 @@ namespace opensaml { ++m_pos_Status; } protected: - StatusResponseImpl() { + StatusResponseTypeImpl() { init(); } public: - virtual ~StatusResponseImpl() { + virtual ~StatusResponseTypeImpl() { XMLString::release(&m_ID); XMLString::release(&m_InResponseTo); XMLString::release(&m_Version); @@ -1007,13 +1030,14 @@ namespace opensaml { delete m_IssueInstant; } - StatusResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + StatusResponseTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - StatusResponseImpl(const StatusResponseImpl& src) : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src) { + StatusResponseTypeImpl(const StatusResponseTypeImpl& src) + : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { init(); setID(src.getID()); setInResponseTo(src.getInResponseTo()); @@ -1031,10 +1055,6 @@ namespace opensaml { setStatus(src.getStatus()->cloneStatus()); } - const XMLCh* getId() const { - return getID(); - } - //IMPL_TYPED_CHILD(Signature); // Need customized setter. protected: @@ -1053,9 +1073,8 @@ namespace opensaml { m_Signature->setContentReference(new opensaml::ContentReference(*this)); } - IMPL_XMLOBJECT_CLONE(StatusResponse); IMPL_STRING_ATTRIB(Version); - IMPL_STRING_ATTRIB(ID); + IMPL_ID_ATTRIB(ID); IMPL_STRING_ATTRIB(InResponseTo); IMPL_DATETIME_ATTRIB(IssueInstant,0); IMPL_STRING_ATTRIB(Destination); @@ -1067,14 +1086,14 @@ namespace opensaml { protected: void marshallAttributes(DOMElement* domElement) const { if (!m_Version) - const_cast(this)->m_Version=XMLString::transcode("2.0"); + const_cast(this)->m_Version=XMLString::transcode("2.0"); MARSHALL_STRING_ATTRIB(Version,VER,NULL); if (!m_ID) - const_cast(this)->m_ID=SAMLConfig::getConfig().generateIdentifier(); + const_cast(this)->m_ID=SAMLConfig::getConfig().generateIdentifier(); MARSHALL_ID_ATTRIB(ID,ID,NULL); if (!m_IssueInstant) { - const_cast(this)->m_IssueInstantEpoch=time(NULL); - const_cast(this)->m_IssueInstant=new DateTime(m_IssueInstantEpoch); + const_cast(this)->m_IssueInstantEpoch=time(NULL); + const_cast(this)->m_IssueInstant=new DateTime(m_IssueInstantEpoch); } MARSHALL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL); MARSHALL_STRING_ATTRIB(Destination,DESTINATION,NULL); @@ -1083,10 +1102,10 @@ namespace opensaml { } void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_FOREIGN_CHILD(Issuer,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_FOREIGN_CHILD(Signature,xmlsignature,XMLConstants::XMLSIG_NS,false); - PROC_TYPED_CHILD(Extensions,SAMLConstants::SAML20P_NS,false); - PROC_TYPED_CHILD(Status,SAMLConstants::SAML20P_NS,false); + PROC_TYPED_FOREIGN_CHILD(Issuer,saml2,SAML20_NS,false); + PROC_TYPED_FOREIGN_CHILD(Signature,xmlsignature,XMLSIG_NS,false); + PROC_TYPED_CHILD(Extensions,SAML20P_NS,false); + PROC_TYPED_CHILD(Status,SAML20P_NS,false); AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); } @@ -1101,7 +1120,7 @@ namespace opensaml { } }; - class SAML_DLLLOCAL ResponseImpl : public virtual Response, public StatusResponseImpl + class SAML_DLLLOCAL ResponseImpl : public virtual Response, public StatusResponseTypeImpl { public: virtual ~ResponseImpl() { } @@ -1109,7 +1128,7 @@ namespace opensaml { ResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - ResponseImpl(const ResponseImpl& src) : AbstractXMLObject(src), StatusResponseImpl(src) { + ResponseImpl(const ResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) { for (list::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) { if (*i) { Assertion* assertion=dynamic_cast(*i); @@ -1128,18 +1147,22 @@ namespace opensaml { } IMPL_XMLOBJECT_CLONE(Response); + StatusResponseType* cloneStatusResponseType() const { + return cloneResponse(); + } + IMPL_TYPED_FOREIGN_CHILDREN(Assertion,saml2,m_children.end()); IMPL_TYPED_FOREIGN_CHILDREN(EncryptedAssertion,saml2,m_children.end()); protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_FOREIGN_CHILDREN(Assertion,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_FOREIGN_CHILDREN(EncryptedAssertion,saml2,SAMLConstants::SAML20_NS,false); - StatusResponseImpl::processChildElement(childXMLObject,root); + PROC_TYPED_FOREIGN_CHILDREN(Assertion,saml2,SAML20_NS,false); + PROC_TYPED_FOREIGN_CHILDREN(EncryptedAssertion,saml2,SAML20_NS,false); + StatusResponseTypeImpl::processChildElement(childXMLObject,root); } }; - class SAML_DLLLOCAL ArtifactResolveImpl : public virtual ArtifactResolve, public RequestImpl + class SAML_DLLLOCAL ArtifactResolveImpl : public virtual ArtifactResolve, public RequestAbstractTypeImpl { void init() { m_Artifact=NULL; @@ -1156,23 +1179,27 @@ namespace opensaml { init(); } - ArtifactResolveImpl(const ArtifactResolveImpl& src) : AbstractXMLObject(src), RequestImpl(src) { + ArtifactResolveImpl(const ArtifactResolveImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) { init(); if(src.getArtifact()) setArtifact(src.getArtifact()->cloneArtifact()); } IMPL_XMLOBJECT_CLONE(ArtifactResolve); + RequestAbstractType* cloneRequestAbstractType() const { + return cloneArtifactResolve(); + } + IMPL_TYPED_CHILD(Artifact); protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_CHILD(Artifact,SAMLConstants::SAML20P_NS,false); - RequestImpl::processChildElement(childXMLObject,root); + PROC_TYPED_CHILD(Artifact,SAML20P_NS,false); + RequestAbstractTypeImpl::processChildElement(childXMLObject,root); } }; - class SAML_DLLLOCAL ArtifactResponseImpl : public virtual ArtifactResponse, public StatusResponseImpl + class SAML_DLLLOCAL ArtifactResponseImpl : public virtual ArtifactResponse, public StatusResponseTypeImpl { void init() { m_Payload=NULL; @@ -1189,7 +1216,7 @@ namespace opensaml { init(); } - ArtifactResponseImpl(const ArtifactResponseImpl& src) : AbstractXMLObject(src), StatusResponseImpl(src) { + ArtifactResponseImpl(const ArtifactResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) { init(); if (src.getPayload()) setPayload(getPayload()->clone()); @@ -1197,24 +1224,28 @@ namespace opensaml { } IMPL_XMLOBJECT_CLONE(ArtifactResponse); + StatusResponseType* cloneStatusResponseType() const { + return cloneArtifactResponse(); + } + IMPL_XMLOBJECT_CHILD(Payload); protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - // These are valid elements for the parent StatusResponse, so don't process these. + // These are valid elements for the parent StatusResponseType, so don't process these. // If not one of these, then it must be the payload. if ( - ! XMLHelper::isNodeNamed(root,SAMLConstants::SAML20_NS,saml2::Issuer::LOCAL_NAME) && - ! XMLHelper::isNodeNamed(root,XMLConstants::XMLSIG_NS,xmlsignature::Signature::LOCAL_NAME) && - ! XMLHelper::isNodeNamed(root,SAMLConstants::SAML20P_NS,saml2p::Extensions::LOCAL_NAME) && - ! XMLHelper::isNodeNamed(root,SAMLConstants::SAML20P_NS,saml2p::Status::LOCAL_NAME) + ! XMLHelper::isNodeNamed(root,SAML20_NS,saml2::Issuer::LOCAL_NAME) && + ! XMLHelper::isNodeNamed(root,XMLSIG_NS,xmlsignature::Signature::LOCAL_NAME) && + ! XMLHelper::isNodeNamed(root,SAML20P_NS,saml2p::Extensions::LOCAL_NAME) && + ! XMLHelper::isNodeNamed(root,SAML20P_NS,saml2p::Status::LOCAL_NAME) ) { setPayload(childXMLObject); return; } - StatusResponseImpl::processChildElement(childXMLObject,root); + StatusResponseTypeImpl::processChildElement(childXMLObject,root); } }; @@ -1245,7 +1276,8 @@ namespace opensaml { init(); } - NewEncryptedIDImpl(const NewEncryptedIDImpl& src) : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src) { + NewEncryptedIDImpl(const NewEncryptedIDImpl& src) + : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { init(); if (src.getEncryptedData()) setEncryptedData(src.getEncryptedData()->cloneEncryptedData()); @@ -1285,14 +1317,14 @@ namespace opensaml { protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_FOREIGN_CHILD(EncryptedData,xmlencryption,XMLConstants::XMLENC_NS,false); - PROC_TYPED_FOREIGN_CHILDREN(EncryptedKey,xmlencryption,XMLConstants::XMLENC_NS,false); + PROC_TYPED_FOREIGN_CHILD(EncryptedData,xmlencryption,XMLENC_NS,false); + PROC_TYPED_FOREIGN_CHILDREN(EncryptedKey,xmlencryption,XMLENC_NS,false); AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); } }; class SAML_DLLLOCAL TerminateImpl : public virtual Terminate, - public AbstractChildlessElement, + public AbstractSimpleElement, public AbstractDOMCachingXMLObject, public AbstractXMLObjectMarshaller, public AbstractXMLObjectUnmarshaller @@ -1303,7 +1335,8 @@ namespace opensaml { TerminateImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - TerminateImpl(const TerminateImpl& src) : AbstractXMLObject(src), AbstractDOMCachingXMLObject(src) { + TerminateImpl(const TerminateImpl& src) + : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) { } IMPL_XMLOBJECT_CLONE(Terminate); @@ -1312,7 +1345,7 @@ namespace opensaml { // has no attributes or children }; - class SAML_DLLLOCAL ManageNameIDRequestImpl : public virtual ManageNameIDRequest, public RequestImpl + class SAML_DLLLOCAL ManageNameIDRequestImpl : public virtual ManageNameIDRequest, public RequestAbstractTypeImpl { void init() { m_NameID=NULL; @@ -1346,7 +1379,7 @@ namespace opensaml { init(); } - ManageNameIDRequestImpl(const ManageNameIDRequestImpl& src) : AbstractXMLObject(src), RequestImpl(src) { + ManageNameIDRequestImpl(const ManageNameIDRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) { init(); if (src.getNameID()) @@ -1363,6 +1396,9 @@ namespace opensaml { } IMPL_XMLOBJECT_CLONE(ManageNameIDRequest); + RequestAbstractType* cloneRequestAbstractType() const { + return cloneManageNameIDRequest(); + } IMPL_TYPED_FOREIGN_CHILD(NameID,saml2); IMPL_TYPED_FOREIGN_CHILD(EncryptedID,saml2); @@ -1372,30 +1408,33 @@ namespace opensaml { protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_CHILD(NewID,SAMLConstants::SAML20P_NS,false); - PROC_TYPED_CHILD(NewEncryptedID,SAMLConstants::SAML20P_NS,false); - PROC_TYPED_CHILD(Terminate,SAMLConstants::SAML20P_NS,false); - RequestImpl::processChildElement(childXMLObject,root); + PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAML20_NS,false); + PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAML20_NS,false); + PROC_TYPED_CHILD(NewID,SAML20P_NS,false); + PROC_TYPED_CHILD(NewEncryptedID,SAML20P_NS,false); + PROC_TYPED_CHILD(Terminate,SAML20P_NS,false); + RequestAbstractTypeImpl::processChildElement(childXMLObject,root); } }; - class SAML_DLLLOCAL ManageNameIDResponseImpl : public virtual ManageNameIDResponse, public StatusResponseImpl + class SAML_DLLLOCAL ManageNameIDResponseImpl : public virtual ManageNameIDResponse, public StatusResponseTypeImpl { - public: - virtual ~ManageNameIDResponseImpl() { } - - ManageNameIDResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) - : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - - ManageNameIDResponseImpl(const ManageNameIDResponseImpl& src) : AbstractXMLObject(src), StatusResponseImpl(src) { - } + public: + virtual ~ManageNameIDResponseImpl() { } - IMPL_XMLOBJECT_CLONE(ManageNameIDResponse); + ManageNameIDResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } + + ManageNameIDResponseImpl(const ManageNameIDResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) { + } + + IMPL_XMLOBJECT_CLONE(ManageNameIDResponse); + StatusResponseType* cloneStatusResponseType() const { + return cloneManageNameIDResponse(); + } }; - class SAML_DLLLOCAL LogoutRequestImpl : public virtual LogoutRequest, public RequestImpl + class SAML_DLLLOCAL LogoutRequestImpl : public virtual LogoutRequest, public RequestAbstractTypeImpl { void init() { m_Reason=NULL; @@ -1427,7 +1466,7 @@ namespace opensaml { init(); } - LogoutRequestImpl(const LogoutRequestImpl& src) : AbstractXMLObject(src), RequestImpl(src) { + LogoutRequestImpl(const LogoutRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) { init(); setReason(src.getReason()); @@ -1452,6 +1491,9 @@ namespace opensaml { } IMPL_XMLOBJECT_CLONE(LogoutRequest); + RequestAbstractType* cloneRequestAbstractType() const { + return cloneLogoutRequest(); + } IMPL_STRING_ATTRIB(Reason); IMPL_DATETIME_ATTRIB(NotOnOrAfter,SAMLTIME_MAX); @@ -1464,39 +1506,42 @@ namespace opensaml { void marshallAttributes(DOMElement* domElement) const { MARSHALL_STRING_ATTRIB(Reason,REASON,NULL); MARSHALL_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL); - RequestImpl::marshallAttributes(domElement); + RequestAbstractTypeImpl::marshallAttributes(domElement); } void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_FOREIGN_CHILD(BaseID,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_CHILDREN(SessionIndex,SAMLConstants::SAML20P_NS,false); - RequestImpl::processChildElement(childXMLObject,root); + PROC_TYPED_FOREIGN_CHILD(BaseID,saml2,SAML20_NS,false); + PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAML20_NS,false); + PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAML20_NS,false); + PROC_TYPED_CHILDREN(SessionIndex,SAML20P_NS,false); + RequestAbstractTypeImpl::processChildElement(childXMLObject,root); } void processAttribute(const DOMAttr* attribute) { PROC_STRING_ATTRIB(Reason,REASON,NULL); PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL); - RequestImpl::processAttribute(attribute); + RequestAbstractTypeImpl::processAttribute(attribute); } }; - class SAML_DLLLOCAL LogoutResponseImpl : public virtual LogoutResponse, public StatusResponseImpl + class SAML_DLLLOCAL LogoutResponseImpl : public virtual LogoutResponse, public StatusResponseTypeImpl { - public: - virtual ~LogoutResponseImpl() { } - - LogoutResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) - : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - - LogoutResponseImpl(const LogoutResponseImpl& src) : AbstractXMLObject(src), StatusResponseImpl(src) { - } + public: + virtual ~LogoutResponseImpl() { } + + LogoutResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } + + LogoutResponseImpl(const LogoutResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) { + } - IMPL_XMLOBJECT_CLONE(LogoutResponse); + IMPL_XMLOBJECT_CLONE(LogoutResponse); + StatusResponseType* cloneStatusResponseType() const { + return cloneLogoutResponse(); + } }; - class SAML_DLLLOCAL NameIDMappingRequestImpl : public virtual NameIDMappingRequest, public RequestImpl + class SAML_DLLLOCAL NameIDMappingRequestImpl : public virtual NameIDMappingRequest, public RequestAbstractTypeImpl { void init() { m_BaseID=NULL; @@ -1526,7 +1571,7 @@ namespace opensaml { init(); } - NameIDMappingRequestImpl(const NameIDMappingRequestImpl& src) : AbstractXMLObject(src), RequestImpl(src) { + NameIDMappingRequestImpl(const NameIDMappingRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) { init(); if (src.getBaseID()) @@ -1541,6 +1586,9 @@ namespace opensaml { } IMPL_XMLOBJECT_CLONE(NameIDMappingRequest); + RequestAbstractType* cloneRequestAbstractType() const { + return cloneNameIDMappingRequest(); + } IMPL_TYPED_FOREIGN_CHILD(BaseID,saml2); IMPL_TYPED_FOREIGN_CHILD(NameID,saml2); @@ -1549,15 +1597,15 @@ namespace opensaml { protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_FOREIGN_CHILD(BaseID,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_CHILD(NameIDPolicy,SAMLConstants::SAML20P_NS,false); - RequestImpl::processChildElement(childXMLObject,root); + PROC_TYPED_FOREIGN_CHILD(BaseID,saml2,SAML20_NS,false); + PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAML20_NS,false); + PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAML20_NS,false); + PROC_TYPED_CHILD(NameIDPolicy,SAML20P_NS,false); + RequestAbstractTypeImpl::processChildElement(childXMLObject,root); } }; - class SAML_DLLLOCAL NameIDMappingResponseImpl : public virtual NameIDMappingResponse, public StatusResponseImpl + class SAML_DLLLOCAL NameIDMappingResponseImpl : public virtual NameIDMappingResponse, public StatusResponseTypeImpl { void init() { m_NameID=NULL; @@ -1578,7 +1626,7 @@ namespace opensaml { init(); } - NameIDMappingResponseImpl(const NameIDMappingResponseImpl& src) : AbstractXMLObject(src), StatusResponseImpl(src) { + NameIDMappingResponseImpl(const NameIDMappingResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) { init(); if (src.getNameID()) @@ -1589,14 +1637,18 @@ namespace opensaml { } IMPL_XMLOBJECT_CLONE(NameIDMappingResponse); + StatusResponseType* cloneStatusResponseType() const { + return cloneNameIDMappingResponse(); + } + IMPL_TYPED_FOREIGN_CHILD(NameID,saml2); IMPL_TYPED_FOREIGN_CHILD(EncryptedID,saml2); protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { - PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAMLConstants::SAML20_NS,false); - PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAMLConstants::SAML20_NS,false); - StatusResponseImpl::processChildElement(childXMLObject,root); + PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAML20_NS,false); + PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAML20_NS,false); + StatusResponseTypeImpl::processChildElement(childXMLObject,root); } }; }; @@ -1637,7 +1689,6 @@ IMPL_XMLOBJECTBUILDER(Status); IMPL_XMLOBJECTBUILDER(StatusCode); IMPL_XMLOBJECTBUILDER(StatusDetail); IMPL_XMLOBJECTBUILDER(StatusMessage); -IMPL_XMLOBJECTBUILDER(StatusResponse); IMPL_XMLOBJECTBUILDER(Terminate); IMPL_XMLOBJECTBUILDER(RespondTo); @@ -1704,13 +1755,13 @@ const XMLCh RequestedAuthnContext::COMPARISON_EXACT[] = UNICODE_LITERAL_5(e,x,a, const XMLCh RequestedAuthnContext::COMPARISON_MINIMUM[] = UNICODE_LITERAL_7(m,i,n,i,m,u,m); const XMLCh RequestedAuthnContext::COMPARISON_MAXIMUM[] = UNICODE_LITERAL_7(m,a,x,i,m,u,m); const XMLCh RequestedAuthnContext::COMPARISON_BETTER[] = UNICODE_LITERAL_6(b,e,t,t,e,r); -const XMLCh Request::LOCAL_NAME[] = {chNull}; -const XMLCh Request::TYPE_NAME[] = UNICODE_LITERAL_19(R,e,q,u,e,s,t,A,b,s,t,r,a,c,t,T,y,p,e); -const XMLCh Request::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,D); -const XMLCh Request::VER_ATTRIB_NAME[] = UNICODE_LITERAL_7(V,e,r,s,i,o,n); -const XMLCh Request::ISSUEINSTANT_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,s,s,u,e,I,n,s,t,a,n,t); -const XMLCh Request::DESTINATION_ATTRIB_NAME[] = UNICODE_LITERAL_11(D,e,s,t,i,n,a,t,i,o,n); -const XMLCh Request::CONSENT_ATTRIB_NAME[] = UNICODE_LITERAL_7(C,o,n,s,e,n,t); +const XMLCh RequestAbstractType::LOCAL_NAME[] = {chNull}; +const XMLCh RequestAbstractType::TYPE_NAME[] = UNICODE_LITERAL_19(R,e,q,u,e,s,t,A,b,s,t,r,a,c,t,T,y,p,e); +const XMLCh RequestAbstractType::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,D); +const XMLCh RequestAbstractType::VER_ATTRIB_NAME[] = UNICODE_LITERAL_7(V,e,r,s,i,o,n); +const XMLCh RequestAbstractType::ISSUEINSTANT_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,s,s,u,e,I,n,s,t,a,n,t); +const XMLCh RequestAbstractType::DESTINATION_ATTRIB_NAME[] = UNICODE_LITERAL_11(D,e,s,t,i,n,a,t,i,o,n); +const XMLCh RequestAbstractType::CONSENT_ATTRIB_NAME[] = UNICODE_LITERAL_7(C,o,n,s,e,n,t); const XMLCh RespondTo::LOCAL_NAME[] = UNICODE_LITERAL_9(R,e,s,p,o,n,d,T,o); const XMLCh Response::LOCAL_NAME[] = UNICODE_LITERAL_8(R,e,s,p,o,n,s,e); const XMLCh Response::TYPE_NAME[] = UNICODE_LITERAL_12(R,e,s,p,o,n,s,e,T,y,p,e); @@ -1726,16 +1777,16 @@ const XMLCh StatusCode::VALUE_ATTRIB_NAME[] = UNICODE_LITERAL_5(V,a,l,u,e); const XMLCh StatusDetail::LOCAL_NAME[] = UNICODE_LITERAL_12(S,t,a,t,u,s,D,e,t,a,i,l); const XMLCh StatusDetail::TYPE_NAME[] = UNICODE_LITERAL_16(S,t,a,t,u,s,D,e,t,a,i,l,T,y,p,e); const XMLCh StatusMessage::LOCAL_NAME[] = UNICODE_LITERAL_13(S,t,a,t,u,s,M,e,s,s,a,g,e); -const XMLCh StatusResponse::LOCAL_NAME[] = {chNull}; -const XMLCh StatusResponse::TYPE_NAME[] = UNICODE_LITERAL_18(S,t,a,t,u,s,R,e,s,p,o,n,s,e,T,y,p,e); -const XMLCh StatusResponse::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,D); -const XMLCh StatusResponse::INRESPONSETO_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,n,R,e,s,p,o,n,s,e,T,o); -const XMLCh StatusResponse::VER_ATTRIB_NAME[] = UNICODE_LITERAL_7(V,e,r,s,i,o,n); -const XMLCh StatusResponse::ISSUEINSTANT_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,s,s,u,e,I,n,s,t,a,n,t); -const XMLCh StatusResponse::DESTINATION_ATTRIB_NAME[] = UNICODE_LITERAL_11(D,e,s,t,i,n,a,t,i,o,n); -const XMLCh StatusResponse::CONSENT_ATTRIB_NAME[] = UNICODE_LITERAL_7(C,o,n,s,e,n,t); -const XMLCh SubjectQuery::LOCAL_NAME[] = {chNull}; -const XMLCh SubjectQuery::TYPE_NAME[] = UNICODE_LITERAL_16(S,u,b,j,e,c,t,Q,u,e,r,y,T,y,p,e); +const XMLCh StatusResponseType::LOCAL_NAME[] = {chNull}; +const XMLCh StatusResponseType::TYPE_NAME[] = UNICODE_LITERAL_18(S,t,a,t,u,s,R,e,s,p,o,n,s,e,T,y,p,e); +const XMLCh StatusResponseType::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,D); +const XMLCh StatusResponseType::INRESPONSETO_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,n,R,e,s,p,o,n,s,e,T,o); +const XMLCh StatusResponseType::VER_ATTRIB_NAME[] = UNICODE_LITERAL_7(V,e,r,s,i,o,n); +const XMLCh StatusResponseType::ISSUEINSTANT_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,s,s,u,e,I,n,s,t,a,n,t); +const XMLCh StatusResponseType::DESTINATION_ATTRIB_NAME[] = UNICODE_LITERAL_11(D,e,s,t,i,n,a,t,i,o,n); +const XMLCh StatusResponseType::CONSENT_ATTRIB_NAME[] = UNICODE_LITERAL_7(C,o,n,s,e,n,t); +const XMLCh SubjectQuery::LOCAL_NAME[] = UNICODE_LITERAL_12(S,u,b,j,e,c,t,Q,u,e,r,y); +const XMLCh SubjectQuery::TYPE_NAME[] = UNICODE_LITERAL_24(S,u,b,j,e,c,t,Q,u,e,r,y,A,b,s,t,r,a,c,t,T,y,p,e); const XMLCh Terminate::LOCAL_NAME[] = UNICODE_LITERAL_9(T,e,r,m,i,n,a,t,e); const XMLCh Terminate::TYPE_NAME[] = UNICODE_LITERAL_13(T,e,r,m,i,n,a,t,e,T,y,p,e);