X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-xmltooling.git;a=blobdiff_plain;f=xmltooling%2Fvalidation%2FValidatorSuite.cpp;fp=xmltooling%2Fvalidation%2FValidator.cpp;h=1ff5a29b7bd4975c38707ce3cf129522ca082d72;hp=a39a3322f746efda4f518a79f203430ff431bb85;hb=38003505e53ef5b8c2590af38cfbb0d405ad245f;hpb=833244ddbb8c8150519915d5f67e789dcb588400 diff --git a/xmltooling/validation/Validator.cpp b/xmltooling/validation/ValidatorSuite.cpp similarity index 66% rename from xmltooling/validation/Validator.cpp rename to xmltooling/validation/ValidatorSuite.cpp index a39a332..1ff5a29 100644 --- a/xmltooling/validation/Validator.cpp +++ b/xmltooling/validation/ValidatorSuite.cpp @@ -15,26 +15,49 @@ */ /** - * Validator.cpp + * ValidatorSuite.cpp * - * Rules checking of XMLObjects + * Groups of rule checkers of XMLObjects based on type or element name. */ #include "internal.h" -#include "validation/Validator.h" +#include "validation/ValidatorSuite.h" #include "util/XMLHelper.h" using namespace xmltooling; using namespace std; -map< QName, vector > Validator::m_map; +namespace { + class XMLTOOL_DLLLOCAL _clearvector { + public: + void operator()(const pair< QName, vector >& p) const { + for_each(p.second.begin(),p.second.end(),xmltooling::cleanup()); + } + }; +} + +void ValidatorSuite::deregisterValidators(const QName& key) +{ + map< QName, vector >::iterator i=m_map.find(key); + if (i!=m_map.end()) { + _clearvector f; + f(*i); + m_map.erase(i); + } +} + +void ValidatorSuite::destroyValidators() +{ + for_each(m_map.begin(),m_map.end(),_clearvector()); + m_map.clear(); +} -void Validator::checkValidity(const XMLObject* xmlObject) +void ValidatorSuite::validate(const XMLObject* xmlObject) const { if (!xmlObject) return; - map< QName, vector >::iterator i; + map< QName, vector >::const_iterator i; if (xmlObject->getSchemaType()) { i=m_map.find(*(xmlObject->getSchemaType())); if (i!=m_map.end()) @@ -45,28 +68,6 @@ void Validator::checkValidity(const XMLObject* xmlObject) for_each(i->second.begin(),i->second.end(),bind2nd(mem_fun(&Validator::validate),xmlObject)); const list& kids=xmlObject->getOrderedChildren(); - for_each(kids.begin(),kids.end(),Validator::checkValidity); -} - -class _clearvector { -public: - void operator()(const pair< QName, vector >& p) const { - for_each(p.second.begin(),p.second.end(),xmltooling::cleanup()); - } -}; - -void Validator::deregisterValidators(const QName& key) -{ - map< QName, vector >::iterator i=m_map.find(key); - if (i!=m_map.end()) { - _clearvector f; - f(*i); - m_map.erase(i); - } -} - -void Validator::destroyValidators() -{ - for_each(m_map.begin(),m_map.end(),_clearvector()); - m_map.clear(); + for (list::const_iterator j=kids.begin(); j!=kids.end(); j++) + validate(*j); }