Major revamp of credential and trust handling code, PKIX engine still needs work.
[shibboleth/cpp-opensaml.git] / saml / saml2 / metadata / impl / ChainingMetadataProvider.cpp
index de5eb81..2f222fd 100644 (file)
@@ -88,7 +88,7 @@ void ChainingMetadataProvider::onEvent(MetadataProvider& provider)
 
 void ChainingMetadataProvider::init()
 {
-    for_each(m_providers.begin(), m_providers.end(), mem_fun<void,MetadataProvider>(&MetadataProvider::init));
+    for_each(m_providers.begin(), m_providers.end(), mem_fun(&MetadataProvider::init));
 }
 
 Lockable* ChainingMetadataProvider::lock()
@@ -106,14 +106,6 @@ void ChainingMetadataProvider::unlock()
     }
 }
 
-const KeyResolver* ChainingMetadataProvider::getKeyResolver() const
-{
-    // Check for a locked provider.
-    void* ptr=m_tlsKey->getData();
-    return ptr ? reinterpret_cast<MetadataProvider*>(ptr)->getKeyResolver() : NULL;
-    
-}
-
 const XMLObject* ChainingMetadataProvider::getMetadata() const
 {
     throw XMLToolingException("getMetadata operation not implemented on this provider.");
@@ -178,3 +170,25 @@ const EntityDescriptor* ChainingMetadataProvider::getEntityDescriptor(const SAML
 
     return NULL;
 }
+
+const Credential* ChainingMetadataProvider::resolve(const CredentialCriteria* criteria) const
+{
+    // Check for a locked provider.
+    void* ptr=m_tlsKey->getData();
+    if (!ptr)
+        throw MetadataException("No locked MetadataProvider, where did the role object come from?");
+
+    return reinterpret_cast<MetadataProvider*>(ptr)->resolve(criteria);
+}
+
+vector<const Credential*>::size_type ChainingMetadataProvider::resolve(
+    vector<const Credential*>& results, const CredentialCriteria* criteria
+    ) const
+{
+    // Check for a locked provider.
+    void* ptr=m_tlsKey->getData();
+    if (!ptr)
+        throw MetadataException("No locked MetadataProvider, where did the role object come from?");
+
+    return reinterpret_cast<MetadataProvider*>(ptr)->resolve(results, criteria);
+}