X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=blobdiff_plain;f=saml%2Fsaml2%2Fmetadata%2Fimpl%2FChainingMetadataProvider.cpp;fp=saml%2Fsaml2%2Fmetadata%2Fimpl%2FChainingMetadataProvider.cpp;h=968927ebd848a5354586360fa862b4ef1bb5eb0b;hp=e8dcf15213251960205c344777ff67d4f785639d;hb=c3b231ea3cf87e1d5e958305af7554c160edaa8c;hpb=61be70c482b7b714af12d828b7b64bb08766e98f diff --git a/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp b/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp index e8dcf15..968927e 100644 --- a/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp +++ b/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp @@ -67,14 +67,15 @@ namespace opensaml { Lockable* lock(); void unlock(); + void setContext(const MetadataFilterContext*); void init(); - void outputStatus(ostream& os) const; + void outputStatus(ostream&) const; const XMLObject* getMetadata() const; - const EntitiesDescriptor* getEntitiesDescriptor(const char* name, bool requireValidMetadata=true) const; - pair getEntityDescriptor(const Criteria& criteria) const; + const EntitiesDescriptor* getEntitiesDescriptor(const char*, bool requireValidMetadata=true) const; + pair getEntityDescriptor(const Criteria&) const; const Credential* resolve(const CredentialCriteria* criteria=nullptr) const; - vector::size_type resolve(vector& results, const CredentialCriteria* criteria=nullptr) const; + vector::size_type resolve(vector&, const CredentialCriteria* criteria=nullptr) const; string getCacheTag() const { Lock lock(m_trackerLock); @@ -199,6 +200,9 @@ ChainingMetadataProvider::ChainingMetadataProvider(const DOMElement* e) m_log.error("error building MetadataProvider: %s", ex.what()); } } + else { + m_log.error("MetadataProvider element missing type attribute"); + } e = XMLHelper::getNextSiblingElement(e, _MetadataProvider); } } @@ -208,6 +212,11 @@ ChainingMetadataProvider::~ChainingMetadataProvider() for_each(m_trackers.begin(), m_trackers.end(), xmltooling::cleanup()); } +void ChainingMetadataProvider::setContext(const MetadataFilterContext* ctx) +{ + for_each(m_providers.begin(), m_providers.end(), boost::bind(&MetadataProvider::setContext, _1, ctx)); +} + void ChainingMetadataProvider::init() { for (ptr_vector::iterator i = m_providers.begin(); i != m_providers.end(); ++i) { @@ -269,7 +278,7 @@ const EntitiesDescriptor* ChainingMetadataProvider::getEntitiesDescriptor(const const EntitiesDescriptor* cur = nullptr; for (ptr_vector::iterator i = m_providers.begin(); i != m_providers.end(); ++i) { tracker->lock_if(&(*i)); - if (cur=i->getEntitiesDescriptor(name,requireValidMetadata)) { + if ((cur = i->getEntitiesDescriptor(name,requireValidMetadata))) { // Are we using a first match policy? if (m_firstMatch) { // Save locked provider.