ReplayCache, some decoder work, and merged schema validators into one suite.
[shibboleth/cpp-opensaml.git] / saml / saml2 / metadata / impl / MetadataSchemaValidators.cpp
index 707ac67..36e1a29 100644 (file)
@@ -33,12 +33,14 @@ using namespace std;
 namespace opensaml {
     namespace saml2md {
         
+        XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,ActionNamespace);
         XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,AffiliateMember);
         XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,AttributeProfile);
         XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,Company);
         XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,EmailAddress);
         XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,GivenName);
         XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,NameIDFormat);
+        XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,SourceID);
         XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,SurName);
         XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,TelephoneNumber);
 
@@ -245,12 +247,12 @@ namespace opensaml {
 #define REGISTER_ELEMENT(cname) \
     q=QName(SAMLConstants::SAML20MD_NS,cname::LOCAL_NAME); \
     XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \
-    MetadataSchemaValidators.registerValidator(q,new cname##SchemaValidator())
+    SchemaValidators.registerValidator(q,new cname##SchemaValidator())
     
 #define REGISTER_TYPE(cname) \
     q=QName(SAMLConstants::SAML20MD_NS,cname::TYPE_NAME); \
     XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \
-    MetadataSchemaValidators.registerValidator(q,new cname##SchemaValidator())
+    SchemaValidators.registerValidator(q,new cname##SchemaValidator())
 
 #define REGISTER_ELEMENT_NOVAL(cname) \
     q=QName(SAMLConstants::SAML20MD_NS,cname::LOCAL_NAME); \
@@ -260,8 +262,6 @@ namespace opensaml {
     q=QName(SAMLConstants::SAML20MD_NS,cname::TYPE_NAME); \
     XMLObjectBuilder::registerBuilder(q,new cname##Builder());
 
-ValidatorSuite opensaml::saml2md::MetadataSchemaValidators("MetadataSchemaValidators");
-
 void opensaml::saml2md::registerMetadataClasses() {
     QName q;
     REGISTER_ELEMENT(AdditionalMetadataLocation);
@@ -321,4 +321,24 @@ void opensaml::saml2md::registerMetadataClasses() {
     REGISTER_TYPE(PDPDescriptor);
     REGISTER_TYPE(RequestedAttribute);
     REGISTER_TYPE(SPSSODescriptor);
+
+    q=QName(SAMLConstants::SAML1MD_NS,SourceID::LOCAL_NAME);
+    XMLObjectBuilder::registerBuilder(q,new SourceIDBuilder());
+    SchemaValidators.registerValidator(q,new SourceIDSchemaValidator());
+
+    q=QName(SAMLConstants::SAML20MD_QUERY_EXT_NS,ActionNamespace::LOCAL_NAME);
+    XMLObjectBuilder::registerBuilder(q,new ActionNamespaceBuilder());
+    SchemaValidators.registerValidator(q,new ActionNamespaceSchemaValidator());
+
+    q=QName(SAMLConstants::SAML20MD_QUERY_EXT_NS,AuthnQueryDescriptorType::TYPE_NAME);
+    XMLObjectBuilder::registerBuilder(q,new AuthnQueryDescriptorTypeBuilder());
+    SchemaValidators.registerValidator(q,new RoleDescriptorSchemaValidator());
+
+    q=QName(SAMLConstants::SAML20MD_QUERY_EXT_NS,AttributeQueryDescriptorType::TYPE_NAME);
+    XMLObjectBuilder::registerBuilder(q,new AttributeQueryDescriptorTypeBuilder());
+    SchemaValidators.registerValidator(q,new RoleDescriptorSchemaValidator());
+
+    q=QName(SAMLConstants::SAML20MD_QUERY_EXT_NS,AuthzDecisionQueryDescriptorType::TYPE_NAME);
+    XMLObjectBuilder::registerBuilder(q,new AuthzDecisionQueryDescriptorTypeBuilder());
+    SchemaValidators.registerValidator(q,new RoleDescriptorSchemaValidator());
 }