X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2Fvalidation%2FAbstractValidatingXMLObject.cpp;fp=xmltooling%2Fvalidation%2FAbstractValidatingXMLObject.cpp;h=0000000000000000000000000000000000000000;hb=f4ff096a4048e157b8b377ddf253f2e76b7fee53;hp=5e50d3e435a39decb24393f5884fe20d24c9f93c;hpb=13afa0b61ac9a73c68167eb270806212e9bc6580;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/validation/AbstractValidatingXMLObject.cpp b/xmltooling/validation/AbstractValidatingXMLObject.cpp deleted file mode 100644 index 5e50d3e..0000000 --- a/xmltooling/validation/AbstractValidatingXMLObject.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2001-2006 Internet2 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * AbstractValidatingXMLObject.cpp - * - * Extension of AbstractXMLObject that implements a ValidatingXMLObject. - */ - -#include "internal.h" -#include "exceptions.h" -#include "validation/AbstractValidatingXMLObject.h" - -#include -#include - -using namespace xmltooling; -using namespace std; - -AbstractValidatingXMLObject::ValidatorWrapper::~ValidatorWrapper() -{ - for_each(v.begin(),v.end(),cleanup()); -} - -AbstractValidatingXMLObject::AbstractValidatingXMLObject(const AbstractValidatingXMLObject& src) - : AbstractXMLObject(src), m_validators(NULL) -{ - if (src.m_validators) { - m_validators=new ValidatorWrapper(); - xmltooling::clone(src.m_validators->v,m_validators->v); - } -} - -AbstractValidatingXMLObject::~AbstractValidatingXMLObject() -{ - delete m_validators; -} - -void AbstractValidatingXMLObject::registerValidator(Validator* validator) -{ - if (!m_validators) - m_validators=new ValidatorWrapper(); - m_validators->v.push_back(validator); -} - -void AbstractValidatingXMLObject::deregisterValidator(Validator* validator) -{ - if (m_validators) { - for (std::vector::iterator i=m_validators->v.begin(); i!=m_validators->v.end(); i++) { - if ((*i)==validator) { - m_validators->v.erase(i); - return; - } - } - } -} - -void AbstractValidatingXMLObject::deregisterAll() -{ - delete m_validators; - m_validators=NULL; -} - -class _validate : public binary_function { -public: - void operator()(const XMLObject* obj, bool propagate) const { - const ValidatingXMLObject* val = dynamic_cast(obj); - if (val) { - val->validate(propagate); - } - } -}; - -void AbstractValidatingXMLObject::validate(bool validateDescendants) const -{ - if (m_validators) { - for_each( - m_validators->v.begin(),m_validators->v.end(), - bind2nd(mem_fun(&Validator::validate),this) - ); - } - - if (validateDescendants && hasChildren()) { - const list& children=getOrderedChildren(); - for_each(children.begin(),children.end(),bind2nd(_validate(),validateDescendants)); - } -}