1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// DefaultHandler2.java - extended DefaultHandler
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// http://www.saxproject.org
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// Public Domain: no warranty.
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// $Id: DefaultHandler2.java,v 1.3 2002/01/12 19:04:19 dbrownell Exp $
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.xml.sax.ext;
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException;
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.InputSource;
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXException;
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.helpers.DefaultHandler;
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * This class extends the SAX2 base handler class to support the
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * SAX2 {@link LexicalHandler}, {@link DeclHandler}, and
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link EntityResolver2} extensions.  Except for overriding the
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * original SAX1 {@link DefaultHandler#resolveEntity resolveEntity()}
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method the added handler methods just return.  Subclassers may
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * override everything on a method-by-method basis.
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <blockquote>
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <em>This module, both source code and documentation, is in the
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </blockquote>
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> <em>Note:</em> this class might yet learn that the
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <em>ContentHandler.setDocumentLocator()</em> call might be passed a
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link Locator2} object, and that the
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <em>ContentHandler.startElement()</em> call might be passed a
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link Attributes2} object.
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @since SAX 2.0 (extensions 1.1 alpha)
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @author David Brownell
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @version TBS
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class DefaultHandler2 extends DefaultHandler
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    implements LexicalHandler, DeclHandler, EntityResolver2
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project{
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /** Constructs a handler which ignores all parsing events. */
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public DefaultHandler2 () { }
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // SAX2 ext-1.0 LexicalHandler
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void startCDATA ()
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    throws SAXException
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {}
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void endCDATA ()
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    throws SAXException
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {}
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void startDTD (String name, String publicId, String systemId)
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    throws SAXException
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {}
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void endDTD ()
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    throws SAXException
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {}
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void startEntity (String name)
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    throws SAXException
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {}
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void endEntity (String name)
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    throws SAXException
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {}
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void comment (char ch [], int start, int length)
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    throws SAXException
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    { }
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // SAX2 ext-1.0 DeclHandler
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void attributeDecl (String eName, String aName,
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String type, String mode, String value)
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    throws SAXException
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {}
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void elementDecl (String name, String model)
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    throws SAXException
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {}
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void externalEntityDecl (String name,
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String publicId, String systemId)
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    throws SAXException
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {}
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void internalEntityDecl (String name, String value)
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    throws SAXException
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {}
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // SAX2 ext-1.1 EntityResolver2
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Tells the parser that if no external subset has been declared
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * in the document text, none should be used.
100f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param name Identifies the document root element.  This name comes
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    from a DOCTYPE declaration (where available) or from the actual
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    root element. The parameter is ignored.
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param baseURI The document's base URI, serving as an additional
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    hint for selecting the external subset.  This is always an absolute
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    URI, unless it is null because the XMLReader was given an InputSource
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    without one. The parameter is ignored.
108f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return null (always).
110f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @exception SAXException Any SAX exception, possibly wrapping
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    another exception.
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @exception IOException Probably indicating a failure to create
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    a new InputStream or Reader, or an illegal URL.
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public InputSource getExternalSubset (String name, String baseURI)
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    throws SAXException, IOException
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    { return null; }
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Tells the parser to resolve the systemId against the baseURI
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * and read the entity text from that resulting absolute URI.
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Note that because the older
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * {@link DefaultHandler#resolveEntity DefaultHandler.resolveEntity()},
125f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * method is overridden to call this one, this method may sometimes
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * be invoked with null <em>name</em> and <em>baseURI</em>, and
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * with the <em>systemId</em> already absolutized.
128f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param name Identifies the external entity being resolved.
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    Either "[dtd]" for the external subset, or a name starting
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    with "%" to indicate a parameter entity, or else the name of
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    a general entity.  This is never null when invoked by a SAX2
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    parser.
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param publicId The public identifier of the external entity being
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    referenced (normalized as required by the XML specification), or
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    null if none was supplied.
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param baseURI The URI with respect to which relative systemIDs
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    are interpreted.  This is always an absolute URI, unless it is
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    null (likely because the XMLReader was given an InputSource without
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *  one).  This URI is defined by the XML specification to be the one
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    associated with the "&lt;" starting the relevant declaration.
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param systemId The system identifier of the external entity
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    being referenced; either a relative or absolute URI.
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *  This is never null when invoked by a SAX2 parser; only declared
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    entities, and any external subset, are resolved by such parsers.
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return An InputSource object describing the new input source.
148f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @exception SAXException Any SAX exception, possibly wrapping
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    another exception.
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @exception IOException Probably indicating a failure to create
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    a new InputStream or Reader, or an illegal URL.
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public InputSource resolveEntity (String name, String publicId,
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String baseURI, String systemId)
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    throws SAXException, IOException
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    { return null; }
158f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // SAX1 EntityResolver
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Invokes
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * {@link EntityResolver2#resolveEntity EntityResolver2.resolveEntity()}
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * with null entity name and base URI.
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * You only need to override that method to use this class.
166f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param publicId The public identifier of the external entity being
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    referenced (normalized as required by the XML specification), or
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    null if none was supplied.
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param systemId The system identifier of the external entity
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    being referenced; either a relative or absolute URI.
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *  This is never null when invoked by a SAX2 parser; only declared
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    entities, and any external subset, are resolved by such parsers.
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return An InputSource object describing the new input source.
176f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @exception SAXException Any SAX exception, possibly wrapping
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    another exception.
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @exception IOException Probably indicating a failure to create
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *    a new InputStream or Reader, or an illegal URL.
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public InputSource resolveEntity (String publicId, String systemId)
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    throws SAXException, IOException
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    { return resolveEntity (null, publicId, null, systemId); }
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
186