* Library configuration
*/
+#define XMLTOOLING_DECLARE_VALIDATORS
+
#include "internal.h"
+#include "exceptions.h"
#include "XMLToolingConfig.h"
#include "impl/UnknownElement.h"
-#include "signature/impl/XMLSecSignature.h"
+#include "signature/KeyInfo.h"
+#include "signature/Signature.h"
#include "util/NDC.h"
+#include "util/XMLConstants.h"
+#include "validation/Validator.h"
#ifdef HAVE_DLFCN_H
# include <dlfcn.h>
#include <stdexcept>
-using namespace log4cpp;
+using namespace xmlsignature;
using namespace xmltooling;
+using namespace log4cpp;
using namespace std;
-namespace {
+#define REGISTER_ELEMENT(namespaceURI,cname) \
+ q=QName(namespaceURI,cname::LOCAL_NAME); \
+ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \
+ Validator::registerValidator(q,new cname##SchemaValidator())
+
+#define REGISTER_TYPE(namespaceURI,cname) \
+ q=QName(namespaceURI,cname::TYPE_NAME); \
+ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \
+ Validator::registerValidator(q,new cname##SchemaValidator())
+
+
+DECL_EXCEPTION_FACTORY(XMLParserException,xmltooling);
+DECL_EXCEPTION_FACTORY(XMLObjectException,xmltooling);
+DECL_EXCEPTION_FACTORY(MarshallingException,xmltooling);
+DECL_EXCEPTION_FACTORY(UnmarshallingException,xmltooling);
+DECL_EXCEPTION_FACTORY(UnknownElementException,xmltooling);
+DECL_EXCEPTION_FACTORY(UnknownAttributeException,xmltooling);
+DECL_EXCEPTION_FACTORY(ValidationException,xmltooling);
+DECL_EXCEPTION_FACTORY(SignatureException,xmlsignature);
+
+namespace xmltooling {
XMLToolingInternalConfig g_config;
}
// default registrations
XMLObjectBuilder::registerDefaultBuilder(new UnknownElementBuilder());
- Marshaller::registerDefaultMarshaller(new UnknownElementMarshaller());
- Unmarshaller::registerDefaultUnmarshaller(new UnknownElementUnmarshaller());
+
+ QName q;
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,KeyInfo);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,KeyName);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,KeyValue);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,MgmtData);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,DSAKeyValue);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,RSAKeyValue);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,Exponent);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,Modulus);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,P);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,Q);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,G);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,Y);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,J);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,Seed);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,PgenCounter);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,XPath);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,Transform);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,Transforms);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,RetrievalMethod);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,X509IssuerSerial);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,X509IssuerName);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,X509SerialNumber);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,X509SKI);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,X509SubjectName);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,X509Certificate);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,X509CRL);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,X509Data);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,SPKISexp);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,SPKIData);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,PGPKeyID);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,PGPKeyPacket);
+ REGISTER_ELEMENT(XMLConstants::XMLSIG_NS,PGPData);
+ REGISTER_TYPE(XMLConstants::XMLSIG_NS,KeyInfo);
+ REGISTER_TYPE(XMLConstants::XMLSIG_NS,KeyValue);
+ REGISTER_TYPE(XMLConstants::XMLSIG_NS,DSAKeyValue);
+ REGISTER_TYPE(XMLConstants::XMLSIG_NS,RSAKeyValue);
+ REGISTER_TYPE(XMLConstants::XMLSIG_NS,Transform);
+ REGISTER_TYPE(XMLConstants::XMLSIG_NS,Transforms);
+ REGISTER_TYPE(XMLConstants::XMLSIG_NS,RetrievalMethod);
+ REGISTER_TYPE(XMLConstants::XMLSIG_NS,X509IssuerSerial);
+ REGISTER_TYPE(XMLConstants::XMLSIG_NS,X509Data);
+ REGISTER_TYPE(XMLConstants::XMLSIG_NS,SPKIData);
+ REGISTER_TYPE(XMLConstants::XMLSIG_NS,PGPData);
+
#ifndef XMLTOOLING_NO_XMLSEC
- QName dsig(XMLConstants::XMLSIG_NS,Signature::LOCAL_NAME);
- XMLObjectBuilder::registerBuilder(dsig,new XMLSecSignatureBuilder());
- Marshaller::registerMarshaller(dsig,new XMLSecSignatureMarshaller());
- Unmarshaller::registerUnmarshaller(dsig,new XMLSecSignatureUnmarshaller());
+ XMLObjectBuilder::registerBuilder(QName(XMLConstants::XMLSIG_NS,Signature::LOCAL_NAME),new SignatureBuilder());
#endif
+
+ REGISTER_EXCEPTION_FACTORY(XMLParserException,xmltooling);
+ REGISTER_EXCEPTION_FACTORY(XMLObjectException,xmltooling);
+ REGISTER_EXCEPTION_FACTORY(MarshallingException,xmltooling);
+ REGISTER_EXCEPTION_FACTORY(UnmarshallingException,xmltooling);
+ REGISTER_EXCEPTION_FACTORY(UnknownElementException,xmltooling);
+ REGISTER_EXCEPTION_FACTORY(UnknownAttributeException,xmltooling);
+ REGISTER_EXCEPTION_FACTORY(ValidationException,xmltooling);
+ REGISTER_EXCEPTION_FACTORY(SignatureException,xmlsignature);
}
catch (const xercesc::XMLException&) {
log.fatal("caught exception while initializing Xerces");
void XMLToolingInternalConfig::term()
{
XMLObjectBuilder::destroyBuilders();
- Marshaller::destroyMarshallers();
- Unmarshaller::destroyUnmarshallers();
+ Validator::destroyValidators();
+ XMLToolingException::deregisterFactories();
for (vector<void*>::reverse_iterator i=m_libhandles.rbegin(); i!=m_libhandles.rend(); i++) {
#if defined(WIN32)