From: Scott Cantor Date: Sun, 2 Jul 2006 22:22:45 +0000 (+0000) Subject: Added ValidatorSuite around groups of static validators. X-Git-Tag: 2.0-alpha1~233 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=commitdiff_plain;h=dcb21980274a17c1372787af204c6314a5e39ff0 Added ValidatorSuite around groups of static validators. --- diff --git a/saml/SAMLConfig.cpp b/saml/SAMLConfig.cpp index d7c1042..7859e9b 100644 --- a/saml/SAMLConfig.cpp +++ b/saml/SAMLConfig.cpp @@ -85,6 +85,12 @@ void SAMLInternalConfig::term() #ifdef _DEBUG xmltooling::NDC ndc("term"); #endif + + saml1::AssertionSchemaValidators.destroyValidators(); + saml1p::ProtocolSchemaValidators.destroyValidators(); + saml2::AssertionSchemaValidators.destroyValidators(); + saml2md::MetadataSchemaValidators.destroyValidators(); + XMLToolingConfig::getConfig().term(); Category::getInstance(SAML_LOGCAT".SAMLConfig").info("library shutdown complete"); } diff --git a/saml/saml1/core/Assertions.h b/saml/saml1/core/Assertions.h index c392f1a..1b4d72e 100644 --- a/saml/saml1/core/Assertions.h +++ b/saml/saml1/core/Assertions.h @@ -34,6 +34,7 @@ #include #include #include +#include #define DECL_SAML1OBJECTBUILDER(cname) \ DECL_XMLOBJECTBUILDER(SAML_API,cname,opensaml::SAMLConstants::SAML1_NS,opensaml::SAMLConstants::SAML1_PREFIX) @@ -234,9 +235,14 @@ namespace opensaml { DECL_SAML1OBJECTBUILDER(SubjectLocality); /** - * Registers builders and validators for Assertion classes into the runtime. + * Registers builders and validators for SAML 1.x Assertion classes into the runtime. */ void SAML_API registerAssertionClasses(); + + /** + * Validator suite for SAML 1.x Assertion schema validation. + */ + extern SAML_API xmltooling::ValidatorSuite AssertionSchemaValidators; }; }; diff --git a/saml/saml1/core/Protocols.h b/saml/saml1/core/Protocols.h index cd69ea4..5e07d02 100644 --- a/saml/saml1/core/Protocols.h +++ b/saml/saml1/core/Protocols.h @@ -156,9 +156,14 @@ namespace opensaml { DECL_SAML1POBJECTBUILDER(StatusMessage); /** - * Registers builders and validators for Protocol classes into the runtime. + * Registers builders and validators for SAML 1.x Protocol classes into the runtime. */ void SAML_API registerProtocolClasses(); + + /** + * Validator suite for SAML 1.x Protocol schema validation. + */ + extern SAML_API xmltooling::ValidatorSuite ProtocolSchemaValidators; }; }; diff --git a/saml/saml1/core/impl/AssertionsSchemaValidators.cpp b/saml/saml1/core/impl/AssertionsSchemaValidators.cpp index 815d725..61475c3 100644 --- a/saml/saml1/core/impl/AssertionsSchemaValidators.cpp +++ b/saml/saml1/core/impl/AssertionsSchemaValidators.cpp @@ -141,12 +141,12 @@ namespace opensaml { #define REGISTER_ELEMENT(cname) \ q=QName(SAMLConstants::SAML1_NS,cname::LOCAL_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - Validator::registerValidator(q,new cname##SchemaValidator()) + AssertionSchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_TYPE(cname) \ q=QName(SAMLConstants::SAML1_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - Validator::registerValidator(q,new cname##SchemaValidator()) + AssertionSchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_ELEMENT_NOVAL(cname) \ q=QName(SAMLConstants::SAML1_NS,cname::LOCAL_NAME); \ @@ -156,6 +156,8 @@ namespace opensaml { q=QName(SAMLConstants::SAML1_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); +ValidatorSuite opensaml::saml1::AssertionSchemaValidators("AssertionSchemaValidators"); + void opensaml::saml1::registerAssertionClasses() { QName q; REGISTER_ELEMENT(Action); diff --git a/saml/saml1/core/impl/ProtocolsSchemaValidators.cpp b/saml/saml1/core/impl/ProtocolsSchemaValidators.cpp index 59942ee..ab6e67e 100644 --- a/saml/saml1/core/impl/ProtocolsSchemaValidators.cpp +++ b/saml/saml1/core/impl/ProtocolsSchemaValidators.cpp @@ -92,12 +92,12 @@ namespace opensaml { #define REGISTER_ELEMENT(cname) \ q=QName(SAMLConstants::SAML1P_NS,cname::LOCAL_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - Validator::registerValidator(q,new cname##SchemaValidator()) + ProtocolSchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_TYPE(cname) \ q=QName(SAMLConstants::SAML1P_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - Validator::registerValidator(q,new cname##SchemaValidator()) + ProtocolSchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_ELEMENT_NOVAL(cname) \ q=QName(SAMLConstants::SAML1P_NS,cname::LOCAL_NAME); \ @@ -107,6 +107,8 @@ namespace opensaml { q=QName(SAMLConstants::SAML1P_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); +ValidatorSuite opensaml::saml1p::ProtocolSchemaValidators("ProtocolSchemaValidators"); + void opensaml::saml1p::registerProtocolClasses() { QName q; REGISTER_ELEMENT(AssertionArtifact); diff --git a/saml/saml2/core/Assertions.h b/saml/saml2/core/Assertions.h index a45b048..e00ca09 100644 --- a/saml/saml2/core/Assertions.h +++ b/saml/saml2/core/Assertions.h @@ -35,6 +35,7 @@ #include #include #include +#include #define DECL_SAML2OBJECTBUILDER(cname) \ DECL_XMLOBJECTBUILDER(SAML_API,cname,opensaml::SAMLConstants::SAML20_NS,opensaml::SAMLConstants::SAML20_PREFIX) @@ -380,9 +381,14 @@ namespace opensaml { }; /** - * Registers builders and validators for Assertion classes into the runtime. + * Registers builders and validators for SAML 2.0 Assertion classes into the runtime. */ void SAML_API registerAssertionClasses(); + + /** + * Validator suite for SAML 2.0 Assertion schema validation. + */ + extern SAML_API xmltooling::ValidatorSuite AssertionSchemaValidators; }; }; diff --git a/saml/saml2/core/impl/Assertions20SchemaValidators.cpp b/saml/saml2/core/impl/Assertions20SchemaValidators.cpp index 0ad267e..455ad72 100644 --- a/saml/saml2/core/impl/Assertions20SchemaValidators.cpp +++ b/saml/saml2/core/impl/Assertions20SchemaValidators.cpp @@ -177,12 +177,12 @@ namespace opensaml { #define REGISTER_ELEMENT(cname) \ q=QName(SAMLConstants::SAML20_NS,cname::LOCAL_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - Validator::registerValidator(q,new cname##SchemaValidator()) + AssertionSchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_TYPE(cname) \ q=QName(SAMLConstants::SAML20_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - Validator::registerValidator(q,new cname##SchemaValidator()) + AssertionSchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_ELEMENT_NOVAL(cname) \ q=QName(SAMLConstants::SAML20_NS,cname::LOCAL_NAME); \ @@ -192,6 +192,8 @@ namespace opensaml { q=QName(SAMLConstants::SAML20_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); +ValidatorSuite opensaml::saml2::AssertionSchemaValidators("AssertionSchemaValidators"); + void opensaml::saml2::registerAssertionClasses() { QName q; REGISTER_ELEMENT(Action); diff --git a/saml/saml2/metadata/Metadata.h b/saml/saml2/metadata/Metadata.h index 305407a..60445d8 100644 --- a/saml/saml2/metadata/Metadata.h +++ b/saml/saml2/metadata/Metadata.h @@ -460,9 +460,14 @@ namespace opensaml { }; /** - * Registers builders and validators for Metadata classes into the runtime. + * Registers builders and validators for SAML 2.0 Metadata classes into the runtime. */ void SAML_API registerMetadataClasses(); + + /** + * Validator suite for SAML 2.0 Metadata schema validation. + */ + extern SAML_API xmltooling::ValidatorSuite MetadataSchemaValidators; }; }; diff --git a/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp b/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp index 21dffda..d4755a3 100644 --- a/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp +++ b/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp @@ -245,12 +245,12 @@ namespace opensaml { #define REGISTER_ELEMENT(cname) \ q=QName(SAMLConstants::SAML20MD_NS,cname::LOCAL_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - Validator::registerValidator(q,new cname##SchemaValidator()) + MetadataSchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_TYPE(cname) \ q=QName(SAMLConstants::SAML20MD_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - Validator::registerValidator(q,new cname##SchemaValidator()) + MetadataSchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_ELEMENT_NOVAL(cname) \ q=QName(SAMLConstants::SAML20MD_NS,cname::LOCAL_NAME); \ @@ -260,6 +260,8 @@ 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);