1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// SAX input source.
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// http://www.saxproject.org
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// No warranty; no copyright -- use this as you will.
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// $Id: InputSource.java,v 1.9 2002/01/30 21:13:45 dbrownell Exp $
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.xml.sax;
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.InputStream;
97365de1056414750d0a7d1fdd26025fd247f0d04Jesse Wilsonimport java.io.Reader;
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A single input source for an XML entity.
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <blockquote>
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <em>This module, both source code and documentation, is in the
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * for further information.
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </blockquote>
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>This class allows a SAX application to encapsulate information
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * about an input source in a single object, which may include
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a public identifier, a system identifier, a byte stream (possibly
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * with a specified encoding), and/or a character stream.</p>
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>There are two places that the application can deliver an
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * input source to the parser: as the argument to the Parser.parse
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method, or as the return value of the EntityResolver.resolveEntity
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method.</p>
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>The SAX parser will use the InputSource object to determine how
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to read XML input.  If there is a character stream available, the
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * parser will read that stream directly, disregarding any text
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * encoding declaration found in that stream.
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * If there is no character stream, but there is
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a byte stream, the parser will use that byte stream, using the
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * encoding specified in the InputSource or else (if no encoding is
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specified) autodetecting the character encoding using an algorithm
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * such as the one in the XML specification.  If neither a character
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * stream nor a
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * byte stream is available, the parser will attempt to open a URI
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * connection to the resource identified by the system
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * identifier.</p>
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>An InputSource object belongs to the application: the SAX parser
46f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * shall never modify it in any way (it may modify a copy if
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * necessary).  However, standard processing of both byte and
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * character streams is to close them on as part of end-of-parse cleanup,
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * so applications should not attempt to re-use such streams after they
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * have been handed to a parser.  </p>
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @since SAX 1.0
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @author David Megginson
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @version 2.0.1 (sax2r2)
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see org.xml.sax.XMLReader#parse(org.xml.sax.InputSource)
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see org.xml.sax.EntityResolver#resolveEntity
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see java.io.InputStream
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see java.io.Reader
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class InputSource {
61f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Zero-argument default constructor.
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setPublicId
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setSystemId
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setByteStream
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setCharacterStream
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setEncoding
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public InputSource ()
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
74f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
75f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Create a new input source with a system identifier.
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
79f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * <p>Applications may use setPublicId to include a
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * public identifier as well, or setEncoding to specify
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * the character encoding, if known.</p>
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>If the system identifier is a URL, it must be fully
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * resolved (it may not be a relative URL).</p>
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param systemId The system identifier (URI).
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setPublicId
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setSystemId
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setByteStream
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setEncoding
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setCharacterStream
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public InputSource (String systemId)
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    setSystemId(systemId);
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
97f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
98f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Create a new input source with a byte stream.
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
102f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * <p>Application writers should use setSystemId() to provide a base
103f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * for resolving relative URIs, may use setPublicId to include a
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * public identifier, and may use setEncoding to specify the object's
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * character encoding.</p>
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param byteStream The raw byte stream containing the document.
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setPublicId
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setSystemId
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setEncoding
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setByteStream
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setCharacterStream
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public InputSource (InputStream byteStream)
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    setByteStream(byteStream);
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
118f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
119f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Create a new input source with a character stream.
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
123f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * <p>Application writers should use setSystemId() to provide a base
124f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * for resolving relative URIs, and may use setPublicId to include a
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * public identifier.</p>
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>The character stream shall not include a byte order mark.</p>
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param characterStream The raw character stream containing the document.
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setPublicId
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setSystemId
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setByteStream
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setCharacterStream
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public InputSource (Reader characterStream)
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    setCharacterStream(characterStream);
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
139f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
140f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Set the public identifier for this input source.
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>The public identifier is always optional: if the application
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * writer includes one, it will be provided as part of the
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * location information.</p>
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param publicId The public identifier as a string.
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getPublicId
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see org.xml.sax.Locator#getPublicId
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see org.xml.sax.SAXParseException#getPublicId
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setPublicId (String publicId)
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    this.publicId = publicId;
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
157f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
158f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Get the public identifier for this input source.
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return The public identifier, or null if none was supplied.
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setPublicId
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String getPublicId ()
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return publicId;
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
169f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
170f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Set the system identifier for this input source.
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>The system identifier is optional if there is a byte stream
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * or a character stream, but it is still useful to provide one,
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * since the application can use it to resolve relative URIs
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * and can include it in error messages and warnings (the parser
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * will attempt to open a connection to the URI only if
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * there is no byte stream or character stream specified).</p>
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>If the application knows the character encoding of the
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * object pointed to by the system identifier, it can register
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * the encoding using the setEncoding method.</p>
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>If the system identifier is a URL, it must be fully
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * resolved (it may not be a relative URL).</p>
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param systemId The system identifier as a string.
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setEncoding
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getSystemId
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see org.xml.sax.Locator#getSystemId
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see org.xml.sax.SAXParseException#getSystemId
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setSystemId (String systemId)
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    this.systemId = systemId;
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
198f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
199f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Get the system identifier for this input source.
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>The getEncoding method will return the character encoding
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * of the object pointed to, or null if unknown.</p>
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>If the system ID is a URL, it will be fully resolved.</p>
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return The system identifier, or null if none was supplied.
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setSystemId
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getEncoding
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String getSystemId ()
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return systemId;
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
216f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
217f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Set the byte stream for this input source.
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>The SAX parser will ignore this if there is also a character
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * stream specified, but it will use a byte stream in preference
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * to opening a URI connection itself.</p>
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>If the application knows the character encoding of the
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * byte stream, it should set it with the setEncoding method.</p>
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param byteStream A byte stream containing an XML document or
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        other entity.
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setEncoding
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getByteStream
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getEncoding
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see java.io.InputStream
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setByteStream (InputStream byteStream)
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    this.byteStream = byteStream;
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
239f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
240f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Get the byte stream for this input source.
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>The getEncoding method will return the character
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * encoding for this byte stream, or null if unknown.</p>
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return The byte stream, or null if none was supplied.
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getEncoding
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setByteStream
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public InputStream getByteStream ()
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return byteStream;
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
255f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
256f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
257f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes    /**
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Set the character encoding, if known.
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>The encoding must be a string acceptable for an
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * XML encoding declaration (see section 4.3.3 of the XML 1.0
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * recommendation).</p>
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>This method has no effect when the application provides a
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * character stream.</p>
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param encoding A string describing the character encoding.
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setSystemId
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setByteStream
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getEncoding
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setEncoding (String encoding)
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    this.encoding = encoding;
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
276f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
277f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Get the character encoding for a byte stream or URI.
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * This value will be ignored when the application provides a
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * character stream.
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return The encoding, or null if none was supplied.
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setByteStream
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getSystemId
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getByteStream
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String getEncoding ()
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return encoding;
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
292f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
293f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Set the character stream for this input source.
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>If there is a character stream specified, the SAX parser
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * will ignore any byte stream and will not attempt to open
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * a URI connection to the system identifier.</p>
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param characterStream The character stream containing the
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        XML document or other entity.
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getCharacterStream
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see java.io.Reader
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setCharacterStream (Reader characterStream)
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    this.characterStream = characterStream;
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
310f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
311f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Get the character stream for this input source.
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return The character stream, or null if none was supplied.
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setCharacterStream
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Reader getCharacterStream ()
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return characterStream;
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
322f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
323f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ////////////////////////////////////////////////////////////////////
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // Internal state.
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ////////////////////////////////////////////////////////////////////
328f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private String publicId;
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private String systemId;
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private InputStream byteStream;
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private String encoding;
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private Reader characterStream;
334f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// end of InputSource.java
338