#define __shibsp_config_h__
#include <shibsp/base.h>
-#include <saml/binding/MessageDecoder.h>
+#ifndef SHIBSP_LITE
+# include <saml/binding/MessageDecoder.h>
+#endif
#include <xmltooling/PluginManager.h>
#include <xercesc/dom/DOM.hpp>
namespace shibsp {
class SHIBSP_API AccessControl;
- class SHIBSP_API AttributeDecoder;
- class SHIBSP_API AttributeResolver;
class SHIBSP_API Handler;
class SHIBSP_API ListenerService;
class SHIBSP_API RequestMapper;
class SHIBSP_API ServiceProvider;
class SHIBSP_API SessionCache;
+ class SHIBSP_API SessionInitiator;
+
+#ifndef SHIBSP_LITE
+ class SHIBSP_API AttributeDecoder;
+ class SHIBSP_API AttributeExtractor;
+ class SHIBSP_API AttributeFilter;
+ class SHIBSP_API AttributeResolver;
+ class SHIBSP_API FilterPolicyContext;
+ class SHIBSP_API MatchFunctor;
+#endif
#if defined (_MSC_VER)
#pragma warning( push )
*/
class SHIBSP_API SPConfig
{
- MAKE_NONCOPYABLE(SPConfig);
+ MAKE_NONCOPYABLE(SPConfig);
public:
+ SPConfig() : attribute_value_delimeter(';'), m_serviceProvider(NULL),
+#ifndef SHIBSP_LITE
+ m_artifactResolver(NULL),
+#endif
+ m_features(0) {}
+
virtual ~SPConfig() {}
/**
enum components_t {
Listener = 1,
Caching = 2,
+#ifndef SHIBSP_LITE
Metadata = 4,
Trust = 8,
Credentials = 16,
AttributeResolution = 32,
+#endif
RequestMapping = 64,
OutOfProcess = 128,
InProcess = 256,
- Logging = 512
+ Logging = 512,
+ Handlers = 1024
};
/**
* before using any library classes.
*
* @param catalog_path delimited set of schema catalog files to load
+ * @param inst_prefix installation prefix for software
* @return true iff initialization was successful
*/
- virtual bool init(const char* catalog_path)=0;
+ virtual bool init(const char* catalog_path=NULL, const char* inst_prefix=NULL);
/**
* Shuts down library
* Each process using the library SHOULD call this function exactly once
* before terminating itself.
*/
- virtual void term()=0;
+ virtual void term();
/**
* Sets the global ServiceProvider instance.
return m_serviceProvider;
}
+#ifndef SHIBSP_LITE
/**
* Sets the global ArtifactResolver instance.
*
opensaml::MessageDecoder::ArtifactResolver* getArtifactResolver() const {
return m_artifactResolver;
}
+#endif
/** Separator for serialized values of multi-valued attributes. */
char attribute_value_delimeter;
/**
* Manages factories for AccessControl plugins.
*/
- xmltooling::PluginManager<AccessControl,const xercesc::DOMElement*> AccessControlManager;
+ xmltooling::PluginManager<AccessControl,std::string,const xercesc::DOMElement*> AccessControlManager;
+#ifndef SHIBSP_LITE
/**
* Manages factories for AttributeDecoder plugins.
*/
- xmltooling::PluginManager<AttributeDecoder,const xercesc::DOMElement*> AttributeDecoderManager;
+ xmltooling::PluginManager<AttributeDecoder,xmltooling::QName,const xercesc::DOMElement*> AttributeDecoderManager;
+
+ /**
+ * Manages factories for AttributeExtractor plugins.
+ */
+ xmltooling::PluginManager<AttributeExtractor,std::string,const xercesc::DOMElement*> AttributeExtractorManager;
+
+ /**
+ * Manages factories for AttributeFilter plugins.
+ */
+ xmltooling::PluginManager<AttributeFilter,std::string,const xercesc::DOMElement*> AttributeFilterManager;
/**
* Manages factories for AttributeResolver plugins.
*/
- xmltooling::PluginManager<AttributeResolver,const xercesc::DOMElement*> AttributeResolverManager;
+ xmltooling::PluginManager<AttributeResolver,std::string,const xercesc::DOMElement*> AttributeResolverManager;
+
+ /**
+ * Manages factories for MatchFunctor plugins.
+ */
+ xmltooling::PluginManager< MatchFunctor,xmltooling::QName,std::pair<const FilterPolicyContext*,const xercesc::DOMElement*> > MatchFunctorManager;
+#endif
+
+ /**
+ * Manages factories for Handler plugins that implement ArtifactResolutionService functionality.
+ */
+ xmltooling::PluginManager< Handler,std::string,std::pair<const xercesc::DOMElement*,const char*> > ArtifactResolutionServiceManager;
/**
* Manages factories for Handler plugins that implement AssertionConsumerService functionality.
*/
- xmltooling::PluginManager< Handler,std::pair<const xercesc::DOMElement*,const char*> > AssertionConsumerServiceManager;
+ xmltooling::PluginManager< Handler,std::string,std::pair<const xercesc::DOMElement*,const char*> > AssertionConsumerServiceManager;
/**
* Manages factories for Handler plugins that implement customized functionality.
*/
- xmltooling::PluginManager< Handler,std::pair<const xercesc::DOMElement*,const char*> > HandlerManager;
+ xmltooling::PluginManager< Handler,std::string,std::pair<const xercesc::DOMElement*,const char*> > HandlerManager;
/**
* Manages factories for ListenerService plugins.
*/
- xmltooling::PluginManager<ListenerService,const xercesc::DOMElement*> ListenerServiceManager;
+ xmltooling::PluginManager<ListenerService,std::string,const xercesc::DOMElement*> ListenerServiceManager;
+
+ /**
+ * Manages factories for Handler plugins that implement LogoutInitiator functionality.
+ */
+ xmltooling::PluginManager< Handler,std::string,std::pair<const xercesc::DOMElement*,const char*> > LogoutInitiatorManager;
/**
* Manages factories for Handler plugins that implement ManageNameIDService functionality.
*/
- xmltooling::PluginManager< Handler,std::pair<const xercesc::DOMElement*,const char*> > ManageNameIDServiceManager;
+ xmltooling::PluginManager< Handler,std::string,std::pair<const xercesc::DOMElement*,const char*> > ManageNameIDServiceManager;
/**
* Manages factories for RequestMapper plugins.
*/
- xmltooling::PluginManager<RequestMapper,const xercesc::DOMElement*> RequestMapperManager;
+ xmltooling::PluginManager<RequestMapper,std::string,const xercesc::DOMElement*> RequestMapperManager;
/**
* Manages factories for ServiceProvider plugins.
*/
- xmltooling::PluginManager<ServiceProvider,const xercesc::DOMElement*> ServiceProviderManager;
+ xmltooling::PluginManager<ServiceProvider,std::string,const xercesc::DOMElement*> ServiceProviderManager;
/**
* Manages factories for SessionCache plugins.
*/
- xmltooling::PluginManager<SessionCache,const xercesc::DOMElement*> SessionCacheManager;
+ xmltooling::PluginManager<SessionCache,std::string,const xercesc::DOMElement*> SessionCacheManager;
/**
* Manages factories for Handler plugins that implement SessionInitiator functionality.
*/
- xmltooling::PluginManager< Handler,std::pair<const xercesc::DOMElement*,const char*> > SessionInitiatorManager;
+ xmltooling::PluginManager< SessionInitiator,std::string,std::pair<const xercesc::DOMElement*,const char*> > SessionInitiatorManager;
/**
* Manages factories for Handler plugins that implement SingleLogoutService functionality.
*/
- xmltooling::PluginManager< Handler,std::pair<const xercesc::DOMElement*,const char*> > SingleLogoutServiceManager;
+ xmltooling::PluginManager< Handler,std::string,std::pair<const xercesc::DOMElement*,const char*> > SingleLogoutServiceManager;
protected:
- SPConfig() : attribute_value_delimeter(';'), m_serviceProvider(NULL), m_artifactResolver(NULL), m_features(0) {}
-
/** Global ServiceProvider instance. */
ServiceProvider* m_serviceProvider;
+#ifndef SHIBSP_LITE
/** Global ArtifactResolver instance. */
opensaml::MessageDecoder::ArtifactResolver* m_artifactResolver;
+#endif
private:
unsigned long m_features;