X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=saml%2Fsaml2%2Fmetadata%2Fimpl%2FBlacklistMetadataFilter.cpp;h=23ef33bcd9d579ff5fbb6528bc527026fa5438f0;hb=d25eb3c0ede922ecad141bb44a7893ab7a5fb017;hp=a0acf6052a403556192ff4e3396b7e8a17c2f07a;hpb=2e7ffaf168c7471afba1d0076bc00f4796387a63;p=shibboleth%2Fopensaml2.git diff --git a/saml/saml2/metadata/impl/BlacklistMetadataFilter.cpp b/saml/saml2/metadata/impl/BlacklistMetadataFilter.cpp index a0acf60..23ef33b 100644 --- a/saml/saml2/metadata/impl/BlacklistMetadataFilter.cpp +++ b/saml/saml2/metadata/impl/BlacklistMetadataFilter.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2006 Internet2 + * Copyright 2001-2007 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,14 +21,15 @@ */ #include "internal.h" +#include "saml2/metadata/Metadata.h" #include "saml2/metadata/MetadataFilter.h" -#include +#include #include using namespace opensaml::saml2md; +using namespace xmltooling::logging; using namespace xmltooling; -using namespace log4cpp; using namespace std; namespace opensaml { @@ -97,7 +98,10 @@ void BlacklistMetadataFilter::doFilter(XMLObject& xmlObject) const #endif try { - doFilter(dynamic_cast(xmlObject)); + EntitiesDescriptor& entities = dynamic_cast(xmlObject); + if (found(entities.getName())) + throw MetadataFilterException("BlacklistMetadataFilter instructed to filter the root/only group in the metadata."); + doFilter(entities); return; } catch (bad_cast) { @@ -117,7 +121,7 @@ void BlacklistMetadataFilter::doFilter(XMLObject& xmlObject) const void BlacklistMetadataFilter::doFilter(EntitiesDescriptor& entities) const { - Category& log=Category::getInstance(SAML_LOGCAT".Metadata"); + Category& log=Category::getInstance(SAML_LOGCAT".MetadataFilter.Blacklist"); VectorOf(EntityDescriptor) v=entities.getEntityDescriptors(); for (VectorOf(EntityDescriptor)::size_type i=0; i& groups=const_cast(entities).getEntitiesDescriptors(); - for (vector::const_iterator j=groups.begin(); j!=groups.end(); j++) - doFilter(*(*j)); + VectorOf(EntitiesDescriptor) w=entities.getEntitiesDescriptors(); + for (VectorOf(EntitiesDescriptor)::size_type j=0; jgetName(); + if (found(name)) { + auto_ptr_char name2(name); + log.info("filtering out blacklisted group (%s)", name2.get()); + w.erase(w.begin() + j); + } + else { + doFilter(*(w[j])); + j++; + } + } }