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