diff --git a/tests/XSerializerTest/XSerializerHandlers.cpp b/tests/XSerializerTest/XSerializerHandlers.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cc76f3f5ac0e2246458c1197c6807adc1d7da4a9 --- /dev/null +++ b/tests/XSerializerTest/XSerializerHandlers.cpp @@ -0,0 +1,157 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Xerces" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache\@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation, and was + * originally based on software copyright (c) 1999, International + * Business Machines, Inc., http://www.ibm.com . For more information + * on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +/* + * $Id$ + * $Log$ + * Revision 1.1 2003/12/16 16:57:58 peiyongz + * XSerializerHanders + * + * + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include "XSerializerTest.hpp" + +#include <xercesc/sax2/Attributes.hpp> +#include <xercesc/sax/SAXParseException.hpp> +#include <xercesc/sax/SAXException.hpp> + +// --------------------------------------------------------------------------- +// XSerializerHandlers: Constructors and Destructor +// --------------------------------------------------------------------------- +XSerializerHandlers::XSerializerHandlers() : + + fElementCount(0) + , fAttrCount(0) + , fCharacterCount(0) + , fSpaceCount(0) + , fSawErrors(false) +{ +} + +XSerializerHandlers::~XSerializerHandlers() +{ +} + +// --------------------------------------------------------------------------- +// XSerializerHandlers: Implementation of the SAX DocumentHandler interface +// --------------------------------------------------------------------------- +void XSerializerHandlers::startElement(const XMLCh* const uri + , const XMLCh* const localname + , const XMLCh* const qname + , const Attributes& attrs) +{ + fElementCount++; + fAttrCount += attrs.getLength(); +} + +void XSerializerHandlers::characters( const XMLCh* const chars + , const unsigned int length) +{ + fCharacterCount += length; +} + +void XSerializerHandlers::ignorableWhitespace( const XMLCh* const chars + , const unsigned int length) +{ + fSpaceCount += length; +} + +void XSerializerHandlers::resetDocument() +{ + fAttrCount = 0; + fCharacterCount = 0; + fElementCount = 0; + fSpaceCount = 0; +} + + +// --------------------------------------------------------------------------- +// XSerializerHandlers: Overrides of the SAX ErrorHandler interface +// --------------------------------------------------------------------------- +void XSerializerHandlers::error(const SAXParseException& e) +{ + fSawErrors = true; + XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId()) + << ", line " << e.getLineNumber() + << ", char " << e.getColumnNumber() + << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; +} + +void XSerializerHandlers::fatalError(const SAXParseException& e) +{ + fSawErrors = true; + XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId()) + << ", line " << e.getLineNumber() + << ", char " << e.getColumnNumber() + << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; +} + +void XSerializerHandlers::warning(const SAXParseException& e) +{ + XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId()) + << ", line " << e.getLineNumber() + << ", char " << e.getColumnNumber() + << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; +} + +void XSerializerHandlers::resetErrors() +{ + fSawErrors = false; +} diff --git a/tests/XSerializerTest/XSerializerHandlers.hpp b/tests/XSerializerTest/XSerializerHandlers.hpp new file mode 100644 index 0000000000000000000000000000000000000000..565e65fc194280129e6a524e051cd611406c001c --- /dev/null +++ b/tests/XSerializerTest/XSerializerHandlers.hpp @@ -0,0 +1,156 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Xerces" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache\@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation, and was + * originally based on software copyright (c) 1999, International + * Business Machines, Inc., http://www.ibm.com . For more information + * on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +/* + * $Id$ + * $Log$ + * Revision 1.1 2003/12/16 16:57:58 peiyongz + * XSerializerHanders + * + * + */ + +#if !defined(XSERIALIZER_HANDLER_HPP) +#define XSERIALIZER_HANDLER_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include <xercesc/sax2/Attributes.hpp> +#include <xercesc/sax2/DefaultHandler.hpp> + +XERCES_CPP_NAMESPACE_USE + +class XSerializerHandlers : public DefaultHandler +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XSerializerHandlers(); + ~XSerializerHandlers(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + unsigned int getElementCount() const + { + return fElementCount; + } + + unsigned int getAttrCount() const + { + return fAttrCount; + } + + unsigned int getCharacterCount() const + { + return fCharacterCount; + } + + bool getSawErrors() const + { + return fSawErrors; + } + + unsigned int getSpaceCount() const + { + return fSpaceCount; + } + + + // ----------------------------------------------------------------------- + // Handlers for the SAX ContentHandler interface + // ----------------------------------------------------------------------- + void startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs); + void characters(const XMLCh* const chars, const unsigned int length); + void ignorableWhitespace(const XMLCh* const chars, const unsigned int length); + void resetDocument(); + + + // ----------------------------------------------------------------------- + // Handlers for the SAX ErrorHandler interface + // ----------------------------------------------------------------------- + void warning(const SAXParseException& exception); + void error(const SAXParseException& exception); + void fatalError(const SAXParseException& exception); + void resetErrors(); + + +private: + // ----------------------------------------------------------------------- + // Private data members + // + // fAttrCount + // fCharacterCount + // fElementCount + // fSpaceCount + // These are just counters that are run upwards based on the input + // from the document handlers. + // + // fSawErrors + // This is set by the error handlers, and is queryable later to + // see if any errors occured. + // ----------------------------------------------------------------------- + unsigned int fAttrCount; + unsigned int fCharacterCount; + unsigned int fElementCount; + unsigned int fSpaceCount; + bool fSawErrors; +}; + +#endif