From bb0445de5d7455fdeda45c859735d774b7edf92f Mon Sep 17 00:00:00 2001 From: Scott Cantor Date: Thu, 23 Feb 2012 22:44:21 +0000 Subject: [PATCH] Switch to pointer parameters to fix boost bug. --- .../impl/EntityAttributesMetadataFilter.cpp | 38 +++++++++------------- .../metadata/impl/WhitelistMetadataFilter.cpp | 15 ++++----- 2 files changed, 22 insertions(+), 31 deletions(-) diff --git a/saml/saml2/metadata/impl/EntityAttributesMetadataFilter.cpp b/saml/saml2/metadata/impl/EntityAttributesMetadataFilter.cpp index 407fd81..bb1bfdf 100644 --- a/saml/saml2/metadata/impl/EntityAttributesMetadataFilter.cpp +++ b/saml/saml2/metadata/impl/EntityAttributesMetadataFilter.cpp @@ -56,8 +56,8 @@ namespace opensaml { void doFilter(XMLObject& xmlObject) const; private: - void filterEntity(EntityDescriptor& entity) const; - void filterGroup(EntitiesDescriptor& entities) const; + void filterEntity(EntityDescriptor* entity) const; + void filterGroup(EntitiesDescriptor* entities) const; vector< boost::shared_ptr > m_attributes; typedef multimap applymap_t; @@ -101,12 +101,12 @@ void EntityAttributesMetadataFilter::doFilter(XMLObject& xmlObject) const { EntitiesDescriptor* group = dynamic_cast(&xmlObject); if (group) { - filterGroup(*group); + filterGroup(group); } else { EntityDescriptor* entity = dynamic_cast(&xmlObject); if (entity) { - filterEntity(*entity); + filterEntity(entity); } else { throw MetadataFilterException(ENTITYATTR_METADATA_FILTER" MetadataFilter was given an improper metadata instance to filter."); @@ -114,30 +114,24 @@ void EntityAttributesMetadataFilter::doFilter(XMLObject& xmlObject) const } } -void EntityAttributesMetadataFilter::filterGroup(EntitiesDescriptor& entities) const +void EntityAttributesMetadataFilter::filterGroup(EntitiesDescriptor* entities) const { - const vector& v = const_cast(entities).getEntityDescriptors(); - for_each( - make_indirect_iterator(v.begin()), make_indirect_iterator(v.end()), - lambda::bind(&EntityAttributesMetadataFilter::filterEntity, this, _1) - ); - - const vector& v2 = const_cast(entities).getEntitiesDescriptors(); - for_each( - make_indirect_iterator(v2.begin()), make_indirect_iterator(v2.end()), - lambda::bind(&EntityAttributesMetadataFilter::filterGroup, this, _1) - ); + const vector& v = const_cast(entities)->getEntityDescriptors(); + for_each(v.begin(), v.end(), lambda::bind(&EntityAttributesMetadataFilter::filterEntity, this, _1)); + + const vector& v2 = const_cast(entities)->getEntitiesDescriptors(); + for_each(v2.begin(), v2.end(), lambda::bind(&EntityAttributesMetadataFilter::filterGroup, this, _1)); } -void EntityAttributesMetadataFilter::filterEntity(EntityDescriptor& entity) const +void EntityAttributesMetadataFilter::filterEntity(EntityDescriptor* entity) const { - if (entity.getEntityID()) { - pair tags = m_applyMap.equal_range(entity.getEntityID()); + if (entity->getEntityID()) { + pair tags = m_applyMap.equal_range(entity->getEntityID()); if (tags.first != tags.second) { - Extensions* exts = entity.getExtensions(); + Extensions* exts = entity->getExtensions(); if (!exts) { - entity.setExtensions(ExtensionsBuilder::buildExtensions()); - exts = entity.getExtensions(); + entity->setExtensions(ExtensionsBuilder::buildExtensions()); + exts = entity->getExtensions(); } EntityAttributes* wrapper = nullptr; const vector& children = const_cast(exts)->getUnknownXMLObjects(); diff --git a/saml/saml2/metadata/impl/WhitelistMetadataFilter.cpp b/saml/saml2/metadata/impl/WhitelistMetadataFilter.cpp index 5c38639..3b086ba 100644 --- a/saml/saml2/metadata/impl/WhitelistMetadataFilter.cpp +++ b/saml/saml2/metadata/impl/WhitelistMetadataFilter.cpp @@ -55,7 +55,7 @@ namespace opensaml { void doFilter(XMLObject& xmlObject) const; private: - void filterGroup(EntitiesDescriptor&) const; + void filterGroup(EntitiesDescriptor*) const; bool included(const EntityDescriptor&) const; bool matches(const EntityAttributes*, const Attribute*) const; @@ -95,7 +95,7 @@ void WhitelistMetadataFilter::doFilter(XMLObject& xmlObject) const { EntitiesDescriptor* group = dynamic_cast(&xmlObject); if (group) { - filterGroup(*group); + filterGroup(group); } else { EntityDescriptor* entity = dynamic_cast(&xmlObject); @@ -109,11 +109,11 @@ void WhitelistMetadataFilter::doFilter(XMLObject& xmlObject) const } } -void WhitelistMetadataFilter::filterGroup(EntitiesDescriptor& entities) const +void WhitelistMetadataFilter::filterGroup(EntitiesDescriptor* entities) const { Category& log=Category::getInstance(SAML_LOGCAT".MetadataFilter."WHITELIST_METADATA_FILTER); - VectorOf(EntityDescriptor) v = entities.getEntityDescriptors(); + VectorOf(EntityDescriptor) v = entities->getEntityDescriptors(); for (VectorOf(EntityDescriptor)::size_type i = 0; i < v.size(); ) { if (!included(*v[i])) { auto_ptr_char id(v[i]->getEntityID()); @@ -125,11 +125,8 @@ void WhitelistMetadataFilter::filterGroup(EntitiesDescriptor& entities) const } } - const vector& groups = const_cast(entities).getEntitiesDescriptors(); - for_each( - make_indirect_iterator(groups.begin()), make_indirect_iterator(groups.end()), - lambda::bind(&WhitelistMetadataFilter::filterGroup, this, _1) - ); + const vector& groups = const_cast(entities)->getEntitiesDescriptors(); + for_each(groups.begin(), groups.end(), lambda::bind(&WhitelistMetadataFilter::filterGroup, this, _1)); } bool WhitelistMetadataFilter::included(const EntityDescriptor& entity) const -- 2.1.4