MessageEncoder, ArtifactMap, and SAML 1.x encoder classes.
[shibboleth/cpp-opensaml.git] / saml / SAMLConfig.h
index 0474707..90e00ad 100644 (file)
@@ -24,6 +24,7 @@
 #define __saml_config_h__\r
 \r
 #include <saml/base.h>\r
+#include <saml/binding/ArtifactMap.h>\r
 \r
 #include <xmltooling/PluginManager.h>\r
 #include <xmltooling/XMLToolingConfig.h>\r
@@ -36,6 +37,8 @@
  */\r
 namespace opensaml {\r
 \r
+    class SAML_API MessageEncoder;\r
+    class SAML_API MessageDecoder;\r
     class SAML_API SAMLArtifact;\r
     class SAML_API TrustEngine;\r
 \r
@@ -91,6 +94,27 @@ namespace opensaml {
         virtual void term(bool termXMLTooling=true)=0;\r
         \r
         /**\r
+         * Sets the global ArtifactMap instance.\r
+         * This method must be externally synchronized with any code that uses the object.\r
+         * Any previously set object is destroyed.\r
+         * \r
+         * @param artifactMap   new ArtifactMap instance to store\r
+         */\r
+        void setArtifactMap(ArtifactMap* artifactMap) {\r
+            delete m_artifactMap;\r
+            m_artifactMap = artifactMap;\r
+        }\r
+        \r
+        /**\r
+         * Returns the global ArtifactMap instance.\r
+         * \r
+         * @return  global ArtifactMap\r
+         */\r
+        ArtifactMap* getArtifactMap() const {\r
+            return m_artifactMap;\r
+        }\r
+        \r
+        /**\r
          * Generate random information using the underlying security library\r
          * \r
          * @param buf   buffer for the information\r
@@ -123,16 +147,16 @@ namespace opensaml {
          * @return  SHA-1 hash of the data\r
          */\r
         virtual std::string hashSHA1(const char* s, bool toHex=false)=0;\r
-        \r
+\r
         /**\r
-         * Manages factories for MetadataProvider plugins.\r
+         * Manages factories for MessageDecoder plugins.\r
          */\r
-        xmltooling::PluginManager<saml2md::MetadataProvider,const DOMElement*> MetadataProviderManager;\r
-        \r
+        xmltooling::PluginManager<MessageDecoder,const DOMElement*> MessageDecoderManager;\r
+\r
         /**\r
-         * Manages factories for MetadataFilter plugins.\r
+         * Manages factories for MessageEncoder plugins.\r
          */\r
-        xmltooling::PluginManager<saml2md::MetadataFilter,const DOMElement*> MetadataFilterManager;\r
+        xmltooling::PluginManager<MessageEncoder,const DOMElement*> MessageEncoderManager;        \r
 \r
         /**\r
          * Manages factories for SAMLArtifact plugins.\r
@@ -144,8 +168,21 @@ namespace opensaml {
          */\r
         xmltooling::PluginManager<TrustEngine,const DOMElement*> TrustEngineManager;\r
 \r
+        /**\r
+         * Manages factories for MetadataProvider plugins.\r
+         */\r
+        xmltooling::PluginManager<saml2md::MetadataProvider,const DOMElement*> MetadataProviderManager;\r
+        \r
+        /**\r
+         * Manages factories for MetadataFilter plugins.\r
+         */\r
+        xmltooling::PluginManager<saml2md::MetadataFilter,const DOMElement*> MetadataFilterManager;\r
+\r
     protected:\r
-        SAMLConfig() {}\r
+        SAMLConfig() : m_artifactMap(NULL) {}\r
+        \r
+        /** Global ArtifactMap instance for use by artifact-related functions. */\r
+        ArtifactMap* m_artifactMap;\r
     };\r
 \r
 #if defined (_MSC_VER)\r