X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=saml%2Fsaml2%2Fmetadata%2Fimpl%2FMetadataProvider.cpp;h=b0582f25837b30cc1cafd86eba05fdd611c7df60;hb=208928133db000b055b99fcbabc245295adb0d48;hp=64987508f6615e632cf72c6df791275db61e23a3;hpb=3654400391293dea962369965a26ae2023a61f37;p=shibboleth%2Fcpp-opensaml.git diff --git a/saml/saml2/metadata/impl/MetadataProvider.cpp b/saml/saml2/metadata/impl/MetadataProvider.cpp index 6498750..b0582f2 100644 --- a/saml/saml2/metadata/impl/MetadataProvider.cpp +++ b/saml/saml2/metadata/impl/MetadataProvider.cpp @@ -29,6 +29,7 @@ #include "saml2/metadata/MetadataProvider.h" #include +#include #include #include #include @@ -39,6 +40,8 @@ using namespace opensaml::saml2md; using namespace opensaml; using namespace xmltooling::logging; using namespace xmltooling; +using namespace boost::lambda; +using namespace boost; using namespace std; namespace opensaml { @@ -46,6 +49,7 @@ namespace opensaml { SAML_DLLLOCAL PluginManager::Factory XMLMetadataProviderFactory; SAML_DLLLOCAL PluginManager::Factory DynamicMetadataProviderFactory; SAML_DLLLOCAL PluginManager::Factory ChainingMetadataProviderFactory; + SAML_DLLLOCAL PluginManager::Factory FolderMetadataProviderFactory; SAML_DLLLOCAL PluginManager::Factory NullMetadataProviderFactory; SAML_DLLLOCAL PluginManager::Factory BlacklistMetadataFilterFactory; SAML_DLLLOCAL PluginManager::Factory WhitelistMetadataFilterFactory; @@ -61,6 +65,7 @@ void SAML_API opensaml::saml2md::registerMetadataProviders() conf.MetadataProviderManager.registerFactory(XML_METADATA_PROVIDER, XMLMetadataProviderFactory); conf.MetadataProviderManager.registerFactory(DYNAMIC_METADATA_PROVIDER, DynamicMetadataProviderFactory); conf.MetadataProviderManager.registerFactory(CHAINING_METADATA_PROVIDER, ChainingMetadataProviderFactory); + conf.MetadataProviderManager.registerFactory(FOLDER_METADATA_PROVIDER, FolderMetadataProviderFactory); conf.MetadataProviderManager.registerFactory(NULL_METADATA_PROVIDER, NullMetadataProviderFactory); } @@ -127,14 +132,17 @@ MetadataProvider::MetadataProvider(const DOMElement* e) } catch (XMLToolingException& ex) { log.error("caught exception while installing filters: %s", ex.what()); - for_each(m_filters.begin(),m_filters.end(),xmltooling::cleanup()); throw; } } MetadataProvider::~MetadataProvider() { - for_each(m_filters.begin(), m_filters.end(), xmltooling::cleanup()); +} + +const char* MetadataProvider::getId() const +{ + return nullptr; } void MetadataProvider::addMetadataFilter(MetadataFilter* newFilter) @@ -144,11 +152,9 @@ void MetadataProvider::addMetadataFilter(MetadataFilter* newFilter) MetadataFilter* MetadataProvider::removeMetadataFilter(MetadataFilter* oldFilter) { - for (vector::iterator i=m_filters.begin(); i!=m_filters.end(); i++) { - if (oldFilter==(*i)) { - m_filters.erase(i); - return oldFilter; - } + ptr_vector::iterator i = find_if(m_filters.begin(), m_filters.end(), (&_1 == oldFilter)); + if (i != m_filters.end()) { + return m_filters.release(i).release(); } return nullptr; } @@ -159,9 +165,9 @@ void MetadataProvider::doFilters(XMLObject& xmlObject) const NDC ndc("doFilters"); #endif Category& log=Category::getInstance(SAML_LOGCAT".Metadata"); - for (std::vector::const_iterator i=m_filters.begin(); i!=m_filters.end(); i++) { - log.info("applying metadata filter (%s)", (*i)->getId()); - (*i)->doFilter(xmlObject); + for (ptr_vector::const_iterator i = m_filters.begin(); i != m_filters.end(); i++) { + log.info("applying metadata filter (%s)", i->getId()); + i->doFilter(xmlObject); } }