-
- const vector<EntitiesDescriptor*>& groups=const_cast<const EntitiesDescriptor&>(entities).getEntitiesDescriptors();
- for (vector<EntitiesDescriptor*>::const_iterator j=groups.begin(); j!=groups.end(); j++)
- doFilter(*(*j));
+
+ VectorOf(EntitiesDescriptor) w = entities->getEntitiesDescriptors();
+ for (VectorOf(EntitiesDescriptor)::size_type j = 0; j < w.size(); ) {
+ const XMLCh* name = w[j]->getName();
+ if (name && !m_entities.empty() && m_entities.count(name) > 0) {
+ auto_ptr_char name2(name);
+ log.info("filtering out blacklisted group (%s)", name2.get());
+ w.erase(w.begin() + j);
+ }
+ else {
+ filterGroup(w[j]);
+ j++;
+ }
+ }
+}
+
+bool BlacklistMetadataFilter::included(const EntityDescriptor& entity) const
+{
+ // Check for entityID.
+ if (entity.getEntityID() && !m_entities.empty() && m_entities.count(entity.getEntityID()) > 0)
+ return true;
+
+ if (m_matcher && m_matcher->matches(entity))
+ return true;
+
+ return false;