Added built-in ID attribute support to base classes.
[shibboleth/cpp-xmltooling.git] / xmltooling / XMLToolingConfig.cpp
index e80b136..e248f6a 100644 (file)
@@ -26,7 +26,9 @@
 #include "encryption/Encryption.h"
 #include "impl/UnknownElement.h"
 #include "security/TrustEngine.h"
+#include "security/OpenSSLCryptoX509CRL.h"
 #include "signature/CredentialResolver.h"
+#include "soap/SOAP.h"
 #include "util/NDC.h"
 #include "util/XMLConstants.h"
 #include "validation/Validator.h"
@@ -45,6 +47,7 @@
     #include <openssl/err.h>
 #endif
 
+using namespace soap11;
 using namespace xmlencryption;
 using namespace xmlsignature;
 using namespace xmltooling;
@@ -164,6 +167,7 @@ bool XMLToolingInternalConfig::init()
 
         registerKeyInfoClasses();
         registerEncryptionClasses();
+        registerSOAPClasses();
         
         REGISTER_EXCEPTION_FACTORY(XMLParserException,xmltooling);
         REGISTER_EXCEPTION_FACTORY(XMLObjectException,xmltooling);
@@ -180,6 +184,10 @@ bool XMLToolingInternalConfig::init()
         registerCredentialResolvers();
         registerTrustEngines();
 #endif
+
+        // Register xml:id as an ID attribute.        
+        static const XMLCh xmlid[] = UNICODE_LITERAL_2(i,d);
+        AttributeExtensibleXMLObject::registerIDAttribute(QName(XMLConstants::XML_NS, xmlid)); 
     }
     catch (const xercesc::XMLException&) {
         log.fatal("caught exception while initializing Xerces");
@@ -196,6 +204,7 @@ void XMLToolingInternalConfig::term()
     KeyInfoSchemaValidators.destroyValidators();
     EncryptionSchemaValidators.destroyValidators();
     XMLToolingException::deregisterFactories();
+    AttributeExtensibleXMLObject::deregisterIDAttributes();
 
 #ifndef XMLTOOLING_NO_XMLSEC
     TrustEngineManager.deregisterFactories();
@@ -344,4 +353,9 @@ void xmltooling::log_openssl()
         code=ERR_get_error_line_data(&file,&line,&data,&flags);
     }
 }
+
+XSECCryptoX509CRL* XMLToolingInternalConfig::X509CRL() const
+{
+    return new OpenSSLCryptoX509CRL();
+}
 #endif