-/*
- * 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.
- * 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.
+ *
+ * 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.
*/
/**
* Assertions20Impl.cpp
- *
- * Implementation classes for SAML 2.0 Assertions schema
+ *
+ * Implementation classes for SAML 2.0 Assertions schema.
*/
#include "internal.h"
#include "exceptions.h"
#include "saml/encryption/EncryptedKeyResolver.h"
#include "saml2/core/Assertions.h"
+#include "signature/ContentReference.h"
#include <xmltooling/AbstractComplexElement.h>
#include <xmltooling/AbstractSimpleElement.h>
#include <xmltooling/impl/AnyElement.h>
#include <xmltooling/io/AbstractXMLObjectMarshaller.h>
#include <xmltooling/io/AbstractXMLObjectUnmarshaller.h>
+#include <xmltooling/signature/KeyInfo.h>
+#include <xmltooling/signature/Signature.h>
+#include <xmltooling/util/DateTime.h>
#include <xmltooling/util/XMLHelper.h>
#include <ctime>
+#include <boost/lambda/bind.hpp>
+#include <boost/lambda/if.hpp>
+#include <boost/lambda/lambda.hpp>
#include <xercesc/util/XMLUniDefs.hpp>
using namespace opensaml::saml2;
-using namespace xmlencryption;
-using namespace xmlsignature;
using namespace xmltooling;
using namespace std;
using xmlconstants::XSI_NS;
using xmlconstants::XMLENC_NS;
using xmlconstants::XML_BOOL_NULL;
using samlconstants::SAML20_NS;
+using samlconstants::SAML20_DELEGATION_CONDITION_NS;
#if defined (_MSC_VER)
public AbstractXMLObjectUnmarshaller
{
void init() {
- m_Format=m_SPProvidedID=m_NameQualifier=m_SPNameQualifier=NULL;
+ m_Format=m_SPProvidedID=m_NameQualifier=m_SPNameQualifier=nullptr;
}
-
+
protected:
NameIDTypeImpl() {
init();
}
-
+
public:
virtual ~NameIDTypeImpl() {
XMLString::release(&m_NameQualifier);
XMLString::release(&m_Format);
XMLString::release(&m_SPProvidedID);
}
-
- NameIDTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+
+ NameIDTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
NameIDTypeImpl(const NameIDTypeImpl& src)
: AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
init();
- setNameQualifier(src.getNameQualifier());
- setSPNameQualifier(src.getSPNameQualifier());
- setFormat(src.getFormat());
- setSPProvidedID(src.getSPProvidedID());
}
-
- IMPL_XMLOBJECT_CLONE(NameIDType);
+
+ void _clone(const NameIDTypeImpl& src) {
+ IMPL_CLONE_ATTRIB(NameQualifier);
+ IMPL_CLONE_ATTRIB(SPNameQualifier);
+ IMPL_CLONE_ATTRIB(Format);
+ IMPL_CLONE_ATTRIB(SPProvidedID);
+ }
+
+ IMPL_XMLOBJECT_CLONE_EX(NameIDType);
IMPL_STRING_ATTRIB(NameQualifier);
IMPL_STRING_ATTRIB(SPNameQualifier);
IMPL_STRING_ATTRIB(Format);
IMPL_STRING_ATTRIB(SPProvidedID);
-
+
protected:
void marshallAttributes(DOMElement* domElement) const {
- MARSHALL_STRING_ATTRIB(NameQualifier,NAMEQUALIFIER,NULL);
- MARSHALL_STRING_ATTRIB(SPNameQualifier,SPNAMEQUALIFIER,NULL);
- MARSHALL_STRING_ATTRIB(Format,FORMAT,NULL);
- MARSHALL_STRING_ATTRIB(SPProvidedID,SPPROVIDEDID,NULL);
+ MARSHALL_STRING_ATTRIB(NameQualifier,NAMEQUALIFIER,nullptr);
+ MARSHALL_STRING_ATTRIB(SPNameQualifier,SPNAMEQUALIFIER,nullptr);
+ MARSHALL_STRING_ATTRIB(Format,FORMAT,nullptr);
+ MARSHALL_STRING_ATTRIB(SPProvidedID,SPPROVIDEDID,nullptr);
}
void processAttribute(const DOMAttr* attribute) {
- PROC_STRING_ATTRIB(NameQualifier,NAMEQUALIFIER,NULL);
- PROC_STRING_ATTRIB(SPNameQualifier,SPNAMEQUALIFIER,NULL);
- PROC_STRING_ATTRIB(Format,FORMAT,NULL);
- PROC_STRING_ATTRIB(SPProvidedID,SPPROVIDEDID,NULL);
+ PROC_STRING_ATTRIB(NameQualifier,NAMEQUALIFIER,nullptr);
+ PROC_STRING_ATTRIB(SPNameQualifier,SPNAMEQUALIFIER,nullptr);
+ PROC_STRING_ATTRIB(Format,FORMAT,nullptr);
+ PROC_STRING_ATTRIB(SPProvidedID,SPPROVIDEDID,nullptr);
AbstractXMLObjectUnmarshaller::processAttribute(attribute);
}
};
{
public:
virtual ~NameIDImpl() {}
-
- NameIDImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+
+ NameIDImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
-
+
NameIDImpl(const NameIDImpl& src) : AbstractXMLObject(src), NameIDTypeImpl(src) {}
-
- IMPL_XMLOBJECT_CLONE(NameID);
- NameIDType* cloneNameIDType() const {
- return new NameIDImpl(*this);
- }
+
+ IMPL_XMLOBJECT_CLONE_EX(NameID);
};
class SAML_DLLLOCAL IssuerImpl : public virtual Issuer, public NameIDTypeImpl
{
public:
virtual ~IssuerImpl() {}
-
- IssuerImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+
+ IssuerImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
-
+
IssuerImpl(const IssuerImpl& src) : AbstractXMLObject(src), NameIDTypeImpl(src) {}
-
- IMPL_XMLOBJECT_CLONE(Issuer);
- NameIDType* cloneNameIDType() const {
- return new IssuerImpl(*this);
- }
+
+ IMPL_XMLOBJECT_CLONE_EX(Issuer);
};
- //TODO unit test for this
- // - need to test encryption/decryption too, or already done in xmltooling ?
class SAML_DLLLOCAL EncryptedElementTypeImpl : public virtual EncryptedElementType,
public AbstractComplexElement,
public AbstractDOMCachingXMLObject,
public AbstractXMLObjectUnmarshaller
{
void init() {
- m_EncryptedData=NULL;
- m_children.push_back(NULL);
+ m_EncryptedData=nullptr;
+ m_children.push_back(nullptr);
m_pos_EncryptedData=m_children.begin();
}
-
+
protected:
EncryptedElementTypeImpl() {
init();
}
-
+
public:
virtual ~EncryptedElementTypeImpl() {}
-
- EncryptedElementTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+
+ EncryptedElementTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
EncryptedElementTypeImpl(const EncryptedElementTypeImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
- if (src.getEncryptedData())
- setEncryptedData(src.getEncryptedData()->cloneEncryptedData());
- VectorOf(EncryptedKey) v=getEncryptedKeys();
- for (vector<EncryptedKey*>::const_iterator i=src.m_EncryptedKeys.begin(); i!=src.m_EncryptedKeys.end(); i++) {
- if (*i) {
- v.push_back((*i)->cloneEncryptedKey());
- }
- }
}
-
- IMPL_XMLOBJECT_CLONE(EncryptedElementType);
+
+ void _clone(const EncryptedElementTypeImpl& src) {
+ IMPL_CLONE_TYPED_CHILD(EncryptedData);
+ IMPL_CLONE_TYPED_FOREIGN_CHILDREN(EncryptedKey,xmlencryption);
+ }
+
+ IMPL_XMLOBJECT_CLONE_EX(EncryptedElementType);
IMPL_TYPED_FOREIGN_CHILD(EncryptedData,xmlencryption);
IMPL_TYPED_FOREIGN_CHILDREN(EncryptedKey,xmlencryption,m_children.end());
-
+
protected:
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
PROC_TYPED_FOREIGN_CHILD(EncryptedData,xmlencryption,XMLENC_NS,false);
{
public:
virtual ~EncryptedIDImpl() {}
-
- EncryptedIDImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+
+ EncryptedIDImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
-
+
EncryptedIDImpl(const EncryptedIDImpl& src) : AbstractXMLObject(src), EncryptedElementTypeImpl(src) {}
-
- IMPL_XMLOBJECT_CLONE(EncryptedID);
- EncryptedElementType* cloneEncryptedElementType() const {
- return new EncryptedIDImpl(*this);
- }
+
+ IMPL_XMLOBJECT_CLONE_EX(EncryptedID);
+ };
+
+ class SAML_DLLLOCAL ConditionImpl : public virtual Condition, public AnyElementImpl
+ {
+ public:
+ virtual ~ConditionImpl() {}
+
+ ConditionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
+ ConditionImpl(const ConditionImpl& src) : AbstractXMLObject(src), AnyElementImpl(src) {}
+
+ IMPL_XMLOBJECT_CLONE(Condition);
};
class SAML_DLLLOCAL AudienceRestrictionImpl : public virtual AudienceRestriction,
{
public:
virtual ~AudienceRestrictionImpl() {}
-
- AudienceRestrictionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
- : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
- }
-
+
+ AudienceRestrictionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
AudienceRestrictionImpl(const AudienceRestrictionImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
- VectorOf(Audience) v=getAudiences();
- for (vector<Audience*>::const_iterator i=src.m_Audiences.begin(); i!=src.m_Audiences.end(); i++) {
- if (*i) {
- v.push_back((*i)->cloneAudience());
- }
- }
- }
-
- IMPL_XMLOBJECT_CLONE(AudienceRestriction);
- Condition* cloneCondition() const {
- return cloneAudienceRestriction();
+ IMPL_CLONE_TYPED_CHILDREN(Audience);
}
+
+ IMPL_XMLOBJECT_CLONE2(AudienceRestriction,Condition);
IMPL_TYPED_CHILDREN(Audience,m_children.end());
-
+
protected:
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
PROC_TYPED_CHILDREN(Audience,SAML20_NS,false);
{
public:
virtual ~OneTimeUseImpl() {}
-
- OneTimeUseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
- : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
- }
-
+
+ OneTimeUseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
OneTimeUseImpl(const OneTimeUseImpl& src)
- : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
- }
-
- IMPL_XMLOBJECT_CLONE(OneTimeUse);
- Condition* cloneCondition() const {
- return cloneOneTimeUse();
- }
+ : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {}
+
+ IMPL_XMLOBJECT_CLONE2(OneTimeUse,Condition);
};
class SAML_DLLLOCAL ProxyRestrictionImpl : public virtual ProxyRestriction,
virtual ~ProxyRestrictionImpl() {
XMLString::release(&m_Count);
}
-
- ProxyRestrictionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
- : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
- m_Count=NULL;
- }
-
+
+ ProxyRestrictionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Count(nullptr) {}
+
ProxyRestrictionImpl(const ProxyRestrictionImpl& src)
- : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
- setCount(src.m_Count);
- VectorOf(Audience) v=getAudiences();
- for (vector<Audience*>::const_iterator i=src.m_Audiences.begin(); i!=src.m_Audiences.end(); i++) {
- if (*i) {
- v.push_back((*i)->cloneAudience());
- }
- }
- }
-
- IMPL_XMLOBJECT_CLONE(ProxyRestriction);
- Condition* cloneCondition() const {
- return cloneProxyRestriction();
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src), m_Count(nullptr) {
+ IMPL_CLONE_INTEGER_ATTRIB(Count);
+ IMPL_CLONE_TYPED_CHILDREN(Audience);
}
+
+ IMPL_XMLOBJECT_CLONE2(ProxyRestriction,Condition);
IMPL_TYPED_CHILDREN(Audience,m_children.end());
IMPL_INTEGER_ATTRIB(Count);
-
+
protected:
void marshallAttributes(DOMElement* domElement) const {
- MARSHALL_INTEGER_ATTRIB(Count,COUNT,NULL);
+ MARSHALL_INTEGER_ATTRIB(Count,COUNT,nullptr);
}
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
}
void processAttribute(const DOMAttr* attribute) {
- PROC_INTEGER_ATTRIB(Count,COUNT,NULL);
+ PROC_INTEGER_ATTRIB(Count,COUNT,nullptr);
AbstractXMLObjectUnmarshaller::processAttribute(attribute);
}
};
+ class SAML_DLLLOCAL DelegateImpl : public virtual Delegate,
+ public AbstractComplexElement,
+ public AbstractDOMCachingXMLObject,
+ public AbstractXMLObjectMarshaller,
+ public AbstractXMLObjectUnmarshaller
+ {
+ void init() {
+ m_ConfirmationMethod=nullptr;
+ m_DelegationInstant=nullptr;
+ m_BaseID=nullptr;
+ m_NameID=nullptr;
+ m_EncryptedID=nullptr;
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_pos_BaseID=m_children.begin();
+ m_pos_NameID=m_pos_BaseID;
+ ++m_pos_NameID;
+ m_pos_EncryptedID=m_pos_NameID;
+ ++m_pos_EncryptedID;
+ }
+
+ public:
+ virtual ~DelegateImpl() {
+ XMLString::release(&m_ConfirmationMethod);
+ delete m_DelegationInstant;
+ }
+
+ DelegateImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
+ init();
+ }
+
+ DelegateImpl(const DelegateImpl& src)
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
+ init();
+ IMPL_CLONE_ATTRIB(ConfirmationMethod);
+ IMPL_CLONE_ATTRIB(DelegationInstant);
+ IMPL_CLONE_TYPED_CHILD(BaseID);
+ IMPL_CLONE_TYPED_CHILD(NameID);
+ IMPL_CLONE_TYPED_CHILD(EncryptedID);
+ }
+
+ IMPL_XMLOBJECT_CLONE(Delegate);
+ IMPL_STRING_ATTRIB(ConfirmationMethod);
+ IMPL_DATETIME_ATTRIB(DelegationInstant,0);
+ IMPL_TYPED_CHILD(NameID);
+ IMPL_TYPED_CHILD(BaseID);
+ IMPL_TYPED_CHILD(EncryptedID);
+
+ protected:
+ void marshallAttributes(DOMElement* domElement) const {
+ MARSHALL_STRING_ATTRIB(ConfirmationMethod,CONFIRMATIONMETHOD,nullptr);
+ MARSHALL_DATETIME_ATTRIB(DelegationInstant,DELEGATIONINSTANT,nullptr);
+ }
+
+ void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
+ PROC_TYPED_CHILD(BaseID,SAML20_NS,false);
+ PROC_TYPED_CHILD(NameID,SAML20_NS,false);
+ PROC_TYPED_CHILD(EncryptedID,SAML20_NS,false);
+ AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
+ }
+
+ void processAttribute(const DOMAttr* attribute) {
+ PROC_STRING_ATTRIB(ConfirmationMethod,CONFIRMATIONMETHOD,nullptr);
+ PROC_DATETIME_ATTRIB(DelegationInstant,DELEGATIONINSTANT,nullptr);
+ AbstractXMLObjectUnmarshaller::processAttribute(attribute);
+ }
+ };
+
+ class SAML_DLLLOCAL DelegationRestrictionTypeImpl : public virtual DelegationRestrictionType,
+ public AbstractComplexElement,
+ public AbstractDOMCachingXMLObject,
+ public AbstractXMLObjectMarshaller,
+ public AbstractXMLObjectUnmarshaller
+ {
+ public:
+ virtual ~DelegationRestrictionTypeImpl() {}
+
+ DelegationRestrictionTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
+ DelegationRestrictionTypeImpl(const DelegationRestrictionTypeImpl& src)
+ : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
+ IMPL_CLONE_TYPED_CHILDREN(Delegate);
+ }
+
+ IMPL_XMLOBJECT_CLONE2(DelegationRestrictionType,Condition);
+ IMPL_TYPED_CHILDREN(Delegate,m_children.end());
+
+ protected:
+ void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
+ PROC_TYPED_CHILDREN(Delegate,SAML20_DELEGATION_CONDITION_NS,false);
+ AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
+ }
+ };
class SAML_DLLLOCAL ConditionsImpl : public virtual Conditions,
public AbstractComplexElement,
public AbstractXMLObjectUnmarshaller
{
void init() {
- m_NotBefore=m_NotOnOrAfter=NULL;
+ m_NotBefore=m_NotOnOrAfter=nullptr;
}
+
public:
virtual ~ConditionsImpl() {
delete m_NotBefore;
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();
}
-
+
ConditionsImpl(const ConditionsImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
- setNotBefore(src.getNotBefore());
- setNotOnOrAfter(src.getNotOnOrAfter());
-
- for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
- if (*i) {
- AudienceRestriction* arc=dynamic_cast<AudienceRestriction*>(*i);
- if (arc) {
- getAudienceRestrictions().push_back(arc->cloneAudienceRestriction());
- continue;
- }
-
- OneTimeUse* dncc=dynamic_cast<OneTimeUse*>(*i);
- if (dncc) {
- getOneTimeUses().push_back(dncc->cloneOneTimeUse());
- continue;
- }
-
- ProxyRestriction* prc=dynamic_cast<ProxyRestriction*>(*i);
- if (prc) {
- getProxyRestrictions().push_back(prc->cloneProxyRestriction());
- continue;
- }
-
- Condition* c=dynamic_cast<Condition*>(*i);
- if (c) {
- getConditions().push_back(c->cloneCondition());
- continue;
- }
- }
- }
+ IMPL_CLONE_ATTRIB(NotBefore);
+ IMPL_CLONE_ATTRIB(NotOnOrAfter);
+
+ IMPL_CLONE_CHILDBAG_BEGIN;
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(AudienceRestriction);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(OneTimeUse);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(ProxyRestriction);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(Condition);
+ IMPL_CLONE_CHILDBAG_END;
}
-
+
IMPL_XMLOBJECT_CLONE(Conditions);
IMPL_DATETIME_ATTRIB(NotBefore,0);
IMPL_DATETIME_ATTRIB(NotOnOrAfter,SAMLTIME_MAX);
IMPL_TYPED_CHILDREN(OneTimeUse,m_children.end());
IMPL_TYPED_CHILDREN(ProxyRestriction, m_children.end());
IMPL_TYPED_CHILDREN(Condition,m_children.end());
-
+
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) {
PROC_TYPED_CHILDREN(AudienceRestriction,SAML20_NS,false);
PROC_TYPED_CHILDREN(OneTimeUse,SAML20_NS,false);
PROC_TYPED_CHILDREN(Condition,SAML20_NS,false);
AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
}
-
+
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);
AbstractXMLObjectUnmarshaller::processAttribute(attribute);
}
};
class SAML_DLLLOCAL SubjectConfirmationDataTypeImpl : public virtual SubjectConfirmationDataType, public virtual AbstractXMLObject
{
void init() {
- m_NotBefore=m_NotOnOrAfter=NULL;
- m_Recipient=m_InResponseTo=m_Address=NULL;
+ m_NotBefore=m_NotOnOrAfter=nullptr;
+ m_Recipient=m_InResponseTo=m_Address=nullptr;
}
protected:
XMLString::release(&m_InResponseTo);
XMLString::release(&m_Address);
}
-
- SubjectConfirmationDataTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+
+ SubjectConfirmationDataTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
SubjectConfirmationDataTypeImpl(const SubjectConfirmationDataTypeImpl& src) : AbstractXMLObject(src) {
init();
- setNotBefore(src.getNotBefore());
- setNotOnOrAfter(src.getNotOnOrAfter());
- setRecipient(src.getRecipient());
- setInResponseTo(src.getInResponseTo());
- setAddress(src.getAddress());
}
-
+
+ void _clone(const SubjectConfirmationDataTypeImpl& src) {
+ IMPL_CLONE_ATTRIB(NotBefore);
+ IMPL_CLONE_ATTRIB(NotOnOrAfter);
+ IMPL_CLONE_ATTRIB(Recipient);
+ IMPL_CLONE_ATTRIB(InResponseTo);
+ IMPL_CLONE_ATTRIB(Address);
+ }
+
+ SubjectConfirmationDataType* cloneSubjectConfirmationDataType() const {
+ return dynamic_cast<SubjectConfirmationDataType*>(clone());
+ }
+
IMPL_DATETIME_ATTRIB(NotBefore,0);
IMPL_DATETIME_ATTRIB(NotOnOrAfter,SAMLTIME_MAX);
IMPL_STRING_ATTRIB(Recipient);
IMPL_STRING_ATTRIB(InResponseTo);
IMPL_STRING_ATTRIB(Address);
-
+
protected:
void marshallAttributes(DOMElement* domElement) const {
- MARSHALL_DATETIME_ATTRIB(NotBefore,NOTBEFORE,NULL);
- MARSHALL_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL);
- MARSHALL_STRING_ATTRIB(Recipient,RECIPIENT,NULL);
- MARSHALL_STRING_ATTRIB(InResponseTo,INRESPONSETO,NULL);
- MARSHALL_STRING_ATTRIB(Address,ADDRESS,NULL);
+ MARSHALL_DATETIME_ATTRIB(NotBefore,NOTBEFORE,nullptr);
+ MARSHALL_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,nullptr);
+ MARSHALL_STRING_ATTRIB(Recipient,RECIPIENT,nullptr);
+ MARSHALL_STRING_ATTRIB(InResponseTo,INRESPONSETO,nullptr);
+ MARSHALL_STRING_ATTRIB(Address,ADDRESS,nullptr);
}
-
+
void processAttribute(const DOMAttr* attribute) {
- PROC_DATETIME_ATTRIB(NotBefore,NOTBEFORE,NULL);
- PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL);
- PROC_STRING_ATTRIB(Recipient,RECIPIENT,NULL);
- PROC_STRING_ATTRIB(InResponseTo,INRESPONSETO,NULL);
- PROC_STRING_ATTRIB(Address,ADDRESS,NULL);
+ PROC_DATETIME_ATTRIB(NotBefore,NOTBEFORE,nullptr);
+ PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,nullptr);
+ PROC_STRING_ATTRIB(Recipient,RECIPIENT,nullptr);
+ PROC_STRING_ATTRIB(InResponseTo,INRESPONSETO,nullptr);
+ PROC_STRING_ATTRIB(Address,ADDRESS,nullptr);
}
};
{
public:
virtual ~SubjectConfirmationDataImpl() {}
-
- SubjectConfirmationDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
- : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
- }
-
+
+ SubjectConfirmationDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
SubjectConfirmationDataImpl(const SubjectConfirmationDataImpl& src)
- : SubjectConfirmationDataTypeImpl(src), AnyElementImpl(src) {
- }
+ : AbstractXMLObject(src), SubjectConfirmationDataTypeImpl(src), AnyElementImpl(src) {}
- IMPL_XMLOBJECT_CLONE(SubjectConfirmationData);
- SubjectConfirmationDataType* cloneSubjectConfirmationDataType() const {
- return new SubjectConfirmationDataImpl(*this);
+ void _clone(const SubjectConfirmationDataImpl& src) {
+ SubjectConfirmationDataTypeImpl::_clone(src);
+ AnyElementImpl::_clone(src);
}
- void setAttribute(const QName& qualifiedName, const XMLCh* value, bool ID=false) {
+ IMPL_XMLOBJECT_CLONE_EX(SubjectConfirmationData);
+
+ void setAttribute(const xmltooling::QName& qualifiedName, const XMLCh* value, bool ID=false) {
if (!qualifiedName.hasNamespaceURI()) {
if (XMLString::equals(qualifiedName.getLocalPart(),NOTBEFORE_ATTRIB_NAME)) {
setNotBefore(value);
}
void processAttribute(const DOMAttr* attribute) {
- PROC_DATETIME_ATTRIB(NotBefore,NOTBEFORE,NULL);
- PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL);
- PROC_STRING_ATTRIB(Recipient,RECIPIENT,NULL);
- PROC_STRING_ATTRIB(InResponseTo,INRESPONSETO,NULL);
- PROC_STRING_ATTRIB(Address,ADDRESS,NULL);
+ PROC_DATETIME_ATTRIB(NotBefore,NOTBEFORE,nullptr);
+ PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,nullptr);
+ PROC_STRING_ATTRIB(Recipient,RECIPIENT,nullptr);
+ PROC_STRING_ATTRIB(InResponseTo,INRESPONSETO,nullptr);
+ PROC_STRING_ATTRIB(Address,ADDRESS,nullptr);
AnyElementImpl::processAttribute(attribute);
}
};
{
public:
virtual ~KeyInfoConfirmationDataTypeImpl() {}
-
- KeyInfoConfirmationDataTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
- : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
- }
-
+
+ KeyInfoConfirmationDataTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
KeyInfoConfirmationDataTypeImpl(const KeyInfoConfirmationDataTypeImpl& src)
- : AbstractXMLObject(src), SubjectConfirmationDataTypeImpl(src), AbstractComplexElement(src),
- AbstractAttributeExtensibleXMLObject(src), AbstractDOMCachingXMLObject(src) {
- VectorOf(KeyInfo) v=getKeyInfos();
- for (vector<KeyInfo*>::const_iterator i=src.m_KeyInfos.begin(); i!=src.m_KeyInfos.end(); ++i)
- v.push_back((*i)->cloneKeyInfo());
- }
-
- IMPL_XMLOBJECT_CLONE(KeyInfoConfirmationDataType);
- SubjectConfirmationDataType* cloneSubjectConfirmationDataType() const {
- return new KeyInfoConfirmationDataTypeImpl(*this);
+ : AbstractXMLObject(src), SubjectConfirmationDataTypeImpl(src), AbstractComplexElement(src),
+ AbstractAttributeExtensibleXMLObject(src), AbstractDOMCachingXMLObject(src) {}
+
+ void _clone(const KeyInfoConfirmationDataTypeImpl& src) {
+ SubjectConfirmationDataTypeImpl::_clone(src);
+ IMPL_CLONE_TYPED_FOREIGN_CHILDREN(KeyInfo,xmlsignature);
}
- IMPL_TYPED_CHILDREN(KeyInfo,m_children.end());
-
+ IMPL_XMLOBJECT_CLONE_EX(KeyInfoConfirmationDataType);
+ IMPL_TYPED_FOREIGN_CHILDREN(KeyInfo,xmlsignature,m_children.end());
+
public:
- void setAttribute(const QName& qualifiedName, const XMLCh* value, bool ID=false) {
+ void setAttribute(const xmltooling::QName& qualifiedName, const XMLCh* value, bool ID=false) {
if (!qualifiedName.hasNamespaceURI()) {
if (XMLString::equals(qualifiedName.getLocalPart(),NOTBEFORE_ATTRIB_NAME)) {
setNotBefore(value);
SubjectConfirmationDataTypeImpl::marshallAttributes(domElement);
marshallExtensionAttributes(domElement);
}
-
+
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
- PROC_TYPED_CHILDREN(KeyInfo,XMLSIG_NS,false);
+ PROC_TYPED_FOREIGN_CHILDREN(KeyInfo,xmlsignature,XMLSIG_NS,false);
AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
}
public AbstractXMLObjectUnmarshaller
{
void init() {
- m_Method=NULL;
- m_BaseID=NULL;
- m_NameID=NULL;
- m_EncryptedID=NULL;
- m_SubjectConfirmationData=NULL;
- m_children.push_back(NULL);
- m_children.push_back(NULL);
- m_children.push_back(NULL);
- m_children.push_back(NULL);
+ m_Method=nullptr;
+ m_BaseID=nullptr;
+ m_NameID=nullptr;
+ m_EncryptedID=nullptr;
+ m_SubjectConfirmationData=nullptr;
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
m_pos_BaseID=m_children.begin();
m_pos_NameID=m_pos_BaseID;
++m_pos_NameID;
m_pos_SubjectConfirmationData=m_pos_EncryptedID;
++m_pos_SubjectConfirmationData;
}
+
public:
- virtual ~SubjectConfirmationImpl() {}
-
- SubjectConfirmationImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ virtual ~SubjectConfirmationImpl() {
+ XMLString::release(&m_Method);
+ }
+
+ SubjectConfirmationImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
SubjectConfirmationImpl(const SubjectConfirmationImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
- setMethod(src.getMethod());
- if (src.getBaseID())
- setBaseID(src.getBaseID()->cloneBaseID());
- if (src.getNameID())
- setNameID(src.getNameID()->cloneNameID());
- if (src.getEncryptedID())
- setEncryptedID(src.getEncryptedID()->cloneEncryptedID());
- if (src.getSubjectConfirmationData())
- setSubjectConfirmationData(src.getSubjectConfirmationData()->clone());
- }
-
+ IMPL_CLONE_ATTRIB(Method);
+ IMPL_CLONE_TYPED_CHILD(BaseID);
+ IMPL_CLONE_TYPED_CHILD(NameID);
+ IMPL_CLONE_TYPED_CHILD(EncryptedID);
+ IMPL_CLONE_XMLOBJECT_CHILD(SubjectConfirmationData);
+ }
+
IMPL_XMLOBJECT_CLONE(SubjectConfirmation);
IMPL_STRING_ATTRIB(Method);
IMPL_TYPED_CHILD(BaseID);
IMPL_TYPED_CHILD(NameID);
IMPL_TYPED_CHILD(EncryptedID);
IMPL_XMLOBJECT_CHILD(SubjectConfirmationData);
-
+
protected:
void marshallAttributes(DOMElement* domElement) const {
- MARSHALL_STRING_ATTRIB(Method,METHOD,NULL);
+ MARSHALL_STRING_ATTRIB(Method,METHOD,nullptr);
}
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
}
void processAttribute(const DOMAttr* attribute) {
- PROC_STRING_ATTRIB(Method,METHOD,NULL);
+ PROC_STRING_ATTRIB(Method,METHOD,nullptr);
AbstractXMLObjectUnmarshaller::processAttribute(attribute);
}
};
public AbstractXMLObjectUnmarshaller
{
void init() {
- m_BaseID=NULL;
- m_NameID=NULL;
- m_EncryptedID=NULL;
- m_children.push_back(NULL);
- m_children.push_back(NULL);
- m_children.push_back(NULL);
+ m_BaseID=nullptr;
+ m_NameID=nullptr;
+ m_EncryptedID=nullptr;
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
m_pos_BaseID=m_children.begin();
m_pos_NameID=m_pos_BaseID;
++m_pos_NameID;
m_pos_EncryptedID=m_pos_NameID;
++m_pos_EncryptedID;
}
+
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();
}
-
+
SubjectImpl(const SubjectImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
- if (src.getBaseID())
- setBaseID(src.getBaseID()->cloneBaseID());
- if (src.getNameID())
- setNameID(src.getNameID()->cloneNameID());
- if (src.getEncryptedID())
- setEncryptedID(src.getEncryptedID()->cloneEncryptedID());
- VectorOf(SubjectConfirmation) v=getSubjectConfirmations();
- for (vector<SubjectConfirmation*>::const_iterator i=src.m_SubjectConfirmations.begin(); i!=src.m_SubjectConfirmations.end(); i++) {
- if (*i) {
- v.push_back((*i)->cloneSubjectConfirmation());
- }
- }
+ IMPL_CLONE_TYPED_CHILD(BaseID);
+ IMPL_CLONE_TYPED_CHILD(NameID);
+ IMPL_CLONE_TYPED_CHILD(EncryptedID);
+ IMPL_CLONE_TYPED_CHILDREN(SubjectConfirmation);
}
-
+
IMPL_XMLOBJECT_CLONE(Subject);
IMPL_TYPED_CHILD(NameID);
IMPL_TYPED_CHILD(BaseID);
IMPL_TYPED_CHILD(EncryptedID);
IMPL_TYPED_CHILDREN(SubjectConfirmation,m_children.end());
-
+
protected:
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
PROC_TYPED_CHILD(BaseID,SAML20_NS,false);
public AbstractXMLObjectUnmarshaller
{
void init() {
- m_Address=m_DNSName=NULL;
+ m_Address=m_DNSName=nullptr;
}
+
public:
virtual ~SubjectLocalityImpl() {
XMLString::release(&m_Address);
XMLString::release(&m_DNSName);
}
-
- 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();
}
-
+
SubjectLocalityImpl(const SubjectLocalityImpl& src)
: AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
init();
- setAddress(src.getAddress());
- setDNSName(src.getDNSName());
+ IMPL_CLONE_ATTRIB(Address);
+ IMPL_CLONE_ATTRIB(DNSName);
}
-
+
IMPL_XMLOBJECT_CLONE(SubjectLocality);
IMPL_STRING_ATTRIB(Address);
IMPL_STRING_ATTRIB(DNSName);
-
+
protected:
void marshallAttributes(DOMElement* domElement) const {
- MARSHALL_STRING_ATTRIB(Address,ADDRESS,NULL);
- MARSHALL_STRING_ATTRIB(DNSName,DNSNAME,NULL);
+ MARSHALL_STRING_ATTRIB(Address,ADDRESS,nullptr);
+ MARSHALL_STRING_ATTRIB(DNSName,DNSNAME,nullptr);
}
-
+
void processAttribute(const DOMAttr* attribute) {
- PROC_STRING_ATTRIB(Address,ADDRESS,NULL);
- PROC_STRING_ATTRIB(DNSName,DNSNAME,NULL);
+ PROC_STRING_ATTRIB(Address,ADDRESS,nullptr);
+ PROC_STRING_ATTRIB(DNSName,DNSNAME,nullptr);
AbstractXMLObjectUnmarshaller::processAttribute(attribute);
}
};
+ class SAML_DLLLOCAL StatementImpl : public virtual Statement, public AnyElementImpl
+ {
+ public:
+ virtual ~StatementImpl() {}
+
+ StatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
+ StatementImpl(const StatementImpl& src) : AbstractXMLObject(src), AnyElementImpl(src) {}
+
+ IMPL_XMLOBJECT_CLONE_EX(Statement);
+ };
+
//TODO need unit test for this
class SAML_DLLLOCAL AuthnContextDeclImpl : public virtual AuthnContextDecl, public AnyElementImpl
{
public:
virtual ~AuthnContextDeclImpl() {}
-
- AuthnContextDeclImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
- : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
- }
-
- AuthnContextDeclImpl(const AuthnContextDeclImpl& src) : AnyElementImpl(src) {
- }
-
- IMPL_XMLOBJECT_CLONE(AuthnContextDecl);
+
+ AuthnContextDeclImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
+ AuthnContextDeclImpl(const AuthnContextDeclImpl& src) : AbstractXMLObject(src), AnyElementImpl(src) {}
+
+ IMPL_XMLOBJECT_CLONE_EX(AuthnContextDecl);
};
class SAML_DLLLOCAL AuthnContextImpl : public virtual AuthnContext,
public AbstractXMLObjectUnmarshaller
{
void init() {
- m_AuthnContextClassRef=NULL;
- m_AuthnContextDecl=NULL;
- m_AuthnContextDeclRef=NULL;
- m_children.push_back(NULL);
- m_children.push_back(NULL);
- m_children.push_back(NULL);
+ m_AuthnContextClassRef=nullptr;
+ m_AuthnContextDecl=nullptr;
+ m_AuthnContextDeclRef=nullptr;
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
m_pos_AuthnContextClassRef=m_children.begin();
m_pos_AuthnContextDecl=m_pos_AuthnContextClassRef;
++m_pos_AuthnContextDecl;
m_pos_AuthnContextDeclRef=m_pos_AuthnContextDecl;
++m_pos_AuthnContextDeclRef;
}
+
public:
virtual ~AuthnContextImpl() {}
-
- AuthnContextImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+
+ AuthnContextImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
AuthnContextImpl(const AuthnContextImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
- if (src.getAuthnContextClassRef())
- setAuthnContextClassRef(src.getAuthnContextClassRef()->cloneAuthnContextClassRef());
- if (src.getAuthnContextDecl())
- setAuthnContextDecl(src.getAuthnContextDecl()->clone());
- if (src.getAuthnContextDeclRef())
- setAuthnContextDeclRef(src.getAuthnContextDeclRef()->cloneAuthnContextDeclRef());
- VectorOf(AuthenticatingAuthority) v=getAuthenticatingAuthoritys();
- for (vector<AuthenticatingAuthority*>::const_iterator i=src.m_AuthenticatingAuthoritys.begin(); i!=src.m_AuthenticatingAuthoritys.end(); i++) {
- if (*i) {
- v.push_back((*i)->cloneAuthenticatingAuthority());
- }
- }
+ IMPL_CLONE_TYPED_CHILD(AuthnContextClassRef);
+ IMPL_CLONE_XMLOBJECT_CHILD(AuthnContextDecl);
+ IMPL_CLONE_TYPED_CHILD(AuthnContextDeclRef);
+ IMPL_CLONE_TYPED_CHILDREN(AuthenticatingAuthority);
}
-
+
IMPL_XMLOBJECT_CLONE(AuthnContext);
IMPL_TYPED_CHILD(AuthnContextClassRef);
IMPL_XMLOBJECT_CHILD(AuthnContextDecl);
IMPL_TYPED_CHILD(AuthnContextDeclRef);
IMPL_TYPED_CHILDREN(AuthenticatingAuthority,m_children.end());
-
+
protected:
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
PROC_TYPED_CHILD(AuthnContextClassRef,SAML20_NS,false);
public AbstractXMLObjectUnmarshaller
{
void init() {
- m_AuthnInstant=NULL;
- m_SessionIndex=NULL;
- m_SessionNotOnOrAfter=NULL;
- m_SubjectLocality=NULL;
- m_AuthnContext=NULL;
- m_children.push_back(NULL);
- m_children.push_back(NULL);
+ m_AuthnInstant=nullptr;
+ m_SessionIndex=nullptr;
+ m_SessionNotOnOrAfter=nullptr;
+ m_SubjectLocality=nullptr;
+ m_AuthnContext=nullptr;
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
m_pos_SubjectLocality=m_children.begin();
m_pos_AuthnContext=m_pos_SubjectLocality;
++m_pos_AuthnContext;
}
+
public:
virtual ~AuthnStatementImpl() {
delete m_AuthnInstant;
XMLString::release(&m_SessionIndex);
delete m_SessionNotOnOrAfter;
}
-
- AuthnStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+
+ AuthnStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
AuthnStatementImpl(const AuthnStatementImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
- setAuthnInstant(src.getAuthnInstant());
- setSessionIndex(src.getSessionIndex());
- setSessionNotOnOrAfter(src.getSessionNotOnOrAfter());
- if (src.getSubjectLocality())
- setSubjectLocality(src.getSubjectLocality()->cloneSubjectLocality());
- if (src.getAuthnContext())
- setAuthnContext(src.getAuthnContext()->cloneAuthnContext());
- }
-
- IMPL_XMLOBJECT_CLONE(AuthnStatement);
- Statement* cloneStatement() const {
- return cloneAuthnStatement();
+ IMPL_CLONE_ATTRIB(AuthnInstant);
+ IMPL_CLONE_ATTRIB(SessionIndex);
+ IMPL_CLONE_ATTRIB(SessionNotOnOrAfter);
+ IMPL_CLONE_TYPED_CHILD(SubjectLocality);
+ IMPL_CLONE_TYPED_CHILD(AuthnContext);
}
+
+ IMPL_XMLOBJECT_CLONE2(AuthnStatement,Statement);
IMPL_DATETIME_ATTRIB(AuthnInstant,0);
IMPL_STRING_ATTRIB(SessionIndex);
IMPL_DATETIME_ATTRIB(SessionNotOnOrAfter,SAMLTIME_MAX);
IMPL_TYPED_CHILD(SubjectLocality);
IMPL_TYPED_CHILD(AuthnContext);
-
+
protected:
void marshallAttributes(DOMElement* domElement) const {
- MARSHALL_DATETIME_ATTRIB(AuthnInstant,AUTHNINSTANT,NULL);
- MARSHALL_STRING_ATTRIB(SessionIndex,SESSIONINDEX,NULL);
- MARSHALL_DATETIME_ATTRIB(SessionNotOnOrAfter,SESSIONNOTONORAFTER,NULL);
+ MARSHALL_DATETIME_ATTRIB(AuthnInstant,AUTHNINSTANT,nullptr);
+ MARSHALL_STRING_ATTRIB(SessionIndex,SESSIONINDEX,nullptr);
+ MARSHALL_DATETIME_ATTRIB(SessionNotOnOrAfter,SESSIONNOTONORAFTER,nullptr);
}
-
+
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
PROC_TYPED_CHILD(SubjectLocality,SAML20_NS,false);
PROC_TYPED_CHILD(AuthnContext,SAML20_NS,false);
AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
}
-
+
void processAttribute(const DOMAttr* attribute) {
- PROC_DATETIME_ATTRIB(AuthnInstant,AUTHNINSTANT,NULL);
- PROC_STRING_ATTRIB(SessionIndex,SESSIONINDEX,NULL);
- PROC_DATETIME_ATTRIB(SessionNotOnOrAfter,SESSIONNOTONORAFTER,NULL);
+ PROC_DATETIME_ATTRIB(AuthnInstant,AUTHNINSTANT,nullptr);
+ PROC_STRING_ATTRIB(SessionIndex,SESSIONINDEX,nullptr);
+ PROC_DATETIME_ATTRIB(SessionNotOnOrAfter,SESSIONNOTONORAFTER,nullptr);
AbstractXMLObjectUnmarshaller::processAttribute(attribute);
}
};
virtual ~ActionImpl() {
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) {
- setNamespace(src.getNamespace());
+ : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src), m_Namespace(nullptr) {
+ IMPL_CLONE_ATTRIB(Namespace);
}
-
+
IMPL_XMLOBJECT_CLONE(Action);
IMPL_STRING_ATTRIB(Namespace);
-
+
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);
AbstractXMLObjectUnmarshaller::processAttribute(attribute);
}
};
{
public:
virtual ~EvidenceImpl() {}
-
- EvidenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
- : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
- }
-
+
+ EvidenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
EvidenceImpl(const EvidenceImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
- for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
- if (*i) {
- AssertionIDRef* ref=dynamic_cast<AssertionIDRef*>(*i);
- if (ref) {
- getAssertionIDRefs().push_back(ref->cloneAssertionIDRef());
- continue;
- }
-
- AssertionURIRef* uri=dynamic_cast<AssertionURIRef*>(*i);
- if (uri) {
- getAssertionURIRefs().push_back(uri->cloneAssertionURIRef());
- continue;
- }
-
- Assertion* assertion=dynamic_cast<Assertion*>(*i);
- if (assertion) {
- getAssertions().push_back(assertion->cloneAssertion());
- continue;
- }
-
- EncryptedAssertion* enc=dynamic_cast<EncryptedAssertion*>(*i);
- if (enc) {
- getEncryptedAssertions().push_back(enc->cloneEncryptedAssertion());
- continue;
- }
- }
- }
+ IMPL_CLONE_CHILDBAG_BEGIN;
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(AssertionIDRef);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(AssertionURIRef);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(Assertion);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(EncryptedAssertion);
+ IMPL_CLONE_CHILDBAG_END;
}
-
+
IMPL_XMLOBJECT_CLONE(Evidence);
IMPL_TYPED_CHILDREN(AssertionIDRef,m_children.end());
IMPL_TYPED_CHILDREN(AssertionURIRef,m_children.end());
IMPL_TYPED_CHILDREN(Assertion,m_children.end());
IMPL_TYPED_CHILDREN(EncryptedAssertion,m_children.end());
-
+
protected:
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
PROC_TYPED_CHILDREN(AssertionIDRef,SAML20_NS,false);
public AbstractXMLObjectUnmarshaller
{
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_children.begin();
}
+
public:
virtual ~AuthzDecisionStatementImpl() {
XMLString::release(&m_Resource);
XMLString::release(&m_Decision);
}
-
- AuthzDecisionStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+
+ AuthzDecisionStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
AuthzDecisionStatementImpl(const AuthzDecisionStatementImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
- setResource(src.getResource());
- setDecision(src.getDecision());
- if (src.getEvidence())
- setEvidence(src.getEvidence()->cloneEvidence());
- VectorOf(Action) v=getActions();
- for (vector<Action*>::const_iterator i=src.m_Actions.begin(); i!=src.m_Actions.end(); i++) {
- if (*i) {
- v.push_back((*i)->cloneAction());
- }
- }
- }
-
- IMPL_XMLOBJECT_CLONE(AuthzDecisionStatement);
- Statement* cloneStatement() const {
- return cloneAuthzDecisionStatement();
+ IMPL_CLONE_ATTRIB(Resource);
+ IMPL_CLONE_ATTRIB(Decision);
+ IMPL_CLONE_TYPED_CHILD(Evidence);
+ IMPL_CLONE_TYPED_CHILDREN(Action);
}
+
+ IMPL_XMLOBJECT_CLONE2(AuthzDecisionStatement,Statement);
IMPL_STRING_ATTRIB(Resource);
IMPL_STRING_ATTRIB(Decision);
IMPL_TYPED_CHILD(Evidence);
IMPL_TYPED_CHILDREN(Action, m_pos_Evidence);
-
+
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);
}
-
+
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
PROC_TYPED_CHILD(Evidence,SAML20_NS,false);
PROC_TYPED_CHILDREN(Action,SAML20_NS,false);
AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
}
-
+
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);
AbstractXMLObjectUnmarshaller::processAttribute(attribute);
}
};
{
public:
virtual ~AttributeValueImpl() {}
-
- AttributeValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
- : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
- }
-
- AttributeValueImpl(const AttributeValueImpl& src) : AnyElementImpl(src) {
- }
-
- IMPL_XMLOBJECT_CLONE(AttributeValue);
+
+ AttributeValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
+ AttributeValueImpl(const AttributeValueImpl& src) : AbstractXMLObject(src), AnyElementImpl(src) {}
+
+ IMPL_XMLOBJECT_CLONE_EX(AttributeValue);
};
public AbstractXMLObjectUnmarshaller
{
void init() {
- m_Name=m_NameFormat=m_FriendlyName=NULL;
+ m_Name=m_NameFormat=m_FriendlyName=nullptr;
}
+
public:
virtual ~AttributeImpl() {
XMLString::release(&m_Name);
XMLString::release(&m_NameFormat);
XMLString::release(&m_FriendlyName);
}
-
- 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();
}
-
+
AttributeImpl(const AttributeImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src),
AbstractAttributeExtensibleXMLObject(src), AbstractDOMCachingXMLObject(src) {
init();
- setName(src.getName());
- setNameFormat(src.getNameFormat());
- setFriendlyName(src.getFriendlyName());
- VectorOf(XMLObject) v=getAttributeValues();
- for (vector<XMLObject*>::const_iterator i=src.m_AttributeValues.begin(); i!=src.m_AttributeValues.end(); i++) {
- if (*i) {
- v.push_back((*i)->clone());
- }
- }
+ IMPL_CLONE_ATTRIB(Name);
+ IMPL_CLONE_ATTRIB(NameFormat);
+ IMPL_CLONE_ATTRIB(FriendlyName);
+ IMPL_CLONE_XMLOBJECT_CHILDREN(AttributeValue);
}
-
+
IMPL_XMLOBJECT_CLONE(Attribute);
IMPL_STRING_ATTRIB(Name);
IMPL_STRING_ATTRIB(NameFormat);
IMPL_STRING_ATTRIB(FriendlyName);
IMPL_XMLOBJECT_CHILDREN(AttributeValue,m_children.end());
-
- void setAttribute(const QName& qualifiedName, const XMLCh* value, bool ID=false) {
+
+ void setAttribute(const xmltooling::QName& qualifiedName, const XMLCh* value, bool ID=false) {
if (!qualifiedName.hasNamespaceURI()) {
if (XMLString::equals(qualifiedName.getLocalPart(),NAME_ATTRIB_NAME)) {
setName(value);
protected:
void marshallAttributes(DOMElement* domElement) const {
- MARSHALL_STRING_ATTRIB(Name,NAME,NULL);
- MARSHALL_STRING_ATTRIB(NameFormat,NAMEFORMAT,NULL);
- MARSHALL_STRING_ATTRIB(FriendlyName,FRIENDLYNAME,NULL);
+ MARSHALL_STRING_ATTRIB(Name,NAME,nullptr);
+ MARSHALL_STRING_ATTRIB(NameFormat,NAMEFORMAT,nullptr);
+ MARSHALL_STRING_ATTRIB(FriendlyName,FRIENDLYNAME,nullptr);
marshallExtensionAttributes(domElement);
}
}
};
- //TODO unit test for this
class SAML_DLLLOCAL EncryptedAttributeImpl : public virtual EncryptedAttribute, public EncryptedElementTypeImpl
{
public:
virtual ~EncryptedAttributeImpl() {}
-
- EncryptedAttributeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+
+ EncryptedAttributeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
-
+
EncryptedAttributeImpl(const EncryptedAttributeImpl& src) : AbstractXMLObject(src), EncryptedElementTypeImpl(src) {}
-
- IMPL_XMLOBJECT_CLONE(EncryptedAttribute);
- EncryptedElementType* cloneEncryptedElementType() const {
- return new EncryptedAttributeImpl(*this);
- }
+
+ IMPL_XMLOBJECT_CLONE_EX(EncryptedAttribute);
};
class SAML_DLLLOCAL AttributeStatementImpl : public virtual AttributeStatement,
{
public:
virtual ~AttributeStatementImpl() {}
-
- AttributeStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
- : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
- }
-
+
+ AttributeStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
AttributeStatementImpl(const AttributeStatementImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
- for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
- if (*i) {
- Attribute* attribute=dynamic_cast<Attribute*>(*i);
- if (attribute) {
- getAttributes().push_back(attribute->cloneAttribute());
- continue;
- }
-
- EncryptedAttribute* enc=dynamic_cast<EncryptedAttribute*>(*i);
- if (enc) {
- getEncryptedAttributes().push_back(enc->cloneEncryptedAttribute());
- continue;
- }
- }
- }
- }
-
- IMPL_XMLOBJECT_CLONE(AttributeStatement);
- Statement* cloneStatement() const {
- return cloneAttributeStatement();
+ IMPL_CLONE_CHILDBAG_BEGIN;
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(Attribute);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(EncryptedAttribute);
+ IMPL_CLONE_CHILDBAG_END;
}
+
+ IMPL_XMLOBJECT_CLONE2(AttributeStatement,Statement);
IMPL_TYPED_CHILDREN(Attribute, m_children.end());
IMPL_TYPED_CHILDREN(EncryptedAttribute, m_children.end());
-
+
protected:
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
PROC_TYPED_CHILDREN(Attribute,SAML20_NS,false);
{
public:
virtual ~AdviceImpl() {}
-
- AdviceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
- : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
- }
-
+
+ AdviceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
+
AdviceImpl(const AdviceImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
- for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
- if (*i) {
- AssertionIDRef* ref=dynamic_cast<AssertionIDRef*>(*i);
- if (ref) {
- getAssertionIDRefs().push_back(ref->cloneAssertionIDRef());
- continue;
- }
-
- AssertionURIRef* uri=dynamic_cast<AssertionURIRef*>(*i);
- if (uri) {
- getAssertionURIRefs().push_back(uri->cloneAssertionURIRef());
- continue;
- }
-
- Assertion* assertion=dynamic_cast<Assertion*>(*i);
- if (assertion) {
- getAssertions().push_back(assertion->cloneAssertion());
- continue;
- }
-
- EncryptedAssertion* enc=dynamic_cast<EncryptedAssertion*>(*i);
- if (enc) {
- getEncryptedAssertions().push_back(enc->cloneEncryptedAssertion());
- continue;
- }
-
- getUnknownXMLObjects().push_back((*i)->clone());
- }
- }
+ IMPL_CLONE_CHILDBAG_BEGIN;
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(AssertionIDRef);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(AssertionURIRef);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(Assertion);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(EncryptedAssertion);
+ IMPL_CLONE_XMLOBJECT_CHILD_IN_BAG(UnknownXMLObject);
+ IMPL_CLONE_CHILDBAG_END;
}
-
+
IMPL_XMLOBJECT_CLONE(Advice);
IMPL_TYPED_CHILDREN(AssertionIDRef,m_children.end());
IMPL_TYPED_CHILDREN(AssertionURIRef,m_children.end());
IMPL_TYPED_CHILDREN(Assertion,m_children.end());
IMPL_TYPED_CHILDREN(EncryptedAssertion,m_children.end());
IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
-
+
protected:
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
PROC_TYPED_CHILDREN(AssertionIDRef,SAML20_NS,false);
PROC_TYPED_CHILDREN(AssertionURIRef,SAML20_NS,false);
PROC_TYPED_CHILDREN(Assertion,SAML20_NS,false);
PROC_TYPED_CHILDREN(EncryptedAssertion,SAML20_NS,false);
-
+
// Unknown child.
const XMLCh* nsURI=root->getNamespaceURI();
if (!XMLString::equals(nsURI,SAML20_NS) && nsURI && *nsURI) {
getUnknownXMLObjects().push_back(childXMLObject);
return;
}
-
+
AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
}
};
- //TODO unit test for this
class SAML_DLLLOCAL EncryptedAssertionImpl : public virtual EncryptedAssertion, public EncryptedElementTypeImpl
{
public:
virtual ~EncryptedAssertionImpl() {}
-
- EncryptedAssertionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+
+ EncryptedAssertionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
-
+
EncryptedAssertionImpl(const EncryptedAssertionImpl& src) : AbstractXMLObject(src), EncryptedElementTypeImpl(src) {}
-
- IMPL_XMLOBJECT_CLONE(EncryptedAssertion);
- EncryptedElementType* cloneEncryptedElementType() const {
- return new EncryptedAssertionImpl(*this);
- }
+
+ IMPL_XMLOBJECT_CLONE_EX(EncryptedAssertion);
};
class SAML_DLLLOCAL AssertionImpl : public virtual Assertion,
public AbstractXMLObjectUnmarshaller
{
void init() {
- m_ID=NULL;
- m_Version=NULL;
- m_IssueInstant=NULL;
- m_Issuer=NULL;
- m_Signature=NULL;
- m_Subject=NULL;
- m_Conditions=NULL;
- m_Advice=NULL;
- m_children.push_back(NULL);
- m_children.push_back(NULL);
- m_children.push_back(NULL);
- m_children.push_back(NULL);
- m_children.push_back(NULL);
+ m_ID=nullptr;
+ m_Version=nullptr;
+ m_IssueInstant=nullptr;
+ m_Issuer=nullptr;
+ m_Signature=nullptr;
+ m_Subject=nullptr;
+ m_Conditions=nullptr;
+ m_Advice=nullptr;
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
+ m_children.push_back(nullptr);
m_pos_Issuer=m_children.begin();
m_pos_Signature=m_pos_Issuer;
++m_pos_Signature;
m_pos_Advice=m_pos_Conditions;
++m_pos_Advice;
}
+
public:
virtual ~AssertionImpl() {
XMLString::release(&m_ID);
XMLString::release(&m_Version);
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();
}
-
+
AssertionImpl(const AssertionImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
- setVersion(src.getVersion());
- setID(src.getID());
- setIssueInstant(src.getIssueInstant());
- if (src.getIssuer())
- setIssuer(src.getIssuer()->cloneIssuer());
- if (src.getSignature())
- setSignature(src.getSignature()->cloneSignature());
- if (src.getSubject())
- setSubject(src.getSubject()->cloneSubject());
- if (src.getConditions())
- setConditions(src.getConditions()->cloneConditions());
- if (src.getAdvice())
- setAdvice(src.getAdvice()->cloneAdvice());
- for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
- if (*i) {
- AuthnStatement* authst=dynamic_cast<AuthnStatement*>(*i);
- if (authst) {
- getAuthnStatements().push_back(authst->cloneAuthnStatement());
- continue;
- }
-
- AttributeStatement* attst=dynamic_cast<AttributeStatement*>(*i);
- if (attst) {
- getAttributeStatements().push_back(attst->cloneAttributeStatement());
- continue;
- }
-
- AuthzDecisionStatement* authzst=dynamic_cast<AuthzDecisionStatement*>(*i);
- if (authzst) {
- getAuthzDecisionStatements().push_back(authzst->cloneAuthzDecisionStatement());
- continue;
- }
-
- Statement* st=dynamic_cast<Statement*>(*i);
- if (st) {
- getStatements().push_back(st->cloneStatement());
- continue;
- }
- }
- }
+ IMPL_CLONE_ATTRIB(Version);
+ IMPL_CLONE_ATTRIB(ID);
+ IMPL_CLONE_ATTRIB(IssueInstant);
+ IMPL_CLONE_TYPED_CHILD(Issuer);
+ IMPL_CLONE_TYPED_CHILD(Signature);
+ IMPL_CLONE_TYPED_CHILD(Subject);
+ IMPL_CLONE_TYPED_CHILD(Conditions);
+ IMPL_CLONE_TYPED_CHILD(Advice);
+ IMPL_CLONE_CHILDBAG_BEGIN;
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(AuthnStatement);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(AttributeStatement);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(AuthzDecisionStatement);
+ IMPL_CLONE_TYPED_CHILD_IN_BAG(Statement);
+ IMPL_CLONE_CHILDBAG_END;
}
-
+
//IMPL_TYPED_CHILD(Signature);
// Need customized setter.
protected:
- Signature* m_Signature;
+ xmlsignature::Signature* m_Signature;
list<XMLObject*>::iterator m_pos_Signature;
public:
- Signature* getSignature() const {
+ xmlsignature::Signature* getSignature() const {
return m_Signature;
}
-
- void setSignature(Signature* sig) {
+
+ void setSignature(xmlsignature::Signature* sig) {
prepareForAssignment(m_Signature,sig);
*m_pos_Signature=m_Signature=sig;
// Sync content reference back up.
if (m_Signature)
m_Signature->setContentReference(new opensaml::ContentReference(*this));
}
-
+
IMPL_XMLOBJECT_CLONE(Assertion);
IMPL_STRING_ATTRIB(Version);
- IMPL_ID_ATTRIB(ID);
+ IMPL_ID_ATTRIB_EX(ID,ID,nullptr);
IMPL_DATETIME_ATTRIB(IssueInstant,0);
IMPL_TYPED_CHILD(Issuer);
IMPL_TYPED_CHILD(Subject);
IMPL_TYPED_CHILDREN(AuthnStatement, m_children.end());
IMPL_TYPED_CHILDREN(AttributeStatement, m_children.end());
IMPL_TYPED_CHILDREN(AuthzDecisionStatement, m_children.end());
-
+
protected:
+ void prepareForMarshalling() const {
+ if (m_Signature)
+ declareNonVisibleNamespaces();
+ }
+
void marshallAttributes(DOMElement* domElement) const {
if (!m_Version)
const_cast<AssertionImpl*>(this)->m_Version=XMLString::transcode("2.0");
- MARSHALL_STRING_ATTRIB(Version,VER,NULL);
+ MARSHALL_STRING_ATTRIB(Version,VER,nullptr);
if (!m_ID)
const_cast<AssertionImpl*>(this)->m_ID=SAMLConfig::getConfig().generateIdentifier();
- MARSHALL_ID_ATTRIB(ID,ID,NULL);
+ MARSHALL_ID_ATTRIB(ID,ID,nullptr);
if (!m_IssueInstant) {
- const_cast<AssertionImpl*>(this)->m_IssueInstantEpoch=time(NULL);
+ const_cast<AssertionImpl*>(this)->m_IssueInstantEpoch=time(nullptr);
const_cast<AssertionImpl*>(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) {
PROC_TYPED_CHILD(Issuer,SAML20_NS,false);
- PROC_TYPED_CHILD(Signature,XMLSIG_NS,false);
+ PROC_TYPED_FOREIGN_CHILD(Signature,xmlsignature,XMLSIG_NS,false);
PROC_TYPED_CHILD(Subject,SAML20_NS,false);
PROC_TYPED_CHILD(Conditions,SAML20_NS,false);
PROC_TYPED_CHILD(Advice,SAML20_NS,false);
PROC_TYPED_CHILDREN(Statement,SAML20_NS,false);
AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
}
-
+
void processAttribute(const DOMAttr* attribute) {
- PROC_STRING_ATTRIB(Version,VER,NULL);
- PROC_ID_ATTRIB(ID,ID,NULL);
- PROC_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL);
+ PROC_STRING_ATTRIB(Version,VER,nullptr);
+ PROC_ID_ATTRIB(ID,ID,nullptr);
+ PROC_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,nullptr);
AbstractXMLObjectUnmarshaller::processAttribute(attribute);
}
};
IMPL_XMLOBJECTBUILDER(AuthnContextDeclRef);
IMPL_XMLOBJECTBUILDER(AuthnStatement);
IMPL_XMLOBJECTBUILDER(AuthzDecisionStatement);
+IMPL_XMLOBJECTBUILDER(Condition);
IMPL_XMLOBJECTBUILDER(Conditions);
+IMPL_XMLOBJECTBUILDER(Delegate);
+IMPL_XMLOBJECTBUILDER(DelegationRestrictionType);
IMPL_XMLOBJECTBUILDER(EncryptedAssertion);
IMPL_XMLOBJECTBUILDER(EncryptedAttribute);
IMPL_XMLOBJECTBUILDER(EncryptedID);
IMPL_XMLOBJECTBUILDER(NameIDType);
IMPL_XMLOBJECTBUILDER(OneTimeUse);
IMPL_XMLOBJECTBUILDER(ProxyRestriction);
+IMPL_XMLOBJECTBUILDER(Statement);
IMPL_XMLOBJECTBUILDER(Subject);
IMPL_XMLOBJECTBUILDER(SubjectConfirmation);
IMPL_XMLOBJECTBUILDER(SubjectConfirmationData);
const XMLCh Conditions::TYPE_NAME[] = UNICODE_LITERAL_14(C,o,n,d,i,t,i,o,n,s,T,y,p,e);
const XMLCh Conditions::NOTBEFORE_ATTRIB_NAME[] = UNICODE_LITERAL_9(N,o,t,B,e,f,o,r,e);
const XMLCh Conditions::NOTONORAFTER_ATTRIB_NAME[] =UNICODE_LITERAL_12(N,o,t,O,n,O,r,A,f,t,e,r);
+const XMLCh Delegate::LOCAL_NAME[] = UNICODE_LITERAL_8(D,e,l,e,g,a,t,e);
+const XMLCh Delegate::TYPE_NAME[] = UNICODE_LITERAL_12(D,e,l,e,g,a,t,e,T,y,p,e);
+const XMLCh Delegate::CONFIRMATIONMETHOD_ATTRIB_NAME[] = UNICODE_LITERAL_18(C,o,n,f,i,r,m,a,t,i,o,n,M,e,t,h,o,d);
+const XMLCh Delegate::DELEGATIONINSTANT_ATTRIB_NAME[] = UNICODE_LITERAL_17(D,e,l,e,g,a,t,i,o,n,I,n,s,t,a,n,t);
+const XMLCh DelegationRestrictionType::LOCAL_NAME[] = UNICODE_LITERAL_9(C,o,n,d,i,t,i,o,n);
+const XMLCh DelegationRestrictionType::TYPE_NAME[] =UNICODE_LITERAL_25(D,e,l,e,g,a,t,i,o,n,R,e,s,t,r,i,c,t,i,o,n,T,y,p,e);
const XMLCh EncryptedAssertion::LOCAL_NAME[] = UNICODE_LITERAL_18(E,n,c,r,y,p,t,e,d,A,s,s,e,r,t,i,o,n);
const XMLCh EncryptedAttribute::LOCAL_NAME[] = UNICODE_LITERAL_18(E,n,c,r,y,p,t,e,d,A,t,t,r,i,b,u,t,e);
const XMLCh EncryptedElementType::LOCAL_NAME[] = {chNull};
chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_1, chPeriod, chDigit_1, chColon,
chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_i, chLatin_d, chDash,
chLatin_f, chLatin_o, chLatin_r, chLatin_m, chLatin_a, chLatin_t, chColon,
- chLatin_u, chLatin_n, chLatin_s, chLatin_p, chLatin_e, chLatin_c, chLatin_i, chLatin_f, chLatin_i, chLatin_e, chLatin_d, chLatin_d, chNull
+ chLatin_u, chLatin_n, chLatin_s, chLatin_p, chLatin_e, chLatin_c, chLatin_i, chLatin_f, chLatin_i, chLatin_e, chLatin_d, chNull
};
const XMLCh NameIDType::EMAIL[] = // urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
chLatin_a, chLatin_t, chLatin_t, chLatin_r, chLatin_n, chLatin_a, chLatin_m, chLatin_e, chDash,
chLatin_f, chLatin_o, chLatin_r, chLatin_m, chLatin_a, chLatin_t, chColon,
- chLatin_u, chLatin_n, chLatin_s, chLatin_p, chLatin_e, chLatin_c, chLatin_i, chLatin_f, chLatin_i, chLatin_e, chLatin_d, chLatin_d, chNull
+ chLatin_u, chLatin_n, chLatin_s, chLatin_p, chLatin_e, chLatin_c, chLatin_i, chLatin_f, chLatin_i, chLatin_e, chLatin_d, chNull
};
const XMLCh Attribute::URI_REFERENCE[] = // urn:oasis:names:tc:SAML:2.0:attrname-format:uri