+ class SAML_API AttributeQueryDescriptorTypeBuilder : public xmltooling::ConcreteXMLObjectBuilder {
+ public:
+ virtual ~AttributeQueryDescriptorTypeBuilder() {}
+ /** Default builder. */
+#ifdef HAVE_COVARIANT_RETURNS
+ virtual AttributeQueryDescriptorType* buildObject() const {
+#else
+ virtual xmltooling::XMLObject* buildObject() const {
+#endif
+ xmltooling::QName schemaType(
+ samlconstants::SAML20MD_QUERY_EXT_NS,AttributeQueryDescriptorType::TYPE_NAME,samlconstants::SAML20MD_QUERY_EXT_PREFIX
+ );
+ return buildObject(
+ samlconstants::SAML20MD_NS,AttributeQueryDescriptorType::LOCAL_NAME,samlconstants::SAML20MD_PREFIX,&schemaType
+ );
+ }
+ /** 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;
+
+ /** Singleton builder. */
+ static AttributeQueryDescriptorType* buildAttributeQueryDescriptorType() {
+ const AttributeQueryDescriptorTypeBuilder* b = dynamic_cast<const AttributeQueryDescriptorTypeBuilder*>(
+ XMLObjectBuilder::getBuilder(xmltooling::QName(samlconstants::SAML20MD_QUERY_EXT_NS,AttributeQueryDescriptorType::TYPE_NAME))
+ );
+ 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.");
+ }
+ };
+
+ /**
+ * Builder for AuthzDecisionQueryDescriptorType objects.
+ *
+ * This is customized to return a RoleDescriptor element with an
+ * xsi:type of AuthzDecisionQueryDescriptorType.
+ */
+ class SAML_API AuthzDecisionQueryDescriptorTypeBuilder : public xmltooling::ConcreteXMLObjectBuilder {
+ public:
+ virtual ~AuthzDecisionQueryDescriptorTypeBuilder() {}
+ /** Default builder. */
+#ifdef HAVE_COVARIANT_RETURNS
+ virtual AuthzDecisionQueryDescriptorType* buildObject() const {
+#else
+ virtual xmltooling::XMLObject* buildObject() const {
+#endif
+ xmltooling::QName schemaType(
+ samlconstants::SAML20MD_QUERY_EXT_NS,AuthzDecisionQueryDescriptorType::TYPE_NAME,samlconstants::SAML20MD_QUERY_EXT_PREFIX
+ );
+ return buildObject(
+ samlconstants::SAML20MD_NS,AuthzDecisionQueryDescriptorType::LOCAL_NAME,samlconstants::SAML20MD_PREFIX,&schemaType
+ );
+ }
+ /** 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;
+
+ /** Singleton builder. */
+ static AuthzDecisionQueryDescriptorType* buildAuthzDecisionQueryDescriptorType() {
+ const AuthzDecisionQueryDescriptorTypeBuilder* b = dynamic_cast<const AuthzDecisionQueryDescriptorTypeBuilder*>(
+ XMLObjectBuilder::getBuilder(xmltooling::QName(samlconstants::SAML20MD_QUERY_EXT_NS,AuthzDecisionQueryDescriptorType::TYPE_NAME))
+ );
+ 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.");
+ }
+ };
+
+ /**
+ * Registers builders and validators for SAML 2.0 Metadata classes into the runtime.
+ */
+ void SAML_API registerMetadataClasses();