// IApplication
const char* getId() const {return getString("id").second;}
const char* getHash() const {return m_hash.c_str();}
- Iterator<IAAP*> getAAPProviders() const;
MetadataProvider* getMetadataProvider() const;
TrustEngine* getTrustEngine() const;
const vector<const XMLCh*>& getAudiences() const;
const ServiceProvider* m_sp; // this is ok because its locking scope includes us
const XMLApplication* m_base;
string m_hash;
- vector<IAAP*> m_aaps;
MetadataProvider* m_metadata;
TrustEngine* m_trust;
vector<const XMLCh*> m_audiences;
if (conf.isEnabled(SPConfig::AAP)) {
child = XMLHelper::getFirstChildElement(e,AAPProvider);
while (child) {
- xmltooling::auto_ptr_char type(child->getAttributeNS(NULL,_type));
- log.info("building AAP provider of type %s...",type.get());
- try {
- IPlugIn* plugin=shibConf.getPlugMgr().newPlugin(type.get(),child);
- IAAP* aap=dynamic_cast<IAAP*>(plugin);
- if (aap)
- m_aaps.push_back(aap);
- else {
- delete plugin;
- log.crit("plugin was not an AAP provider");
- }
- }
- catch (exception& ex) {
- log.crit("error building AAP provider: %s", ex.what());
- }
-
+ // TODO: some kind of compatibility
child = XMLHelper::getNextSiblingElement(child,AAPProvider);
}
}
#else
for_each(m_credMap.begin(),m_credMap.end(),xmltooling::cleanup_pair<const XMLCh*,PropertySet>());
#endif
- for_each(m_aaps.begin(),m_aaps.end(),xmltooling::cleanup<IAAP>());
delete m_trust;
delete m_metadata;
return m_base->getPropertySet(name,ns);
}
-Iterator<IAAP*> XMLApplication::getAAPProviders() const
-{
- return (m_aaps.empty() && m_base) ? m_base->getAAPProviders() : m_aaps;
-}
-
MetadataProvider* XMLApplication::getMetadataProvider() const
{
return (!m_metadata && m_base) ? m_base->getMetadataProvider() : m_metadata;