Remove extra reference to doc/api.
[shibboleth/cpp-opensaml.git] / saml / saml2 / metadata / ChainingMetadataProvider.h
index 2de6229..1310374 100644 (file)
@@ -15,7 +15,7 @@
  */
 
 /**
- * @file saml/security/ChainingMetadataProvider.h
+ * @file saml/saml2/metadata/ChainingMetadataProvider.h
  * 
  * MetadataProvider that uses multiple providers in sequence.
  */
@@ -24,6 +24,7 @@
 #define __saml_chainmeta_h__
 
 #include <saml/saml2/metadata/ObservableMetadataProvider.h>
+#include <xmltooling/logging.h>
 #include <xmltooling/util/Threads.h>
 
 namespace opensaml {
@@ -53,7 +54,7 @@ namespace opensaml {
              * 
              * @param e DOM to supply configuration for provider
              */
-            ChainingMetadataProvider(const DOMElement* e=NULL);
+            ChainingMetadataProvider(const xercesc::DOMElement* e=NULL);
             
             /**
              * Destructor will delete any embedded engines.
@@ -86,14 +87,16 @@ namespace opensaml {
                 return NULL;
             }
 
+            using MetadataProvider::getEntityDescriptor;
+            using MetadataProvider::getEntitiesDescriptor;
+
             xmltooling::Lockable* lock();
             void unlock();
             void init();
             const xmltooling::XMLObject* getMetadata() const;
             const EntitiesDescriptor* getEntitiesDescriptor(const char* name, bool requireValidMetadata=true) const;
-            const EntityDescriptor* getEntityDescriptor(const char* id, bool requireValidMetadata=true) const;
-            const EntityDescriptor* getEntityDescriptor(const SAMLArtifact* artifact) const;
-            void onEvent(MetadataProvider& provider);
+            std::pair<const EntityDescriptor*,const RoleDescriptor*> getEntityDescriptor(const Criteria& criteria) const;
+            void onEvent(const ObservableMetadataProvider& provider) const;
     
             const xmltooling::Credential* resolve(const xmltooling::CredentialCriteria* criteria=NULL) const;
             std::vector<const xmltooling::Credential*>::size_type resolve(
@@ -101,8 +104,10 @@ namespace opensaml {
                 ) const;
 
         private:
+            bool m_firstMatch;
             xmltooling::ThreadKey* m_tlsKey;
             std::vector<MetadataProvider*> m_providers;
+            xmltooling::logging::Category& m_log;
         };
 
 #if defined (_MSC_VER)