From 3654400391293dea962369965a26ae2023a61f37 Mon Sep 17 00:00:00 2001 From: Scott Cantor Date: Wed, 21 Sep 2011 17:10:59 +0000 Subject: [PATCH] Add API for status generation. --- saml/saml2/metadata/MetadataProvider.h | 9 +++++++++ saml/saml2/metadata/impl/ChainingMetadataProvider.cpp | 9 +++++++++ saml/saml2/metadata/impl/MetadataProvider.cpp | 4 ++++ 3 files changed, 22 insertions(+) diff --git a/saml/saml2/metadata/MetadataProvider.h b/saml/saml2/metadata/MetadataProvider.h index 145b763..63c74e7 100644 --- a/saml/saml2/metadata/MetadataProvider.h +++ b/saml/saml2/metadata/MetadataProvider.h @@ -30,6 +30,7 @@ #include #include +#include #include #include @@ -121,6 +122,14 @@ namespace opensaml { virtual void init()=0; /** + * Generate an XML representation of the provider's status. The XML must be + * well-formed, but is otherwise arbitrary. + * + * @param os stream to write status information to + */ + virtual void outputStatus(std::ostream& os) const; + + /** * Gets the entire metadata tree, after the registered filter has been applied. * The caller MUST unlock the provider when finished with the data. * diff --git a/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp b/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp index 81f6bf1..5bb1f50 100644 --- a/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp +++ b/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp @@ -33,6 +33,7 @@ #include "saml2/metadata/MetadataCredentialCriteria.h" #include +#include #include #include #include @@ -64,6 +65,7 @@ namespace opensaml { Lockable* lock(); void unlock(); void init(); + void outputStatus(ostream& os) const; const XMLObject* getMetadata() const; const EntitiesDescriptor* getEntitiesDescriptor(const char* name, bool requireValidMetadata=true) const; pair getEntityDescriptor(const Criteria& criteria) const; @@ -224,6 +226,13 @@ void ChainingMetadataProvider::init() m_feedTag = SAMLArtifact::toHex(m_feedTag); } +void ChainingMetadataProvider::outputStatus(ostream& os) const +{ + for (vector::const_iterator i=m_providers.begin(); i!=m_providers.end(); ++i) { + (*i)->outputStatus(os); + } +} + Lockable* ChainingMetadataProvider::lock() { return this; // we're not lockable ourselves... diff --git a/saml/saml2/metadata/impl/MetadataProvider.cpp b/saml/saml2/metadata/impl/MetadataProvider.cpp index 6cb7f93..6498750 100644 --- a/saml/saml2/metadata/impl/MetadataProvider.cpp +++ b/saml/saml2/metadata/impl/MetadataProvider.cpp @@ -165,6 +165,10 @@ void MetadataProvider::doFilters(XMLObject& xmlObject) const } } +void MetadataProvider::outputStatus(ostream& os) const +{ +} + const EntitiesDescriptor* MetadataProvider::getEntitiesDescriptor(const XMLCh* name, bool strict) const { auto_ptr_char temp(name); -- 2.1.4