Template replacement engine ported from Shib, added conditional nesting.
[shibboleth/cpp-xmltooling.git] / xmltooling / XMLToolingConfig.cpp
index f8e7f3b..fac88e1 100644 (file)
 #include "signature/CredentialResolver.h"
 #include "soap/SOAP.h"
 #include "util/NDC.h"
+#include "util/ReplayCache.h"
 #include "util/StorageService.h"
+#include "util/TemplateEngine.h"
 #include "util/XMLConstants.h"
-#include "validation/Validator.h"
+#include "validation/ValidatorSuite.h"
 
 #ifdef HAVE_DLFCN_H
 # include <dlfcn.h>
@@ -143,6 +145,18 @@ bool XMLToolingInternalConfig::log_config(const char* config)
     return true;
 }
 
+void XMLToolingConfig::setReplayCache(ReplayCache* replayCache)
+{
+    delete m_replayCache;
+    m_replayCache = replayCache;
+}
+
+void XMLToolingConfig::setTemplateEngine(TemplateEngine* templateEngine)
+{
+    delete m_templateEngine;
+    m_templateEngine = templateEngine;
+}
+
 bool XMLToolingInternalConfig::init()
 {
 #ifdef _DEBUG
@@ -222,9 +236,8 @@ bool XMLToolingInternalConfig::init()
 
 void XMLToolingInternalConfig::term()
 {
+    SchemaValidators.destroyValidators();
     XMLObjectBuilder::destroyBuilders();
-    KeyInfoSchemaValidators.destroyValidators();
-    EncryptionSchemaValidators.destroyValidators();
     XMLToolingException::deregisterFactories();
     AttributeExtensibleXMLObject::deregisterIDAttributes();
 
@@ -234,6 +247,12 @@ void XMLToolingInternalConfig::term()
     KeyResolverManager.deregisterFactories();
 #endif
 
+    delete m_replayCache;
+    m_replayCache = NULL;
+    
+    delete m_templateEngine;
+    m_templateEngine = NULL;
+
     for (vector<void*>::reverse_iterator i=m_libhandles.rbegin(); i!=m_libhandles.rend(); i++) {
 #if defined(WIN32)
         FARPROC fn=GetProcAddress(static_cast<HMODULE>(*i),"xmltooling_extension_term");