Credential resolver plugin
[shibboleth/cpp-xmltooling.git] / xmltooling / XMLToolingConfig.h
index dacf961..e2845b8 100644 (file)
  * Library configuration \r
  */\r
 \r
-#if !defined(__xmltooling_config_h__)\r
+#ifndef __xmltooling_config_h__\r
 #define __xmltooling_config_h__\r
 \r
-#include <xmltooling/ILockable.h>\r
+#include <xmltooling/Lockable.h>\r
+#include <xmltooling/PluginManager.h>\r
+#include <xmltooling/util/ParserPool.h>\r
+\r
+#ifndef XMLTOOLING_NO_XMLSEC\r
+namespace xmlsignature {\r
+    class XMLTOOL_API CredentialResolver;\r
+    class XMLTOOL_API KeyResolver;\r
+};\r
+#endif\r
+\r
+#if defined (_MSC_VER)\r
+    #pragma warning( push )\r
+    #pragma warning( disable : 4251 )\r
+#endif\r
 \r
 namespace xmltooling {\r
 \r
@@ -34,7 +48,7 @@ namespace xmltooling {
      * obtain a global system lock, but the actual configuration itself is not\r
      * synchronized.\r
      */\r
-    class XMLTOOL_API XMLToolingConfig : public ILockable\r
+    class XMLTOOL_API XMLToolingConfig : public Lockable\r
     {\r
     MAKE_NONCOPYABLE(XMLToolingConfig);\r
     public:\r
@@ -91,11 +105,44 @@ namespace xmltooling {
          * @return true iff configuration was successful\r
          */\r
         virtual bool log_config(const char* config=NULL)=0;\r
-        \r
+\r
+        /**\r
+         * Obtains a non-validating parser pool.\r
+         * Library must be initialized first.\r
+         *\r
+         * @return reference to a non-validating parser pool.\r
+         */\r
+        virtual ParserPool& getParser() const=0;\r
+\r
+        /**\r
+         * Obtains a validating parser pool.\r
+         * Library must be initialized first. Schema/catalog registration must be\r
+         * externally synchronized.\r
+         *\r
+         * @return reference to a validating parser pool.\r
+         */\r
+        virtual ParserPool& getValidatingParser() const=0;\r
+\r
+#ifndef XMLTOOLING_NO_XMLSEC\r
+        /**\r
+         * Manages factories for KeyResolver plugins.\r
+         */\r
+        xmltooling::PluginManager<xmlsignature::KeyResolver,const DOMElement*> KeyResolverManager;\r
+\r
+        /**\r
+         * Manages factories for CredentialResolver plugins.\r
+         */\r
+        xmltooling::PluginManager<xmlsignature::CredentialResolver,const DOMElement*> CredentialResolverManager;\r
+#endif\r
+\r
     protected:\r
         XMLToolingConfig() {}\r
     };\r
 \r
 };\r
 \r
+#if defined (_MSC_VER)\r
+    #pragma warning( pop )\r
+#endif\r
+\r
 #endif /* __xmltooling_config_h__ */\r