A "simple" attribute resolver, and token validation.
[shibboleth/cpp-sp.git] / shibsp / SPConfig.h
index 44d32cc..c785e87 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2006 Internet2
+ *  Copyright 2001-2007 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -24,6 +24,8 @@
 #define __shibsp_config_h__
 
 #include <shibsp/base.h>
+#include <xmltooling/PluginManager.h>
+#include <xercesc/dom/DOM.hpp>
 
 /**
  * @namespace shibsp
  */
 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;
+
+#if defined (_MSC_VER)
+    #pragma warning( push )
+    #pragma warning( disable : 4250 4251 )
+#endif
 
     /**
      * Singleton object that manages library startup/shutdown.
@@ -58,8 +72,8 @@ namespace shibsp {
             Metadata = 4,
             Trust = 8,
             Credentials = 16,
-            AAP = 32,
-            RequestMapper = 64,
+            AttributeResolution = 32,
+            RequestMapping = 64,
             OutOfProcess = 128,
             InProcess = 256,
             Logging = 512
@@ -121,8 +135,71 @@ namespace shibsp {
             return m_serviceProvider;
         }
 
+        /** Separator for serialized values of multi-valued attributes. */
+        char attribute_value_delimeter;
+        
+        /**
+         * Manages factories for AccessControl plugins.
+         */
+        xmltooling::PluginManager<AccessControl,const xercesc::DOMElement*> AccessControlManager;
+
+        /**
+         * Manages factories for AttributeDecoder plugins.
+         */
+        xmltooling::PluginManager<AttributeDecoder,const xercesc::DOMElement*> AttributeDecoderManager;
+
+        /**
+         * Manages factories for AttributeResolver plugins.
+         */
+        xmltooling::PluginManager<AttributeResolver,const xercesc::DOMElement*> AttributeResolverManager;
+
+        /**
+         * Manages factories for Handler plugins that implement AssertionConsumerService functionality.
+         */
+        xmltooling::PluginManager<Handler,const xercesc::DOMElement*> AssertionConsumerServiceManager;
+
+        /**
+         * Manages factories for Handler plugins that implement customized functionality.
+         */
+        xmltooling::PluginManager<Handler,const xercesc::DOMElement*> HandlerManager;
+
+        /**
+         * Manages factories for ListenerService plugins.
+         */
+        xmltooling::PluginManager<ListenerService,const xercesc::DOMElement*> ListenerServiceManager;
+
+        /**
+         * Manages factories for Handler plugins that implement ManageNameIDService functionality.
+         */
+        xmltooling::PluginManager<Handler,const xercesc::DOMElement*> ManageNameIDServiceManager;
+
+        /**
+         * Manages factories for RequestMapper plugins.
+         */
+        xmltooling::PluginManager<RequestMapper,const xercesc::DOMElement*> RequestMapperManager;
+
+        /**
+         * Manages factories for ServiceProvider plugins.
+         */
+        xmltooling::PluginManager<ServiceProvider,const xercesc::DOMElement*> ServiceProviderManager;
+
+        /**
+         * Manages factories for SessionCache plugins.
+         */
+        xmltooling::PluginManager<SessionCache,const xercesc::DOMElement*> SessionCacheManager;
+
+        /**
+         * Manages factories for Handler plugins that implement SessionInitiator functionality.
+         */
+        xmltooling::PluginManager<Handler,const xercesc::DOMElement*> SessionInitiatorManager;
+
+        /**
+         * Manages factories for Handler plugins that implement SingleLogoutService functionality.
+         */
+        xmltooling::PluginManager<Handler,const xercesc::DOMElement*> SingleLogoutServiceManager;
+
     protected:
-        SPConfig() : m_serviceProvider(NULL) {}
+        SPConfig() : attribute_value_delimeter(';'), m_serviceProvider(NULL), m_features(0) {}
         
         /** Global ServiceProvider instance. */
         ServiceProvider* m_serviceProvider;
@@ -131,6 +208,10 @@ namespace shibsp {
         unsigned long m_features;
     };
 
+#if defined (_MSC_VER)
+    #pragma warning( pop )
+#endif
+
 };
 
 #endif /* __shibsp_config_h__ */