From: Scott Cantor Date: Thu, 16 Sep 2010 18:22:25 +0000 (+0000) Subject: Fix registration of UI extension validators, improve the localized name/URL validators. X-Git-Tag: 2.4RC1~30 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=commitdiff_plain;h=1aaa01e85be4289b26bee704bb7b4044a32a0859 Fix registration of UI extension validators, improve the localized name/URL validators. --- diff --git a/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp b/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp index a204dc0..97e221a 100644 --- a/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp +++ b/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp @@ -62,16 +62,19 @@ namespace opensaml { XMLOBJECTVALIDATOR_REQUIRE(localizedURIType,Lang); END_XMLOBJECTVALIDATOR; - BEGIN_XMLOBJECTVALIDATOR_SUB(SAML_DLLLOCAL,OrganizationName,localizedNameType); - localizedNameTypeSchemaValidator::validate(xmlObject); + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,OrganizationName); + XMLOBJECTVALIDATOR_REQUIRE(OrganizationName,TextContent); + XMLOBJECTVALIDATOR_REQUIRE(OrganizationName,Lang); END_XMLOBJECTVALIDATOR; - BEGIN_XMLOBJECTVALIDATOR_SUB(SAML_DLLLOCAL,OrganizationDisplayName,localizedNameType); - localizedNameTypeSchemaValidator::validate(xmlObject); + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,OrganizationDisplayName); + XMLOBJECTVALIDATOR_REQUIRE(OrganizationDisplayName,TextContent); + XMLOBJECTVALIDATOR_REQUIRE(OrganizationDisplayName,Lang); END_XMLOBJECTVALIDATOR; - BEGIN_XMLOBJECTVALIDATOR_SUB(SAML_DLLLOCAL,OrganizationURL,localizedURIType); - localizedURITypeSchemaValidator::validate(xmlObject); + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,OrganizationURL); + XMLOBJECTVALIDATOR_REQUIRE(OrganizationURL,TextContent); + XMLOBJECTVALIDATOR_REQUIRE(OrganizationURL,Lang); END_XMLOBJECTVALIDATOR; class SAML_DLLLOCAL checkWildcardNS { @@ -171,12 +174,14 @@ namespace opensaml { XMLOBJECTVALIDATOR_NONEMPTY(IDPSSODescriptor,SingleSignOnService); END_XMLOBJECTVALIDATOR; - BEGIN_XMLOBJECTVALIDATOR_SUB(SAML_DLLLOCAL,ServiceName,localizedNameType); - localizedNameTypeSchemaValidator::validate(xmlObject); + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,ServiceName); + XMLOBJECTVALIDATOR_REQUIRE(ServiceName,TextContent); + XMLOBJECTVALIDATOR_REQUIRE(ServiceName,Lang); END_XMLOBJECTVALIDATOR; - BEGIN_XMLOBJECTVALIDATOR_SUB(SAML_DLLLOCAL,ServiceDescription,localizedNameType); - localizedNameTypeSchemaValidator::validate(xmlObject); + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,ServiceDescription); + XMLOBJECTVALIDATOR_REQUIRE(ServiceDescription,TextContent); + XMLOBJECTVALIDATOR_REQUIRE(ServiceDescription,Lang); END_XMLOBJECTVALIDATOR; BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,RequestedAttribute); @@ -267,12 +272,14 @@ namespace opensaml { XMLOBJECTVALIDATOR_REQUIRE(SigningMethod,Algorithm); END_XMLOBJECTVALIDATOR; - BEGIN_XMLOBJECTVALIDATOR_SUB(SAML_DLLLOCAL,DisplayName,localizedNameType); - localizedNameTypeSchemaValidator::validate(xmlObject); + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,DisplayName); + XMLOBJECTVALIDATOR_REQUIRE(DisplayName,TextContent); + XMLOBJECTVALIDATOR_REQUIRE(DisplayName,Lang); END_XMLOBJECTVALIDATOR; - BEGIN_XMLOBJECTVALIDATOR_SUB(SAML_DLLLOCAL,Description,localizedNameType); - localizedNameTypeSchemaValidator::validate(xmlObject); + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,Description); + XMLOBJECTVALIDATOR_REQUIRE(Description,TextContent); + XMLOBJECTVALIDATOR_REQUIRE(Description,Lang); END_XMLOBJECTVALIDATOR; BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,Logo); @@ -281,12 +288,14 @@ namespace opensaml { XMLOBJECTVALIDATOR_REQUIRE_INTEGER(Logo,Width); END_XMLOBJECTVALIDATOR; - BEGIN_XMLOBJECTVALIDATOR_SUB(SAML_DLLLOCAL,InformationURL,localizedURIType); - localizedURITypeSchemaValidator::validate(xmlObject); + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,InformationURL); + XMLOBJECTVALIDATOR_REQUIRE(InformationURL,TextContent); + XMLOBJECTVALIDATOR_REQUIRE(InformationURL,Lang); END_XMLOBJECTVALIDATOR; - BEGIN_XMLOBJECTVALIDATOR_SUB(SAML_DLLLOCAL,PrivacyStatementURL,localizedURIType); - localizedURITypeSchemaValidator::validate(xmlObject); + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,PrivacyStatementURL); + XMLOBJECTVALIDATOR_REQUIRE(PrivacyStatementURL,TextContent); + XMLOBJECTVALIDATOR_REQUIRE(PrivacyStatementURL,Lang); END_XMLOBJECTVALIDATOR; XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,IPHint); @@ -307,10 +316,20 @@ namespace opensaml { #define REGISTER_ELEMENT_UI(cname) \ q=xmltooling::QName(SAML20MD_UI_NS,cname::LOCAL_NAME); \ - XMLObjectBuilder::registerBuilder(q,new cname##Builder()); + XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ + SchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_TYPE_UI(cname) \ q=xmltooling::QName(SAML20MD_UI_NS,cname::TYPE_NAME); \ + XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ + SchemaValidators.registerValidator(q,new cname##SchemaValidator()) + +#define REGISTER_ELEMENT_UI_NOVAL(cname) \ + q=xmltooling::QName(SAML20MD_UI_NS,cname::LOCAL_NAME); \ + XMLObjectBuilder::registerBuilder(q,new cname##Builder()); + +#define REGISTER_TYPE_UI_NOVAL(cname) \ + q=xmltooling::QName(SAML20MD_UI_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); void opensaml::saml2md::registerMetadataClasses() { @@ -426,12 +445,12 @@ void opensaml::saml2md::registerMetadataClasses() { REGISTER_ELEMENT_UI(Logo); REGISTER_ELEMENT_UI(InformationURL); REGISTER_ELEMENT_UI(PrivacyStatementURL); - REGISTER_ELEMENT_UI(UIInfo); REGISTER_ELEMENT_UI(IPHint); REGISTER_ELEMENT_UI(DomainHint); REGISTER_ELEMENT_UI(GeolocationHint); - REGISTER_ELEMENT_UI(DiscoHints); REGISTER_TYPE_UI(Logo); - REGISTER_TYPE_UI(UIInfo); - REGISTER_TYPE_UI(DiscoHints); + REGISTER_ELEMENT_UI_NOVAL(UIInfo); + REGISTER_ELEMENT_UI_NOVAL(DiscoHints); + REGISTER_TYPE_UI_NOVAL(UIInfo); + REGISTER_TYPE_UI_NOVAL(DiscoHints); }