diff --git a/src/xercesc/util/DOMInputSourceWrapper.cpp b/src/xercesc/util/DOMInputSourceWrapper.cpp new file mode 100644 index 0000000000000000000000000000000000000000..71c3c9ce2b72eb090d5cd1492e2c4747d88c28d0 --- /dev/null +++ b/src/xercesc/util/DOMInputSourceWrapper.cpp @@ -0,0 +1,150 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 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/>. + */ + +/* + * $Log$ + * Revision 1.1 2002/05/29 21:53:14 knoaman + * Initial revision. + * + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include <xercesc/util/DOMInputSourceWrapper.hpp> +#include <xercesc/dom/DOMInputSource.hpp> +#include <xercesc/util/NullPointerException.hpp> + + +// --------------------------------------------------------------------------- +// DOMInputSourceWrapper: Constructor and Destructor +// --------------------------------------------------------------------------- +DOMInputSourceWrapper::DOMInputSourceWrapper(DOMInputSource* const inputSource) : + fAdoptInputSource(true) + , fInputSource(inputSource) +{ + if (!inputSource) + ThrowXML(NullPointerException, XMLExcepts::CPtr_PointerIsZero); +} + +DOMInputSourceWrapper::~DOMInputSourceWrapper() +{ + if (fAdoptInputSource) + delete fInputSource; +} + + +// --------------------------------------------------------------------------- +// DOMInputSourceWrapper: Getter methods +// --------------------------------------------------------------------------- +const bool DOMInputSourceWrapper::getIssueFatalErrorIfNotFound() const +{ + return fInputSource->getIssueFatalErrorIfNotFound(); +} + +const XMLCh* DOMInputSourceWrapper::getEncoding() const +{ + return fInputSource->getEncoding(); +} + +const XMLCh* DOMInputSourceWrapper::getSystemId() const +{ + return fInputSource->getSystemId(); +} + +const XMLCh* DOMInputSourceWrapper::getPublicId() const +{ + return fInputSource->getPublicId(); +} + + +// --------------------------------------------------------------------------- +// DOMInputSourceWrapper: Setter methods +// --------------------------------------------------------------------------- +void DOMInputSourceWrapper::setIssueFatalErrorIfNotFound(const bool flag) +{ + fInputSource->setIssueFatalErrorIfNotFound(flag); +} + + +void DOMInputSourceWrapper::setEncoding(const XMLCh* const encodingStr) +{ + fInputSource->setEncoding(encodingStr); +} + + +void DOMInputSourceWrapper::setPublicId(const XMLCh* const publicId) +{ + fInputSource->setPublicId(publicId); +} + + +void DOMInputSourceWrapper::setSystemId(const XMLCh* const systemId) +{ + fInputSource->setSystemId(systemId); +} + + +// --------------------------------------------------------------------------- +// DOMInputSourceWrapper: Stream methods +// --------------------------------------------------------------------------- +BinInputStream* DOMInputSourceWrapper::makeStream() const +{ + return fInputSource->makeStream(); +} + + diff --git a/src/xercesc/util/DOMInputSourceWrapper.hpp b/src/xercesc/util/DOMInputSourceWrapper.hpp new file mode 100644 index 0000000000000000000000000000000000000000..e186877a403209fa6055796f34578a2616dc91f4 --- /dev/null +++ b/src/xercesc/util/DOMInputSourceWrapper.hpp @@ -0,0 +1,255 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 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/>. + */ + +/* + * $Log$ + * Revision 1.1 2002/05/29 21:53:14 knoaman + * Initial revision. + * + */ + + +#ifndef DOMINPUTSOURCEWRAPPER_HPP +#define DOMINPUTSOURCEWRAPPER_HPP + +#include <xercesc/sax/InputSource.hpp> + +class DOMInputSource; + + +/** + * Wrap an DOMInputSource object. + */ +class XMLUTIL_EXPORT DOMInputSourceWrapper: public InputSource +{ +public: + /** @name Constructors and Destructor */ + //@{ + + /** + * Constructor + */ + DOMInputSourceWrapper(DOMInputSource* const inputSource); + + /** + * Destructor + * + */ + virtual ~DOMInputSourceWrapper(); + //@} + + + // ----------------------------------------------------------------------- + /** @name Virtual input source interface */ + //@{ + /** + * Makes the byte stream for this input source. + * + * <p>The derived class must create and return a binary input stream of an + * appropriate type for its kind of data source. The returned stream must + * be dynamically allocated and becomes the parser's property. + * </p> + * + * @see BinInputStream + */ + BinInputStream* makeStream() const; + + //@} + + // ----------------------------------------------------------------------- + /** @name Getter methods */ + //@{ + /** + * An input source can be set to force the parser to assume a particular + * encoding for the data that input source reprsents, via the setEncoding() + * method. This method returns name of the encoding that is to be forced. + * If the encoding has never been forced, it returns a null pointer. + * + * @return The forced encoding, or null if none was supplied. + * @see #setEncoding + */ + const XMLCh* getEncoding() const; + + + /** + * Get the public identifier for this input source. + * + * @return The public identifier, or null if none was supplied. + * @see #setPublicId + */ + const XMLCh* getPublicId() const; + + + /** + * Get the system identifier for this input source. + * + * <p>If the system ID is a URL, it will be fully resolved.</p> + * + * @return The system identifier. + * @see #setSystemId + */ + const XMLCh* getSystemId() const; + + /** + * Get the flag that indicates if the parser should issue fatal error if this input source + * is not found. + * + * @return True if the parser should issue fatal error if this input source is not found. + * False if the parser issue warning message instead. + * @see #setIssueFatalErrorIfNotFound + */ + const bool getIssueFatalErrorIfNotFound() const; + + //@} + + + // ----------------------------------------------------------------------- + /** @name Setter methods */ + //@{ + + /** + * Set the encoding which will be required for use with the XML text read + * via a stream opened by this input source. + * + * <p>This is usually not set, allowing the encoding to be sensed in the + * usual XML way. However, in some cases, the encoding in the file is known + * to be incorrect because of intermediate transcoding, for instance + * encapsulation within a MIME document. + * + * @param encodingStr The name of the encoding to force. + */ + void setEncoding(const XMLCh* const encodingStr); + + + /** + * Set the public identifier for this input source. + * + * <p>The public identifier is always optional: if the application writer + * includes one, it will be provided as part of the location information.</p> + * + * @param publicId The public identifier as a string. + * @see Locator#getPublicId + * @see SAXParseException#getPublicId + * @see #getPublicId + */ + void setPublicId(const XMLCh* const publicId); + + /** + * Set the system identifier for this input source. + * + * <p>Set the system identifier for this input source. + * + * </p>The system id is always required. The public id may be used to map + * to another system id, but the system id must always be present as a fall + * back. + * + * <p>If the system ID is a URL, it must be fully resolved.</p> + * + * @param systemId The system identifier as a string. + * @see #getSystemId + * @see Locator#getSystemId + * @see SAXParseException#getSystemId + */ + void setSystemId(const XMLCh* const systemId); + + /** + * Indicates if the parser should issue fatal error if this input source + * is not found. If set to false, the parser issue warning message instead. + * + * @param flag True if the parser should issue fatal error if this input source is not found. + * If set to false, the parser issue warning message instead. (Default: true) + * + * @see #getIssueFatalErrorIfNotFound + */ + void setIssueFatalErrorIfNotFound(const bool flag); + + /** + * Indicates if the parser should own the input source. + * If set to true, the parser will delete the input source. + * + * @param flag if the parser should delete the input source or not. + * (Default: true) + * + */ + void setAdoptInputSource(const bool flag); + + //@} + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMInputSourceWrapper(const DOMInputSourceWrapper&); + void operator=(const DOMInputSourceWrapper&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fAdoptInputSource; + DOMInputSource* fInputSource; +}; + + +// --------------------------------------------------------------------------- +// DOMInputSourceWrapper: Setter methods +// --------------------------------------------------------------------------- +inline void DOMInputSourceWrapper::setAdoptInputSource(const bool flag) +{ + fAdoptInputSource = flag; +} + +#endif