From: Scott Cantor Date: Fri, 29 Sep 2006 20:58:52 +0000 (+0000) Subject: Merge schema validators into one suite. X-Git-Tag: 1.0-alpha1~170 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-xmltooling.git;a=commitdiff_plain;h=a514742cd7ede892f18ad7e2deefed1c1712a517 Merge schema validators into one suite. --- diff --git a/xmltooling/XMLToolingConfig.cpp b/xmltooling/XMLToolingConfig.cpp index f8e7f3b..5427e6f 100644 --- a/xmltooling/XMLToolingConfig.cpp +++ b/xmltooling/XMLToolingConfig.cpp @@ -222,9 +222,8 @@ bool XMLToolingInternalConfig::init() void XMLToolingInternalConfig::term() { + SchemaValidators.destroyValidators(); XMLObjectBuilder::destroyBuilders(); - KeyInfoSchemaValidators.destroyValidators(); - EncryptionSchemaValidators.destroyValidators(); XMLToolingException::deregisterFactories(); AttributeExtensibleXMLObject::deregisterIDAttributes(); diff --git a/xmltooling/encryption/Encryption.h b/xmltooling/encryption/Encryption.h index e5eda15..b6d5fc6 100644 --- a/xmltooling/encryption/Encryption.h +++ b/xmltooling/encryption/Encryption.h @@ -149,11 +149,6 @@ namespace xmlencryption { * Registers builders and validators for XML Encryption classes into the runtime. */ void XMLTOOL_API registerEncryptionClasses(); - - /** - * Validator suite for XML Encryption schema validation. - */ - extern XMLTOOL_API xmltooling::ValidatorSuite EncryptionSchemaValidators; }; #endif /* __xmltooling_encryption_h__ */ diff --git a/xmltooling/encryption/impl/EncryptionSchemaValidators.cpp b/xmltooling/encryption/impl/EncryptionSchemaValidators.cpp index 1abf065..0ee9467 100644 --- a/xmltooling/encryption/impl/EncryptionSchemaValidators.cpp +++ b/xmltooling/encryption/impl/EncryptionSchemaValidators.cpp @@ -111,14 +111,12 @@ namespace xmlencryption { #define REGISTER_ELEMENT(namespaceURI,cname) \ q=QName(namespaceURI,cname::LOCAL_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - EncryptionSchemaValidators.registerValidator(q,new cname##SchemaValidator()) + SchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_TYPE(namespaceURI,cname) \ q=QName(namespaceURI,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - EncryptionSchemaValidators.registerValidator(q,new cname##SchemaValidator()) - -ValidatorSuite xmlencryption::EncryptionSchemaValidators("EncryptionSchemaValidators"); + SchemaValidators.registerValidator(q,new cname##SchemaValidator()) void xmlencryption::registerEncryptionClasses() { diff --git a/xmltooling/signature/KeyInfo.h b/xmltooling/signature/KeyInfo.h index e8fc826..e5ffe32 100644 --- a/xmltooling/signature/KeyInfo.h +++ b/xmltooling/signature/KeyInfo.h @@ -194,10 +194,6 @@ namespace xmlsignature { */ void XMLTOOL_API registerKeyInfoClasses(); - /** - * Validator suite for KeyInfo schema validation. - */ - extern XMLTOOL_API xmltooling::ValidatorSuite KeyInfoSchemaValidators; }; #endif /* __xmltooling_keyinfo_h__ */ diff --git a/xmltooling/signature/impl/InlineKeyResolver.cpp b/xmltooling/signature/impl/InlineKeyResolver.cpp index 5e8eff3..a31908e 100644 --- a/xmltooling/signature/impl/InlineKeyResolver.cpp +++ b/xmltooling/signature/impl/InlineKeyResolver.cpp @@ -157,7 +157,7 @@ XSECCryptoKey* InlineKeyResolver::_resolveKey(const KeyInfo* keyInfo) const const vector& keyValues = keyInfo->getKeyValues(); for (vector::const_iterator i=keyValues.begin(); i!=keyValues.end(); ++i) { try { - KeyInfoSchemaValidators.validate(*i); // see if it's a "valid" key + SchemaValidators.validate(*i); // see if it's a "valid" key RSAKeyValue* rsakv = (*i)->getRSAKeyValue(); if (rsakv) { log.debug("resolving ds:RSAKeyValue"); diff --git a/xmltooling/signature/impl/KeyInfoSchemaValidators.cpp b/xmltooling/signature/impl/KeyInfoSchemaValidators.cpp index 44d6635..7a22689 100644 --- a/xmltooling/signature/impl/KeyInfoSchemaValidators.cpp +++ b/xmltooling/signature/impl/KeyInfoSchemaValidators.cpp @@ -124,14 +124,12 @@ namespace xmlsignature { #define REGISTER_ELEMENT(namespaceURI,cname) \ q=QName(namespaceURI,cname::LOCAL_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - KeyInfoSchemaValidators.registerValidator(q,new cname##SchemaValidator()) + SchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_TYPE(namespaceURI,cname) \ q=QName(namespaceURI,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - KeyInfoSchemaValidators.registerValidator(q,new cname##SchemaValidator()) - -ValidatorSuite xmlsignature::KeyInfoSchemaValidators("KeyInfoSchemaValidators"); + SchemaValidators.registerValidator(q,new cname##SchemaValidator()) void xmlsignature::registerKeyInfoClasses() { diff --git a/xmltooling/soap/SOAP.h b/xmltooling/soap/SOAP.h index 8baa83e..1c953b1 100644 --- a/xmltooling/soap/SOAP.h +++ b/xmltooling/soap/SOAP.h @@ -97,11 +97,6 @@ namespace soap11 { * Registers builders and validators for SOAP 1.1 classes into the runtime. */ void XMLTOOL_API registerSOAPClasses(); - - /** - * Validator suite for SOAP 1.1 schema validation. - */ - extern XMLTOOL_API xmltooling::ValidatorSuite SOAPSchemaValidators; }; #endif /* __xmltooling_soap_h__ */ diff --git a/xmltooling/soap/impl/SOAPSchemaValidators.cpp b/xmltooling/soap/impl/SOAPSchemaValidators.cpp index bd4f71e..88bd5ed 100644 --- a/xmltooling/soap/impl/SOAPSchemaValidators.cpp +++ b/xmltooling/soap/impl/SOAPSchemaValidators.cpp @@ -51,12 +51,12 @@ namespace { #define REGISTER_ELEMENT(namespaceURI,cname) \ q=QName(namespaceURI,cname::LOCAL_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - SOAPSchemaValidators.registerValidator(q,new cname##SchemaValidator()) + SchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_TYPE(namespaceURI,cname) \ q=QName(namespaceURI,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - SOAPSchemaValidators.registerValidator(q,new cname##SchemaValidator()) + SchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_ELEMENT_NOVAL(namespaceURI,cname) \ q=QName(namespaceURI,cname::LOCAL_NAME); \ @@ -66,8 +66,6 @@ namespace { q=QName(namespaceURI,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); -ValidatorSuite soap11::SOAPSchemaValidators("SOAPSchemaValidators"); - void soap11::registerSOAPClasses() { QName q; diff --git a/xmltooling/validation/ValidatorSuite.cpp b/xmltooling/validation/ValidatorSuite.cpp index 1ff5a29..447bee0 100644 --- a/xmltooling/validation/ValidatorSuite.cpp +++ b/xmltooling/validation/ValidatorSuite.cpp @@ -27,6 +27,8 @@ using namespace xmltooling; using namespace std; +ValidatorSuite xmltooling::SchemaValidators("SchemaValidators"); + namespace { class XMLTOOL_DLLLOCAL _clearvector { public: diff --git a/xmltooling/validation/ValidatorSuite.h b/xmltooling/validation/ValidatorSuite.h index 6049966..3ded490 100644 --- a/xmltooling/validation/ValidatorSuite.h +++ b/xmltooling/validation/ValidatorSuite.h @@ -106,6 +106,15 @@ namespace xmltooling { std::map< QName, std::vector > m_map; }; + /** + * Validator suite for schema-style structural validation. + * + * This is NOT a comprehensive replacement for real + * schema validation, but it does basic structural checking of overall + * element relationships and some basic attribute presence checking. + */ + extern XMLTOOL_API xmltooling::ValidatorSuite SchemaValidators; + }; #if defined (_MSC_VER) diff --git a/xmltoolingtest/KeyInfoTest.h b/xmltoolingtest/KeyInfoTest.h index 64fb6c7..5086243 100644 --- a/xmltoolingtest/KeyInfoTest.h +++ b/xmltoolingtest/KeyInfoTest.h @@ -54,7 +54,7 @@ public: auto_ptr_XMLCh expected("Public Key for CN=xmldap.org, OU=Domain Control Validated, O=xmldap.org"); TSM_ASSERT("KeyName was not expected value", XMLString::equals(expected.get(), kiObject->getKeyNames().front()->getName())); - KeyInfoSchemaValidators.validate(kiObject.get()); + SchemaValidators.validate(kiObject.get()); } void testKeyInfo2() { @@ -75,7 +75,7 @@ public: TSM_ASSERT_EQUALS("Number of child elements was not expected value", 2, kiObject->getSPKIDatas().front()->getSPKISexps().size()); - KeyInfoSchemaValidators.validate(kiObject.get()); + SchemaValidators.validate(kiObject.get()); } void testKeyInfo3() { @@ -89,6 +89,6 @@ public: auto_ptr kiObject(dynamic_cast(b->buildFromDocument(doc))); TS_ASSERT(kiObject.get()!=NULL); - TS_ASSERT_THROWS(KeyInfoSchemaValidators.validate(kiObject.get()),ValidationException); + TS_ASSERT_THROWS(SchemaValidators.validate(kiObject.get()),ValidationException); } };