+ * before terminating itself. The flag controls whether this is the\r
+ * "dominant" library or not and can allow the SAML library to be loaded\r
+ * as an extension of XMLTooling rather than subsuming it.\r
+ * \r
+ * @param termXMLTooling true iff this method should shutdown the XMLTooling layer\r
+ */\r
+ 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
+ \r
+ /**\r
+ * Returns the global ArtifactMap instance.\r
+ * \r
+ * @return global ArtifactMap or NULL\r
+ */\r
+ ArtifactMap* getArtifactMap() const {\r
+ return m_artifactMap;\r
+ }\r
+\r
+ /**\r
+ * Sets the global URLEncoder 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 urlEncoder new URLEncoder instance to store\r
+ */\r
+ void setURLEncoder(URLEncoder* urlEncoder);\r
+ \r
+ /**\r
+ * Returns the global URLEncoder instance.\r
+ * \r
+ * @return global URLEncoder or NULL\r
+ */\r
+ URLEncoder* getURLEncoder() const {\r
+ return m_urlEncoder;\r
+ }\r
+ \r
+ /**\r
+ * Sets the global ReplayCache 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 replayCache new ReplayCache instance to store\r
+ */\r
+ void setReplayCache(ReplayCache* replayCache);\r
+\r
+ /**\r
+ * Returns the global ReplayCache instance.\r
+ * \r
+ * @return global ReplayCache or NULL\r