/*
- * 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.
#include <saml/saml2/core/Assertions.h>
#include <ctime>
-#include <xmltooling/security/KeyInfoSource.h>
#define DECL_SAML2MDOBJECTBUILDER(cname) \
DECL_XMLOBJECTBUILDER(SAML_API,cname,samlconstants::SAML20MD_NS,samlconstants::SAML20MD_PREFIX)
DECL_SIMPLE_CONTENT(URL);
END_XMLOBJECT;
- BEGIN_XMLOBJECT(SAML_API,Extensions,xmltooling::ElementProxy,SAML 2.0 Extensions element);
+ BEGIN_XMLOBJECT(SAML_API,Extensions,xmltooling::ElementExtensibleXMLObject,SAML 2.0 Extensions element);
/** ExtensionsType local name */
static const XMLCh TYPE_NAME[];
END_XMLOBJECT;
static const XMLCh KEYTYPE_SIGNING[];
END_XMLOBJECT;
- BEGIN_XMLOBJECT5(SAML_API,RoleDescriptor,xmltooling::AttributeExtensibleXMLObject,SignableObject,
- CacheableSAMLObject,TimeBoundSAMLObject,xmltooling::KeyInfoSource,
- SAML 2.0 RoleDescriptor abstract element);
+ BEGIN_XMLOBJECT4(SAML_API,RoleDescriptor,xmltooling::AttributeExtensibleXMLObject,SignableObject,
+ CacheableSAMLObject,TimeBoundSAMLObject,SAML 2.0 RoleDescriptor abstract element);
DECL_STRING_ATTRIB(ID,ID);
DECL_STRING_ATTRIB(ProtocolSupportEnumeration,PROTOCOLSUPPORTENUMERATION);
/** Searches the ProtocolSupportEnumeration attribute for the indicated protocol. */
virtual bool hasSupport(const XMLCh* protocol) const=0;
+ /** Adds the indicated protocol to the ProtocolSupportEnumeration attribute. */
+ virtual void addSupport(const XMLCh* protocol)=0;
DECL_STRING_ATTRIB(ErrorURL,ERRORURL);
- DECL_INHERITED_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
DECL_TYPED_CHILD(Extensions);
DECL_TYPED_CHILDREN(KeyDescriptor);
DECL_TYPED_CHILD(Organization);
DECL_TYPED_CHILDREN(ContactPerson);
END_XMLOBJECT;
- BEGIN_XMLOBJECT2(SAML_API,EndpointType,xmltooling::ElementProxy,xmltooling::AttributeExtensibleXMLObject,SAML 2.0 EndpointType type);
+ BEGIN_XMLOBJECT(SAML_API,EndpointType,xmltooling::ElementProxy,SAML 2.0 EndpointType type);
DECL_STRING_ATTRIB(Binding,BINDING);
DECL_STRING_ATTRIB(Location,LOCATION);
DECL_STRING_ATTRIB(ResponseLocation,RESPONSELOCATION);
CacheableSAMLObject,TimeBoundSAMLObject,SAML 2.0 AffiliationDescriptor element);
DECL_STRING_ATTRIB(ID,ID);
DECL_STRING_ATTRIB(AffiliationOwnerID,AFFILIATIONOWNERID);
- DECL_INHERITED_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
DECL_TYPED_CHILD(Extensions);
DECL_TYPED_CHILDREN(AffiliateMember);
DECL_TYPED_CHILDREN(KeyDescriptor);
CacheableSAMLObject,TimeBoundSAMLObject,SAML 2.0 EntityDescriptor element);
DECL_STRING_ATTRIB(ID,ID);
DECL_STRING_ATTRIB(EntityID,ENTITYID);
- DECL_INHERITED_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
DECL_TYPED_CHILD(Extensions);
DECL_TYPED_CHILD(AffiliationDescriptor);
DECL_TYPED_CHILDREN(RoleDescriptor);
DECL_TYPED_CHILDREN(AuthnQueryDescriptorType);
DECL_TYPED_CHILDREN(AttributeQueryDescriptorType);
DECL_TYPED_CHILDREN(AuthzDecisionQueryDescriptorType);
+ DECL_TYPED_CHILD(Organization);
+ DECL_TYPED_CHILDREN(ContactPerson);
+ DECL_TYPED_CHILDREN(AdditionalMetadataLocation);
/** Finds an IDP role supporting a given protocol. */
virtual const IDPSSODescriptor* getIDPSSODescriptor(const XMLCh* protocol) const=0;
/** Finds an SP role supporting a given protocol. */
TimeBoundSAMLObject,SAML 2.0 EntitiesDescriptor element);
DECL_STRING_ATTRIB(ID,ID);
DECL_STRING_ATTRIB(Name,NAME);
- DECL_INHERITED_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
DECL_TYPED_CHILD(Extensions);
DECL_TYPED_CHILDREN(EntityDescriptor);
DECL_TYPED_CHILDREN(EntitiesDescriptor);
public:
virtual ~localizedNameTypeBuilder() {}
/** Builder that allows element/type override. */
+#ifdef HAVE_COVARIANT_RETURNS
virtual localizedNameType* buildObject(
+#else
+ virtual xmltooling::XMLObject* buildObject(
+#endif
const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL
) const;
);
if (b) {
xmltooling::QName schemaType(samlconstants::SAML20MD_NS,localizedNameType::TYPE_NAME,samlconstants::SAML20MD_PREFIX);
+#ifdef HAVE_COVARIANT_RETURNS
return b->buildObject(nsURI, localName, prefix, &schemaType);
+#else
+ return dynamic_cast<localizedNameType*>(b->buildObject(nsURI, localName, prefix, &schemaType));
+#endif
}
throw xmltooling::XMLObjectException("Unable to obtain typed builder for localizedNameType.");
}
public:
virtual ~localizedURITypeBuilder() {}
/** Builder that allows element/type override. */
+#ifdef HAVE_COVARIANT_RETURNS
virtual localizedURIType* buildObject(
+#else
+ virtual xmltooling::XMLObject* buildObject(
+#endif
const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL
) const;
);
if (b) {
xmltooling::QName schemaType(samlconstants::SAML20MD_NS,localizedURIType::TYPE_NAME,samlconstants::SAML20MD_PREFIX);
+#ifdef HAVE_COVARIANT_RETURNS
return b->buildObject(nsURI, localName, prefix, &schemaType);
+#else
+ return dynamic_cast<localizedURIType*>(b->buildObject(nsURI, localName, prefix, &schemaType));
+#endif
}
throw xmltooling::XMLObjectException("Unable to obtain typed builder for localizedURIType.");
}
public:
virtual ~EndpointTypeBuilder() {}
/** Builder that allows element/type override. */
+#ifdef HAVE_COVARIANT_RETURNS
virtual EndpointType* buildObject(
+#else
+ virtual xmltooling::XMLObject* buildObject(
+#endif
const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL
) const;
);
if (b) {
xmltooling::QName schemaType(samlconstants::SAML20MD_NS,EndpointType::TYPE_NAME,samlconstants::SAML20MD_PREFIX);
+#ifdef HAVE_COVARIANT_RETURNS
return b->buildObject(nsURI, localName, prefix, &schemaType);
+#else
+ return dynamic_cast<EndpointType*>(b->buildObject(nsURI, localName, prefix, &schemaType));
+#endif
}
throw xmltooling::XMLObjectException("Unable to obtain typed builder for EndpointType.");
}
public:
virtual ~IndexedEndpointTypeBuilder() {}
/** Builder that allows element/type override. */
+#ifdef HAVE_COVARIANT_RETURNS
virtual IndexedEndpointType* buildObject(
+#else
+ virtual xmltooling::XMLObject* buildObject(
+#endif
const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL
) const;
);
if (b) {
xmltooling::QName schemaType(samlconstants::SAML20MD_NS,IndexedEndpointType::TYPE_NAME,samlconstants::SAML20MD_PREFIX);
+#ifdef HAVE_COVARIANT_RETURNS
return b->buildObject(nsURI, localName, prefix, &schemaType);
+#else
+ return dynamic_cast<IndexedEndpointType*>(b->buildObject(nsURI, localName, prefix, &schemaType));
+#endif
}
throw xmltooling::XMLObjectException("Unable to obtain typed builder for IndexedEndpointType.");
}
public:
virtual ~AuthnQueryDescriptorTypeBuilder() {}
/** Default builder. */
+#ifdef HAVE_COVARIANT_RETURNS
virtual AuthnQueryDescriptorType* buildObject() const {
+#else
+ virtual xmltooling::XMLObject* buildObject() const {
+#endif
xmltooling::QName schemaType(
samlconstants::SAML20_NS,AuthnQueryDescriptorType::TYPE_NAME,samlconstants::SAML20MD_QUERY_EXT_PREFIX
);
);
}
/** Builder that allows element/type override. */
+#ifdef HAVE_COVARIANT_RETURNS
virtual AuthnQueryDescriptorType* buildObject(
+#else
+ virtual xmltooling::XMLObject* buildObject(
+#endif
const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL
) const;
const AuthnQueryDescriptorTypeBuilder* b = dynamic_cast<const AuthnQueryDescriptorTypeBuilder*>(
XMLObjectBuilder::getBuilder(xmltooling::QName(samlconstants::SAML20MD_QUERY_EXT_NS,AuthnQueryDescriptorType::TYPE_NAME))
);
- if (b)
+ if (b) {
+#ifdef HAVE_COVARIANT_RETURNS
return b->buildObject();
+#else
+ return dynamic_cast<AuthnQueryDescriptorType*>(b->buildObject());
+#endif
+ }
throw xmltooling::XMLObjectException("Unable to obtain typed builder for AuthnQueryDescriptorType.");
}
};
public:
virtual ~AttributeQueryDescriptorTypeBuilder() {}
/** Default builder. */
+#ifdef HAVE_COVARIANT_RETURNS
virtual AttributeQueryDescriptorType* buildObject() const {
+#else
+ virtual xmltooling::XMLObject* buildObject() const {
+#endif
xmltooling::QName schemaType(
samlconstants::SAML20_NS,AttributeQueryDescriptorType::TYPE_NAME,samlconstants::SAML20MD_QUERY_EXT_PREFIX
);
);
}
/** Builder that allows element/type override. */
+#ifdef HAVE_COVARIANT_RETURNS
virtual AttributeQueryDescriptorType* buildObject(
+#else
+ virtual xmltooling::XMLObject* buildObject(
+#endif
const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL
) const;
const AttributeQueryDescriptorTypeBuilder* b = dynamic_cast<const AttributeQueryDescriptorTypeBuilder*>(
XMLObjectBuilder::getBuilder(xmltooling::QName(samlconstants::SAML20MD_QUERY_EXT_NS,AttributeQueryDescriptorType::TYPE_NAME))
);
- if (b)
+ if (b) {
+#ifdef HAVE_COVARIANT_RETURNS
return b->buildObject();
+#else
+ return dynamic_cast<AttributeQueryDescriptorType*>(b->buildObject());
+#endif
+ }
throw xmltooling::XMLObjectException("Unable to obtain typed builder for AttributeQueryDescriptorType.");
}
};
public:
virtual ~AuthzDecisionQueryDescriptorTypeBuilder() {}
/** Default builder. */
+#ifdef HAVE_COVARIANT_RETURNS
virtual AuthzDecisionQueryDescriptorType* buildObject() const {
+#else
+ virtual xmltooling::XMLObject* buildObject() const {
+#endif
xmltooling::QName schemaType(
samlconstants::SAML20_NS,AuthzDecisionQueryDescriptorType::TYPE_NAME,samlconstants::SAML20MD_QUERY_EXT_PREFIX
);
);
}
/** Builder that allows element/type override. */
+#ifdef HAVE_COVARIANT_RETURNS
virtual AuthzDecisionQueryDescriptorType* buildObject(
+#else
+ virtual xmltooling::XMLObject* buildObject(
+#endif
const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL
) const;
const AuthzDecisionQueryDescriptorTypeBuilder* b = dynamic_cast<const AuthzDecisionQueryDescriptorTypeBuilder*>(
XMLObjectBuilder::getBuilder(xmltooling::QName(samlconstants::SAML20MD_QUERY_EXT_NS,AuthzDecisionQueryDescriptorType::TYPE_NAME))
);
- if (b)
+ if (b) {
+#ifdef HAVE_COVARIANT_RETURNS
return b->buildObject();
+#else
+ return dynamic_cast<AuthzDecisionQueryDescriptorType*>(b->buildObject());
+#endif
+ }
throw xmltooling::XMLObjectException("Unable to obtain typed builder for AuthzDecisionQueryDescriptorType.");
}
};