001: /*
002: Copyright (c) 2005, Dennis M. Sosnoski.
003: All rights reserved.
004:
005: Redistribution and use in source and binary forms, with or without modification,
006: are permitted provided that the following conditions are met:
007:
008: * Redistributions of source code must retain the above copyright notice, this
009: list of conditions and the following disclaimer.
010: * Redistributions in binary form must reproduce the above copyright notice,
011: this list of conditions and the following disclaimer in the documentation
012: and/or other materials provided with the distribution.
013: * Neither the name of JiBX nor the names of its contributors may be used
014: to endorse or promote products derived from this software without specific
015: prior written permission.
016:
017: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
018: ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
019: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
020: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
021: ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
022: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
023: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
024: ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
025: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
026: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
027: */
028:
029: package org.jibx.runtime.impl;
030:
031: import java.io.InputStream;
032: import java.io.Reader;
033:
034: import org.jibx.runtime.IXMLReader;
035: import org.jibx.runtime.JiBXException;
036:
037: /**
038: * Interface for factories used to create XML reader instances. Instances of
039: * this interface must be assumed to be single threaded.
040: *
041: * @author Dennis M. Sosnoski
042: * @version 1.0
043: */
044: public interface IXMLReaderFactory {
045: /**
046: * Get new XML reader instance for document from input stream.
047: *
048: * @param is document input stream
049: * @param name document name (<code>null</code> if unknown)
050: * @param enc document character encoding (<code>null</code> if unknown)
051: * @param nsf namespaces enabled flag
052: * @return new reader instance for document
053: * @throws JiBXException on parser configuration error
054: */
055: public IXMLReader createReader(InputStream is, String name,
056: String enc, boolean nsf) throws JiBXException;
057:
058: /**
059: * Get new XML reader instance for document from reader.
060: *
061: * @param rdr document reader
062: * @param name document name (<code>null</code> if unknown)
063: * @param nsf namespaces enabled flag
064: * @return new reader instance for document
065: * @throws JiBXException on parser configuration error
066: */
067: public IXMLReader createReader(Reader rdr, String name, boolean nsf)
068: throws JiBXException;
069:
070: /**
071: * Recycle XML reader instance for new document from input stream. If the
072: * supplied reader can be reused it will be configured for the new document
073: * and returned; otherwise, a new reader will be created for the document.
074: * The namespace enabled state of the returned reader is always the same as
075: * that of the supplied reader.
076: *
077: * @param old reader instance to be recycled
078: * @param is document input stream
079: * @param name document name (<code>null</code> if unknown)
080: * @param enc document character encoding (<code>null</code> if unknown)
081: * @return new reader instance for document
082: * @throws JiBXException on parser configuration error
083: */
084: public IXMLReader recycleReader(IXMLReader old, InputStream is,
085: String name, String enc) throws JiBXException;
086:
087: /**
088: * Recycle XML reader instance for document from reader. If the supplied
089: * reader can be reused it will be configured for the new document and
090: * returned; otherwise, a new reader will be created for the document. The
091: * namespace enabled state of the returned reader is always the same as that
092: * of the supplied reader.
093: *
094: * @param old reader instance to be recycled
095: * @param rdr document reader
096: * @param name document name (<code>null</code> if unknown)
097: * @return new reader instance for document
098: * @throws JiBXException on parser configuration error
099: */
100: public IXMLReader recycleReader(IXMLReader old, Reader rdr,
101: String name) throws JiBXException;
102: }
|