Added ASCII metadata lookup.
authorcantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Tue, 22 Mar 2005 06:03:24 +0000 (06:03 +0000)
committercantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Tue, 22 Mar 2005 06:03:24 +0000 (06:03 +0000)
git-svn-id: https://svn.middleware.georgetown.edu/cpp-sp/trunk@1418 cb58f699-b61c-0410-a6fe-9272a202ed29

shib/Metadata.cpp
shib/shib.h
xmlproviders/XMLMetadata.cpp

index 717bfa6..ad1133b 100644 (file)
@@ -81,6 +81,26 @@ const IEntityDescriptor* Metadata::lookup(const XMLCh* id)
     return NULL;
 }
 
+const IEntityDescriptor* Metadata::lookup(const char* id)
+{
+    if (m_mapper) {
+        m_mapper->unlock();
+        m_mapper=NULL;
+    }
+    const IEntityDescriptor* ret=NULL;
+    m_metadatas.reset();
+    while (m_metadatas.hasNext()) {
+        IMetadata* i=m_metadatas.next();
+        i->lock();
+        if (ret=i->lookup(id)) {
+            m_mapper=i;
+            return ret;
+        }
+        i->unlock();
+    }
+    return NULL;
+}
+
 const IEntityDescriptor* Metadata::lookup(const SAMLArtifact* artifact)
 {
     if (m_mapper) {
index 3b0b3f0..db74c14 100644 (file)
@@ -281,6 +281,7 @@ namespace shibboleth
        
     struct SHIB_EXPORTS IMetadata : public virtual saml::ILockable, public virtual saml::IPlugIn
     {
+        virtual const IEntityDescriptor* lookup(const char* id) const=0;
         virtual const IEntityDescriptor* lookup(const XMLCh* id) const=0;
         virtual const IEntityDescriptor* lookup(const saml::SAMLArtifact* artifact) const=0;
         virtual ~IMetadata() {}
@@ -386,7 +387,8 @@ namespace shibboleth
         Metadata(const saml::Iterator<IMetadata*>& metadatas) : m_metadatas(metadatas), m_mapper(NULL) {}
         ~Metadata();
 
-        const IEntityDescriptor* lookup(const XMLCh* providerId);
+        const IEntityDescriptor* lookup(const char* id);
+        const IEntityDescriptor* lookup(const XMLCh* id);
         const IEntityDescriptor* lookup(const saml::SAMLArtifact* artifact);
 
     private:
index 679fced..e91fc1f 100644 (file)
@@ -425,6 +425,7 @@ namespace {
         XMLMetadata(const DOMElement* e) : ReloadableXMLFile(e) {}
         ~XMLMetadata() {}
 
+        const IEntityDescriptor* lookup(const char* providerId) const;
         const IEntityDescriptor* lookup(const XMLCh* providerId) const;
         const IEntityDescriptor* lookup(const saml::SAMLArtifact* artifact) const;
         
@@ -1108,12 +1109,11 @@ XMLMetadataImpl::~XMLMetadataImpl()
     delete m_rootProvider;
 }
 
-const IEntityDescriptor* XMLMetadata::lookup(const XMLCh* providerId) const
+const IEntityDescriptor* XMLMetadata::lookup(const char* providerId) const
 {
     XMLMetadataImpl* impl=dynamic_cast<XMLMetadataImpl*>(getImplementation());
-    auto_ptr_char temp(providerId);
     pair<XMLMetadataImpl::sitemap_t::const_iterator,XMLMetadataImpl::sitemap_t::const_iterator> range=
-        impl->m_sites.equal_range(temp.get());
+        impl->m_sites.equal_range(providerId);
 
     time_t now=time(NULL);
     for (XMLMetadataImpl::sitemap_t::const_iterator i=range.first; i!=range.second; i++)
@@ -1122,6 +1122,12 @@ const IEntityDescriptor* XMLMetadata::lookup(const XMLCh* providerId) const
     return NULL;
 }
 
+const IEntityDescriptor* XMLMetadata::lookup(const XMLCh* providerId) const
+{
+    auto_ptr_char temp(providerId);
+    return lookup(temp.get());
+}
+
 const IEntityDescriptor* XMLMetadata::lookup(const SAMLArtifact* artifact) const
 {
     time_t now=time(NULL);