projects
/
shibboleth
/
cpp-opensaml.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
61be70c
)
Convert context API to use const objects and support chaining provider
author
Scott Cantor
<cantor.2@osu.edu>
Tue, 22 May 2012 03:47:22 +0000
(
03:47
+0000)
committer
Scott Cantor
<cantor.2@osu.edu>
Tue, 22 May 2012 03:47:22 +0000
(
03:47
+0000)
saml/saml2/metadata/MetadataFilter.h
patch
|
blob
|
history
saml/saml2/metadata/MetadataProvider.h
patch
|
blob
|
history
saml/saml2/metadata/impl/ChainingMetadataProvider.cpp
patch
|
blob
|
history
saml/saml2/metadata/impl/MetadataProvider.cpp
patch
|
blob
|
history
diff --git
a/saml/saml2/metadata/MetadataFilter.h
b/saml/saml2/metadata/MetadataFilter.h
index
641decb
..
6572c52
100644
(file)
--- a/
saml/saml2/metadata/MetadataFilter.h
+++ b/
saml/saml2/metadata/MetadataFilter.h
@@
-82,7
+82,7
@@
namespace opensaml {
* @param ctx context interface, or nullptr
* @param xmlObject the metadata to be filtered
*/
* @param ctx context interface, or nullptr
* @param xmlObject the metadata to be filtered
*/
- virtual void doFilter(MetadataFilterContext* ctx, xmltooling::XMLObject& xmlObject) const;
+ virtual void doFilter(
const
MetadataFilterContext* ctx, xmltooling::XMLObject& xmlObject) const;
};
/**
};
/**
diff --git
a/saml/saml2/metadata/MetadataProvider.h
b/saml/saml2/metadata/MetadataProvider.h
index
d19a805
..
e8c852f
100644
(file)
--- a/
saml/saml2/metadata/MetadataProvider.h
+++ b/
saml/saml2/metadata/MetadataProvider.h
@@
-31,7
+31,6
@@
#include <vector>
#include <iostream>
#include <vector>
#include <iostream>
-#include <boost/scoped_ptr.hpp>
#include <boost/ptr_container/ptr_vector.hpp>
#include <xmltooling/exceptions.h>
#include <xmltooling/security/CredentialResolver.h>
#include <boost/ptr_container/ptr_vector.hpp>
#include <xmltooling/exceptions.h>
#include <xmltooling/security/CredentialResolver.h>
@@
-124,12
+123,12
@@
namespace opensaml {
/**
* Sets a filtering context object for use by the filtering process.
/**
* Sets a filtering context object for use by the filtering process.
- * <p>The
MetadataProvider takes ownership of the object. Any existing
- * o
bject is cleared
.
+ * <p>The
object's lifetime must last for the duration of the lifetime
+ * o
f the MetadataProvider
.
*
* @param ctx a context object
*/
*
* @param ctx a context object
*/
- void setContext(MetadataFilterContext* ctx);
+ void setContext(
const
MetadataFilterContext* ctx);
/**
* Should be called after instantiating provider and adding filters, but before
/**
* Should be called after instantiating provider and adding filters, but before
@@
-262,7
+261,7
@@
namespace opensaml {
void doFilters(xmltooling::XMLObject& xmlObject) const;
private:
void doFilters(xmltooling::XMLObject& xmlObject) const;
private:
-
boost::scoped_ptr<MetadataFilterContext>
m_filterContext;
+
const MetadataFilterContext*
m_filterContext;
boost::ptr_vector<MetadataFilter> m_filters;
};
boost::ptr_vector<MetadataFilter> m_filters;
};
diff --git
a/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp
b/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp
index
e8dcf15
..
968927e
100644
(file)
--- a/
saml/saml2/metadata/impl/ChainingMetadataProvider.cpp
+++ b/
saml/saml2/metadata/impl/ChainingMetadataProvider.cpp
@@
-67,14
+67,15
@@
namespace opensaml {
Lockable* lock();
void unlock();
Lockable* lock();
void unlock();
+ void setContext(const MetadataFilterContext*);
void init();
void init();
- void outputStatus(ostream&
os
) const;
+ void outputStatus(ostream&) const;
const XMLObject* getMetadata() const;
const XMLObject* getMetadata() const;
- const EntitiesDescriptor* getEntitiesDescriptor(const char*
name
, bool requireValidMetadata=true) const;
- pair<const EntityDescriptor*,const RoleDescriptor*> getEntityDescriptor(const Criteria&
criteria
) const;
+ const EntitiesDescriptor* getEntitiesDescriptor(const char*, bool requireValidMetadata=true) const;
+ pair<const EntityDescriptor*,const RoleDescriptor*> getEntityDescriptor(const Criteria&) const;
const Credential* resolve(const CredentialCriteria* criteria=nullptr) const;
const Credential* resolve(const CredentialCriteria* criteria=nullptr) const;
- vector<const Credential*>::size_type resolve(vector<const Credential*>&
results
, const CredentialCriteria* criteria=nullptr) const;
+ vector<const Credential*>::size_type resolve(vector<const Credential*>&, const CredentialCriteria* criteria=nullptr) const;
string getCacheTag() const {
Lock lock(m_trackerLock);
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());
}
}
m_log.error("error building MetadataProvider: %s", ex.what());
}
}
+ else {
+ m_log.error("MetadataProvider element missing type attribute");
+ }
e = XMLHelper::getNextSiblingElement(e, _MetadataProvider);
}
}
e = XMLHelper::getNextSiblingElement(e, _MetadataProvider);
}
}
@@
-208,6
+212,11
@@
ChainingMetadataProvider::~ChainingMetadataProvider()
for_each(m_trackers.begin(), m_trackers.end(), xmltooling::cleanup<tracker_t>());
}
for_each(m_trackers.begin(), m_trackers.end(), xmltooling::cleanup<tracker_t>());
}
+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<MetadataProvider>::iterator i = m_providers.begin(); i != m_providers.end(); ++i) {
void ChainingMetadataProvider::init()
{
for (ptr_vector<MetadataProvider>::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<MetadataProvider>::iterator i = m_providers.begin(); i != m_providers.end(); ++i) {
tracker->lock_if(&(*i));
const EntitiesDescriptor* cur = nullptr;
for (ptr_vector<MetadataProvider>::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.
// Are we using a first match policy?
if (m_firstMatch) {
// Save locked provider.
diff --git
a/saml/saml2/metadata/impl/MetadataProvider.cpp
b/saml/saml2/metadata/impl/MetadataProvider.cpp
index
98acde7
..
33c852c
100644
(file)
--- a/
saml/saml2/metadata/impl/MetadataProvider.cpp
+++ b/
saml/saml2/metadata/impl/MetadataProvider.cpp
@@
-91,7
+91,7
@@
static const XMLCh Exclude[] = UNICODE_LITERAL_7(E,x,c,l,u,d,e);
static const XMLCh Include[] = UNICODE_LITERAL_7(I,n,c,l,u,d,e);
static const XMLCh _type[] = UNICODE_LITERAL_4(t,y,p,e);
static const XMLCh Include[] = UNICODE_LITERAL_7(I,n,c,l,u,d,e);
static const XMLCh _type[] = UNICODE_LITERAL_4(t,y,p,e);
-MetadataProvider::MetadataProvider(const DOMElement* e)
+MetadataProvider::MetadataProvider(const DOMElement* e)
: m_filterContext(nullptr)
{
#ifdef _DEBUG
NDC ndc("MetadataProvider");
{
#ifdef _DEBUG
NDC ndc("MetadataProvider");
@@
-112,7
+112,7
@@
MetadataProvider::MetadataProvider(const DOMElement* e)
np.release();
}
else {
np.release();
}
else {
- log.error("MetadataFilter element missing type attribute
.
");
+ log.error("MetadataFilter element missing type attribute");
}
}
else if (XMLString::equals(child->getLocalName(), SigFilter)) {
}
}
else if (XMLString::equals(child->getLocalName(), SigFilter)) {
@@
-167,9
+167,9
@@
MetadataFilter* MetadataProvider::removeMetadataFilter(MetadataFilter* oldFilter
return nullptr;
}
return nullptr;
}
-void MetadataProvider::setContext(MetadataFilterContext* ctx)
+void MetadataProvider::setContext(
const
MetadataFilterContext* ctx)
{
{
- m_filterContext
.reset(ctx)
;
+ m_filterContext
= ctx
;
}
void MetadataProvider::doFilters(XMLObject& xmlObject) const
}
void MetadataProvider::doFilters(XMLObject& xmlObject) const
@@
-177,7
+177,7
@@
void MetadataProvider::doFilters(XMLObject& xmlObject) const
Category& log = Category::getInstance(SAML_LOGCAT".Metadata");
for (ptr_vector<MetadataFilter>::const_iterator i = m_filters.begin(); i != m_filters.end(); i++) {
log.info("applying metadata filter (%s)", i->getId());
Category& log = Category::getInstance(SAML_LOGCAT".Metadata");
for (ptr_vector<MetadataFilter>::const_iterator i = m_filters.begin(); i != m_filters.end(); i++) {
log.info("applying metadata filter (%s)", i->getId());
- i->doFilter(m_filterContext
.get()
, xmlObject);
+ i->doFilter(m_filterContext, xmlObject);
}
}
}
}
@@
-217,13
+217,13
@@
MetadataProvider::Criteria::~Criteria()
void MetadataProvider::Criteria::reset()
{
void MetadataProvider::Criteria::reset()
{
- entityID_unicode
=
nullptr;
- entityID_ascii
=
nullptr;
- artifact
=
nullptr;
- role
=
nullptr;
- protocol
=
nullptr;
- protocol2
=
nullptr;
- validOnly
=
true;
+ entityID_unicode
=
nullptr;
+ entityID_ascii
=
nullptr;
+ artifact
=
nullptr;
+ role
=
nullptr;
+ protocol
=
nullptr;
+ protocol2
=
nullptr;
+ validOnly
=
true;
}
MetadataFilter::MetadataFilter()
}
MetadataFilter::MetadataFilter()
@@
-234,7
+234,7
@@
MetadataFilter::~MetadataFilter()
{
}
{
}
-void MetadataFilter::doFilter(MetadataFilterContext* ctx, xmltooling::XMLObject& xmlObject) const
+void MetadataFilter::doFilter(
const
MetadataFilterContext* ctx, xmltooling::XMLObject& xmlObject) const
{
// Default call into deprecated method.
doFilter(xmlObject);
{
// Default call into deprecated method.
doFilter(xmlObject);