X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=blobdiff_plain;f=saml%2Fsaml2%2Fmetadata%2Fimpl%2FMetadataSchemaValidators.cpp;h=c5d751ce82274a9fe79947d7fd498b7bffe4c7c0;hp=daaba6b1d44e56efc9847c58a6c87f72a4dddcdd;hb=48857ad9a82c4695800123ecef931e7f8d9de199;hpb=549ab1cbc7fd4dc82afff0f517adab5a5292689c diff --git a/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp b/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp index daaba6b..c5d751c 100644 --- a/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp +++ b/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp @@ -1,5 +1,5 @@ /* -* Copyright 2001-2007 Internet2 +* Copyright 2001-2009 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,6 +33,7 @@ using namespace xmltooling; using namespace std; using samlconstants::SAML20MD_NS; using samlconstants::SAML20MD_QUERY_EXT_NS; +using samlconstants::SAML20MD_ENTITY_ATTRIBUTE_NS; namespace opensaml { namespace saml2md { @@ -54,7 +55,7 @@ namespace opensaml { END_XMLOBJECTVALIDATOR; BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,localizedURIType); - XMLOBJECTVALIDATOR_REQUIRE(localizedNameType,TextContent); + XMLOBJECTVALIDATOR_REQUIRE(localizedURIType,TextContent); XMLOBJECTVALIDATOR_REQUIRE(localizedURIType,Lang); END_XMLOBJECTVALIDATOR; @@ -245,29 +246,35 @@ namespace opensaml { if (ptr->getEntityDescriptors().empty() && ptr->getEntitiesDescriptors().empty()) throw ValidationException("EntitiesDescriptor must contain at least one child descriptor."); END_XMLOBJECTVALIDATOR; + + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,EntityAttributes); + if (!ptr->hasChildren()) + throw ValidationException("EntityAttributes must contain at least one child element."); + END_XMLOBJECTVALIDATOR; + }; }; #define REGISTER_ELEMENT(cname) \ - q=QName(SAML20MD_NS,cname::LOCAL_NAME); \ + q=xmltooling::QName(SAML20MD_NS,cname::LOCAL_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ SchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_TYPE(cname) \ - q=QName(SAML20MD_NS,cname::TYPE_NAME); \ + q=xmltooling::QName(SAML20MD_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ SchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_ELEMENT_NOVAL(cname) \ - q=QName(SAML20MD_NS,cname::LOCAL_NAME); \ + q=xmltooling::QName(SAML20MD_NS,cname::LOCAL_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); #define REGISTER_TYPE_NOVAL(cname) \ - q=QName(SAML20MD_NS,cname::TYPE_NAME); \ + q=xmltooling::QName(SAML20MD_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); void opensaml::saml2md::registerMetadataClasses() { - QName q; + xmltooling::QName q; REGISTER_ELEMENT(AdditionalMetadataLocation); REGISTER_ELEMENT(AffiliateMember); REGISTER_ELEMENT(AffiliationDescriptor); @@ -327,26 +334,34 @@ void opensaml::saml2md::registerMetadataClasses() { REGISTER_TYPE(RequestedAttribute); REGISTER_TYPE(SPSSODescriptor); - q=QName(SAML20MD_NS,xmlencryption::EncryptionMethod::LOCAL_NAME); + q=xmltooling::QName(SAML20MD_NS,xmlencryption::EncryptionMethod::LOCAL_NAME); XMLObjectBuilder::registerBuilder(q,new xmlencryption::EncryptionMethodBuilder()); - q=QName(samlconstants::SAML1MD_NS,SourceID::LOCAL_NAME); + q=xmltooling::QName(samlconstants::SAML1MD_NS,SourceID::LOCAL_NAME); XMLObjectBuilder::registerBuilder(q,new SourceIDBuilder()); SchemaValidators.registerValidator(q,new SourceIDSchemaValidator()); - q=QName(SAML20MD_QUERY_EXT_NS,ActionNamespace::LOCAL_NAME); + q=xmltooling::QName(SAML20MD_QUERY_EXT_NS,ActionNamespace::LOCAL_NAME); XMLObjectBuilder::registerBuilder(q,new ActionNamespaceBuilder()); SchemaValidators.registerValidator(q,new ActionNamespaceSchemaValidator()); - q=QName(SAML20MD_QUERY_EXT_NS,AuthnQueryDescriptorType::TYPE_NAME); + q=xmltooling::QName(SAML20MD_QUERY_EXT_NS,AuthnQueryDescriptorType::TYPE_NAME); XMLObjectBuilder::registerBuilder(q,new AuthnQueryDescriptorTypeBuilder()); SchemaValidators.registerValidator(q,new RoleDescriptorSchemaValidator()); - q=QName(SAML20MD_QUERY_EXT_NS,AttributeQueryDescriptorType::TYPE_NAME); + q=xmltooling::QName(SAML20MD_QUERY_EXT_NS,AttributeQueryDescriptorType::TYPE_NAME); XMLObjectBuilder::registerBuilder(q,new AttributeQueryDescriptorTypeBuilder()); SchemaValidators.registerValidator(q,new RoleDescriptorSchemaValidator()); - q=QName(SAML20MD_QUERY_EXT_NS,AuthzDecisionQueryDescriptorType::TYPE_NAME); + q=xmltooling::QName(SAML20MD_QUERY_EXT_NS,AuthzDecisionQueryDescriptorType::TYPE_NAME); XMLObjectBuilder::registerBuilder(q,new AuthzDecisionQueryDescriptorTypeBuilder()); SchemaValidators.registerValidator(q,new RoleDescriptorSchemaValidator()); + + q=xmltooling::QName(SAML20MD_ENTITY_ATTRIBUTE_NS,EntityAttributes::LOCAL_NAME); + XMLObjectBuilder::registerBuilder(q,new EntityAttributesBuilder()); + SchemaValidators.registerValidator(q,new EntityAttributesSchemaValidator()); + + q=xmltooling::QName(SAML20MD_ENTITY_ATTRIBUTE_NS,EntityAttributes::TYPE_NAME); + XMLObjectBuilder::registerBuilder(q,new EntityAttributesBuilder()); + SchemaValidators.registerValidator(q,new EntityAttributesSchemaValidator()); }