001: /*
002: * The Apache Software License, Version 1.1
003: *
004: *
005: * Copyright (c) 2000-2002 The Apache Software Foundation. All rights
006: * reserved.
007: *
008: * Redistribution and use in source and binary forms, with or without
009: * modification, are permitted provided that the following conditions
010: * are met:
011: *
012: * 1. Redistributions of source code must retain the above copyright
013: * notice, this list of conditions and the following disclaimer.
014: *
015: * 2. Redistributions in binary form must reproduce the above copyright
016: * notice, this list of conditions and the following disclaimer in
017: * the documentation and/or other materials provided with the
018: * distribution.
019: *
020: * 3. The end-user documentation included with the redistribution,
021: * if any, must include the following acknowledgment:
022: * "This product includes software developed by the
023: * Apache Software Foundation (http://www.apache.org/)."
024: * Alternately, this acknowledgment may appear in the software itself,
025: * if and wherever such third-party acknowledgments normally appear.
026: *
027: * 4. The names "Xerces" and "Apache Software Foundation" must
028: * not be used to endorse or promote products derived from this
029: * software without prior written permission. For written
030: * permission, please contact apache@apache.org.
031: *
032: * 5. Products derived from this software may not be called "Apache",
033: * nor may "Apache" appear in their name, without prior written
034: * permission of the Apache Software Foundation.
035: *
036: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
037: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
038: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
039: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
040: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
041: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
042: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
043: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
044: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
045: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
046: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
047: * SUCH DAMAGE.
048: * ====================================================================
049: *
050: * This software consists of voluntary contributions made by many
051: * individuals on behalf of the Apache Software Foundation and was
052: * originally based on software copyright (c) 1999, International
053: * Business Machines, Inc., http://www.apache.org. For more
054: * information on the Apache Software Foundation, please see
055: * <http://www.apache.org/>.
056: */
057:
058: package com.sun.xml.stream.xerces.xni.parser;
059:
060: import java.io.InputStream;
061: import java.io.Reader;
062:
063: import com.sun.xml.stream.xerces.xni.XMLResourceIdentifier;
064:
065: /**
066: * This class represents an input source for an XML document. The
067: * basic properties of an input source are the following:
068: * <ul>
069: * <li>public identifier</li>
070: * <li>system identifier</li>
071: * <li>byte stream or character stream</li>
072: * <li>
073: * </ul>
074: *
075: * @author Andy Clark, IBM
076: *
077: * @version $Id: XMLInputSource.java,v 1.2 2006/04/01 06:01:43 jeffsuttor Exp $
078: */
079: public class XMLInputSource {
080:
081: //
082: // Data
083: //
084:
085: /** Public identifier. */
086: protected String fPublicId;
087:
088: /** System identifier. */
089: protected String fSystemId;
090:
091: /** Base system identifier. */
092: protected String fBaseSystemId;
093:
094: /** Byte stream. */
095: protected InputStream fByteStream;
096:
097: /** Character stream. */
098: protected Reader fCharStream;
099:
100: /** Encoding. */
101: protected String fEncoding;
102:
103: //
104: // Constructors
105: //
106:
107: /**
108: * Constructs an input source from just the public and system
109: * identifiers, leaving resolution of the entity and opening of
110: * the input stream up to the caller.
111: *
112: * @param publicId The public identifier, if known.
113: * @param systemId The system identifier. This value should
114: * always be set, if possible, and can be
115: * relative or absolute. If the system identifier
116: * is relative, then the base system identifier
117: * should be set.
118: * @param baseSystemId The base system identifier. This value should
119: * always be set to the fully expanded URI of the
120: * base system identifier, if possible.
121: */
122: public XMLInputSource(String publicId, String systemId,
123: String baseSystemId) {
124: fPublicId = publicId;
125: fSystemId = systemId;
126: fBaseSystemId = baseSystemId;
127: } // <init>(String,String,String)
128:
129: /**
130: * Constructs an input source from a XMLResourceIdentifier
131: * object, leaving resolution of the entity and opening of
132: * the input stream up to the caller.
133: *
134: * @param resourceIdentifier the XMLResourceIdentifier containing the information
135: */
136: public XMLInputSource(XMLResourceIdentifier resourceIdentifier) {
137:
138: fPublicId = resourceIdentifier.getPublicId();
139: fSystemId = resourceIdentifier.getLiteralSystemId();
140: fBaseSystemId = resourceIdentifier.getBaseSystemId();
141: } // <init>(XMLResourceIdentifier)
142:
143: /**
144: * Constructs an input source from a byte stream.
145: *
146: * @param publicId The public identifier, if known.
147: * @param systemId The system identifier. This value should
148: * always be set, if possible, and can be
149: * relative or absolute. If the system identifier
150: * is relative, then the base system identifier
151: * should be set.
152: * @param baseSystemId The base system identifier. This value should
153: * always be set to the fully expanded URI of the
154: * base system identifier, if possible.
155: * @param byteStream The byte stream.
156: * @param encoding The encoding of the byte stream, if known.
157: */
158: public XMLInputSource(String publicId, String systemId,
159: String baseSystemId, InputStream byteStream, String encoding) {
160: fPublicId = publicId;
161: fSystemId = systemId;
162: fBaseSystemId = baseSystemId;
163: fByteStream = byteStream;
164: fEncoding = encoding;
165: } // <init>(String,String,String,InputStream,String)
166:
167: /**
168: * Constructs an input source from a character stream.
169: *
170: * @param publicId The public identifier, if known.
171: * @param systemId The system identifier. This value should
172: * always be set, if possible, and can be
173: * relative or absolute. If the system identifier
174: * is relative, then the base system identifier
175: * should be set.
176: * @param baseSystemId The base system identifier. This value should
177: * always be set to the fully expanded URI of the
178: * base system identifier, if possible.
179: * @param charStream The character stream.
180: * @param encoding The original encoding of the byte stream
181: * used by the reader, if known.
182: */
183: public XMLInputSource(String publicId, String systemId,
184: String baseSystemId, Reader charStream, String encoding) {
185: fPublicId = publicId;
186: fSystemId = systemId;
187: fBaseSystemId = baseSystemId;
188: fCharStream = charStream;
189: fEncoding = encoding;
190: } // <init>(String,String,String,Reader,String)
191:
192: //
193: // Public methods
194: //
195:
196: /**
197: * Sets the public identifier.
198: *
199: * @param publicId The new public identifier.
200: */
201: public void setPublicId(String publicId) {
202: fPublicId = publicId;
203: } // setPublicId(String)
204:
205: /** Returns the public identifier. */
206: public String getPublicId() {
207: return fPublicId;
208: } // getPublicId():String
209:
210: /**
211: * Sets the system identifier.
212: *
213: * @param systemId The new system identifier.
214: */
215: public void setSystemId(String systemId) {
216: fSystemId = systemId;
217: } // setSystemId(String)
218:
219: /** Returns the system identifier. */
220: public String getSystemId() {
221: return fSystemId;
222: } // getSystemId():String
223:
224: /**
225: * Sets the base system identifier.
226: *
227: * @param baseSystemId The new base system identifier.
228: */
229: public void setBaseSystemId(String baseSystemId) {
230: fBaseSystemId = baseSystemId;
231: } // setBaseSystemId(String)
232:
233: /** Returns the base system identifier. */
234: public String getBaseSystemId() {
235: return fBaseSystemId;
236: } // getBaseSystemId():String
237:
238: /**
239: * Sets the byte stream. If the byte stream is not already opened
240: * when this object is instantiated, then the code that opens the
241: * stream should also set the byte stream on this object. Also, if
242: * the encoding is auto-detected, then the encoding should also be
243: * set on this object.
244: *
245: * @param byteStream The new byte stream.
246: */
247: public void setByteStream(InputStream byteStream) {
248: fByteStream = byteStream;
249: } // setByteStream(InputSource)
250:
251: /** Returns the byte stream. */
252: public InputStream getByteStream() {
253: return fByteStream;
254: } // getByteStream():InputStream
255:
256: /**
257: * Sets the character stream. If the character stream is not already
258: * opened when this object is instantiated, then the code that opens
259: * the stream should also set the character stream on this object.
260: * Also, the encoding of the byte stream used by the reader should
261: * also be set on this object, if known.
262: *
263: * @param charStream The new character stream.
264: *
265: * @see #setEncoding
266: */
267: public void setCharacterStream(Reader charStream) {
268: fCharStream = charStream;
269: } // setCharacterStream(Reader)
270:
271: /** Returns the character stream. */
272: public Reader getCharacterStream() {
273: return fCharStream;
274: } // getCharacterStream():Reader
275:
276: /**
277: * Sets the encoding of the stream.
278: *
279: * @param encoding The new encoding.
280: */
281: public void setEncoding(String encoding) {
282: fEncoding = encoding;
283: } // setEncoding(String)
284:
285: /** Returns the encoding of the stream, or null if not known. */
286: public String getEncoding() {
287: return fEncoding;
288: } // getEncoding():String
289:
290: } // class XMLInputSource
|