/*
* 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
/**
* Assertions20Impl.cpp
- *
+ *
* Implementation classes for SAML 2.0 Assertions schema
*/
void init() {
m_Format=m_SPProvidedID=m_NameQualifier=m_SPNameQualifier=NULL;
}
-
+
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)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
NameIDTypeImpl(const NameIDTypeImpl& src)
: AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
init();
setFormat(src.getFormat());
setSPProvidedID(src.getSPProvidedID());
}
-
+
IMPL_XMLOBJECT_CLONE(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);
{
public:
virtual ~NameIDImpl() {}
-
+
NameIDImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const 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);
{
public:
virtual ~IssuerImpl() {}
-
+
IssuerImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const 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);
m_children.push_back(NULL);
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)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
EncryptedElementTypeImpl(const EncryptedElementTypeImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
}
}
}
-
+
IMPL_XMLOBJECT_CLONE(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)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
-
+
EncryptedIDImpl(const EncryptedIDImpl& src) : AbstractXMLObject(src), EncryptedElementTypeImpl(src) {}
-
+
IMPL_XMLOBJECT_CLONE(EncryptedID);
EncryptedElementType* cloneEncryptedElementType() const {
return new EncryptedIDImpl(*this);
}
};
+ class SAML_DLLLOCAL ConditionImpl : public virtual Condition, public AnyElementImpl
+ {
+ public:
+ virtual ~ConditionImpl() {}
+
+ ConditionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
+ }
+
+ ConditionImpl(const ConditionImpl& src) : AnyElementImpl(src) {}
+
+ IMPL_XMLOBJECT_CLONE(Condition);
+ };
+
class SAML_DLLLOCAL AudienceRestrictionImpl : public virtual AudienceRestriction,
public AbstractComplexElement,
public AbstractDOMCachingXMLObject,
{
public:
virtual ~AudienceRestrictionImpl() {}
-
+
AudienceRestrictionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
}
-
+
AudienceRestrictionImpl(const AudienceRestrictionImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
VectorOf(Audience) v=getAudiences();
}
}
}
-
+
IMPL_XMLOBJECT_CLONE(AudienceRestriction);
Condition* cloneCondition() const {
return cloneAudienceRestriction();
}
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 OneTimeUseImpl& src)
: AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
}
-
+
IMPL_XMLOBJECT_CLONE(OneTimeUse);
Condition* cloneCondition() const {
return cloneOneTimeUse();
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 ProxyRestrictionImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
setCount(src.m_Count);
}
}
}
-
+
IMPL_XMLOBJECT_CLONE(ProxyRestriction);
Condition* cloneCondition() const {
return cloneProxyRestriction();
}
IMPL_TYPED_CHILDREN(Audience,m_children.end());
IMPL_INTEGER_ATTRIB(Count);
-
+
protected:
void marshallAttributes(DOMElement* domElement) const {
MARSHALL_INTEGER_ATTRIB(Count,COUNT,NULL);
delete m_NotBefore;
delete m_NotOnOrAfter;
}
-
+
ConditionsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
ConditionsImpl(const ConditionsImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
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());
}
}
}
-
+
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);
}
-
+
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);
XMLString::release(&m_InResponseTo);
XMLString::release(&m_Address);
}
-
+
SubjectConfirmationDataTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
SubjectConfirmationDataTypeImpl(const SubjectConfirmationDataTypeImpl& src) : AbstractXMLObject(src) {
init();
setNotBefore(src.getNotBefore());
setInResponseTo(src.getInResponseTo());
setAddress(src.getAddress());
}
-
+
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_STRING_ATTRIB(InResponseTo,INRESPONSETO,NULL);
MARSHALL_STRING_ATTRIB(Address,ADDRESS,NULL);
}
-
+
void processAttribute(const DOMAttr* attribute) {
PROC_DATETIME_ATTRIB(NotBefore,NOTBEFORE,NULL);
PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL);
{
public:
virtual ~SubjectConfirmationDataImpl() {}
-
+
SubjectConfirmationDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
}
-
+
SubjectConfirmationDataImpl(const SubjectConfirmationDataImpl& src)
: SubjectConfirmationDataTypeImpl(src), AnyElementImpl(src) {
}
{
public:
virtual ~KeyInfoConfirmationDataTypeImpl() {}
-
+
KeyInfoConfirmationDataTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
}
-
+
KeyInfoConfirmationDataTypeImpl(const KeyInfoConfirmationDataTypeImpl& src)
: AbstractXMLObject(src), SubjectConfirmationDataTypeImpl(src), AbstractComplexElement(src),
AbstractAttributeExtensibleXMLObject(src), AbstractDOMCachingXMLObject(src) {
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);
}
IMPL_TYPED_CHILDREN(KeyInfo,m_children.end());
-
+
public:
void setAttribute(const QName& qualifiedName, const XMLCh* value, bool ID=false) {
if (!qualifiedName.hasNamespaceURI()) {
SubjectConfirmationDataTypeImpl::marshallAttributes(domElement);
marshallExtensionAttributes(domElement);
}
-
+
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
PROC_TYPED_CHILDREN(KeyInfo,XMLSIG_NS,false);
AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
}
public:
virtual ~SubjectConfirmationImpl() {}
-
+
SubjectConfirmationImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
SubjectConfirmationImpl(const SubjectConfirmationImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
if (src.getSubjectConfirmationData())
setSubjectConfirmationData(src.getSubjectConfirmationData()->clone());
}
-
+
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);
}
public:
virtual ~SubjectImpl() {}
-
+
SubjectImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
SubjectImpl(const SubjectImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
}
}
}
-
+
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);
XMLString::release(&m_Address);
XMLString::release(&m_DNSName);
}
-
+
SubjectLocalityImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const 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_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);
}
-
+
void processAttribute(const DOMAttr* attribute) {
PROC_STRING_ATTRIB(Address,ADDRESS,NULL);
PROC_STRING_ATTRIB(DNSName,DNSNAME,NULL);
}
};
+ class SAML_DLLLOCAL StatementImpl : public virtual Statement, public AnyElementImpl
+ {
+ public:
+ virtual ~StatementImpl() {}
+
+ StatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
+ }
+
+ StatementImpl(const StatementImpl& src) : AnyElementImpl(src) {}
+
+ IMPL_XMLOBJECT_CLONE(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);
};
}
public:
virtual ~AuthnContextImpl() {}
-
+
AuthnContextImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
AuthnContextImpl(const AuthnContextImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
}
}
}
-
+
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);
XMLString::release(&m_SessionIndex);
delete m_SessionNotOnOrAfter;
}
-
+
AuthnStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
AuthnStatementImpl(const AuthnStatementImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
if (src.getAuthnContext())
setAuthnContext(src.getAuthnContext()->cloneAuthnContext());
}
-
+
IMPL_XMLOBJECT_CLONE(AuthnStatement);
Statement* cloneStatement() const {
return cloneAuthnStatement();
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);
}
-
+
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);
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 ActionImpl& src)
: AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
setNamespace(src.getNamespace());
}
-
+
IMPL_XMLOBJECT_CLONE(Action);
IMPL_STRING_ATTRIB(Namespace);
-
+
protected:
void marshallAttributes(DOMElement* domElement) const {
MARSHALL_STRING_ATTRIB(Namespace,NAMESPACE,NULL);
{
public:
virtual ~EvidenceImpl() {}
-
+
EvidenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const 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++) {
getAssertionIDRefs().push_back(ref->cloneAssertionIDRef());
continue;
}
-
+
AssertionURIRef* uri=dynamic_cast<AssertionURIRef*>(*i);
if (uri) {
getAssertionURIRefs().push_back(uri->cloneAssertionURIRef());
getAssertions().push_back(assertion->cloneAssertion());
continue;
}
-
+
EncryptedAssertion* enc=dynamic_cast<EncryptedAssertion*>(*i);
if (enc) {
getEncryptedAssertions().push_back(enc->cloneEncryptedAssertion());
}
}
}
-
+
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);
XMLString::release(&m_Resource);
XMLString::release(&m_Decision);
}
-
+
AuthzDecisionStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
AuthzDecisionStatementImpl(const AuthzDecisionStatementImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
}
}
}
-
+
IMPL_XMLOBJECT_CLONE(AuthzDecisionStatement);
Statement* cloneStatement() const {
return cloneAuthzDecisionStatement();
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);
}
-
+
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);
{
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);
};
XMLString::release(&m_NameFormat);
XMLString::release(&m_FriendlyName);
}
-
+
AttributeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
AttributeImpl(const AttributeImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src),
AbstractAttributeExtensibleXMLObject(src), AbstractDOMCachingXMLObject(src) {
}
}
}
-
+
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) {
if (!qualifiedName.hasNamespaceURI()) {
if (XMLString::equals(qualifiedName.getLocalPart(),NAME_ATTRIB_NAME)) {
}
};
- //TODO unit test for this
+ //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)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
-
+
EncryptedAttributeImpl(const EncryptedAttributeImpl& src) : AbstractXMLObject(src), EncryptedElementTypeImpl(src) {}
-
+
IMPL_XMLOBJECT_CLONE(EncryptedAttribute);
EncryptedElementType* cloneEncryptedElementType() const {
return new EncryptedAttributeImpl(*this);
{
public:
virtual ~AttributeStatementImpl() {}
-
+
AttributeStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const 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++) {
getAttributes().push_back(attribute->cloneAttribute());
continue;
}
-
+
EncryptedAttribute* enc=dynamic_cast<EncryptedAttribute*>(*i);
if (enc) {
getEncryptedAttributes().push_back(enc->cloneEncryptedAttribute());
}
}
}
-
+
IMPL_XMLOBJECT_CLONE(AttributeStatement);
Statement* cloneStatement() const {
return cloneAttributeStatement();
}
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 AdviceImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
getAssertionIDRefs().push_back(ref->cloneAssertionIDRef());
continue;
}
-
+
AssertionURIRef* uri=dynamic_cast<AssertionURIRef*>(*i);
if (uri) {
getAssertionURIRefs().push_back(uri->cloneAssertionURIRef());
getAssertions().push_back(assertion->cloneAssertion());
continue;
}
-
+
EncryptedAssertion* enc=dynamic_cast<EncryptedAssertion*>(*i);
if (enc) {
getEncryptedAssertions().push_back(enc->cloneEncryptedAssertion());
}
}
}
-
+
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
+ //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)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
-
+
EncryptedAssertionImpl(const EncryptedAssertionImpl& src) : AbstractXMLObject(src), EncryptedElementTypeImpl(src) {}
-
+
IMPL_XMLOBJECT_CLONE(EncryptedAssertion);
EncryptedElementType* cloneEncryptedElementType() const {
return new EncryptedAssertionImpl(*this);
XMLString::release(&m_Version);
delete m_IssueInstant;
}
-
+
AssertionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
-
+
AssertionImpl(const AssertionImpl& src)
: AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
init();
getAuthzDecisionStatements().push_back(authzst->cloneAuthzDecisionStatement());
continue;
}
-
+
Statement* st=dynamic_cast<Statement*>(*i);
if (st) {
getStatements().push_back(st->cloneStatement());
}
}
}
-
+
//IMPL_TYPED_CHILD(Signature);
// Need customized setter.
protected:
Signature* getSignature() const {
return m_Signature;
}
-
+
void setSignature(Signature* sig) {
prepareForAssignment(m_Signature,sig);
*m_pos_Signature=m_Signature=sig;
if (m_Signature)
m_Signature->setContentReference(new opensaml::ContentReference(*this));
}
-
+
IMPL_XMLOBJECT_CLONE(Assertion);
IMPL_STRING_ATTRIB(Version);
IMPL_ID_ATTRIB(ID);
IMPL_TYPED_CHILDREN(AuthnStatement, m_children.end());
IMPL_TYPED_CHILDREN(AttributeStatement, m_children.end());
IMPL_TYPED_CHILDREN(AuthzDecisionStatement, m_children.end());
-
+
protected:
void marshallAttributes(DOMElement* domElement) const {
if (!m_Version)
}
MARSHALL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL);
}
-
+
void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
PROC_TYPED_CHILD(Issuer,SAML20_NS,false);
PROC_TYPED_CHILD(Signature,XMLSIG_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);
IMPL_XMLOBJECTBUILDER(AuthnContextDeclRef);
IMPL_XMLOBJECTBUILDER(AuthnStatement);
IMPL_XMLOBJECTBUILDER(AuthzDecisionStatement);
+IMPL_XMLOBJECTBUILDER(Condition);
IMPL_XMLOBJECTBUILDER(Conditions);
IMPL_XMLOBJECTBUILDER(EncryptedAssertion);
IMPL_XMLOBJECTBUILDER(EncryptedAttribute);
IMPL_XMLOBJECTBUILDER(NameIDType);
IMPL_XMLOBJECTBUILDER(OneTimeUse);
IMPL_XMLOBJECTBUILDER(ProxyRestriction);
+IMPL_XMLOBJECTBUILDER(Statement);
IMPL_XMLOBJECTBUILDER(Subject);
IMPL_XMLOBJECTBUILDER(SubjectConfirmation);
IMPL_XMLOBJECTBUILDER(SubjectConfirmationData);