141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project// This file is part of TagSoup and is Copyright 2002-2008 by John Cowan.
241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project//
341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project// TagSoup is licensed under the Apache License,
441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project// Version 2.0.  You may obtain a copy of this license at
541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project// http://www.apache.org/licenses/LICENSE-2.0 .  You may also have
641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project// additional legal rights not granted by this license.
741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project//
841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project// TagSoup is distributed in the hope that it will be useful, but
941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project// unless required by applicable law or agreed to in writing, TagSoup
1041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
1141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project// OF ANY KIND, either express or implied; not even the implied warranty
1241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
1441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Projectpackage org.ccil.cowan.tagsoup.jaxp;
1541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
1641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Projectimport java.io.IOException;
1741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Projectimport javax.xml.parsers.*;
1841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
1941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Projectimport org.xml.sax.*;
2041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
2141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project/**
2241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project * This is a simpler adapter class that allows using SAX1 interface on top
2341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project * of basic SAX2 implementation, such as TagSoup.
2441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project *
2541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project * @author Tatu Saloranta (cowtowncoder@yahoo.com)
2641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project * @deprecated
2741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project */
2841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Projectpublic class SAX1ParserAdapter
2941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    implements org.xml.sax.Parser
3041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project{
3141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    final XMLReader xmlReader;
3241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
3341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    public SAX1ParserAdapter(XMLReader xr)
3441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    {
3541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        xmlReader = xr;
3641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    }
3741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
3841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    // Sax1 API impl
3941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
4041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    public void parse(InputSource source)
4141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        throws SAXException
4241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    {
4341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        try {
4441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            xmlReader.parse(source);
4541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        } catch (IOException ioe) {
4641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            throw new SAXException(ioe);
4741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
4841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    }
4941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
5041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    public void parse(String systemId)
5141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        throws SAXException
5241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    {
5341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        try {
5441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            xmlReader.parse(systemId);
5541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        } catch (IOException ioe) {
5641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            throw new SAXException(ioe);
5741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
5841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    }
5941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
6041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    /**
6141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project     * @deprecated
6241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project     */
6341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    public void setDocumentHandler(DocumentHandler h)
6441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    {
6541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        xmlReader.setContentHandler(new DocHandlerWrapper(h));
6641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    }
6741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
6841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    public void setDTDHandler(DTDHandler h)
6941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    {
7041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        xmlReader.setDTDHandler(h);
7141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    }
7241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
7341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    public void setEntityResolver(EntityResolver r)
7441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    {
7541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        xmlReader.setEntityResolver(r);
7641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    }
7741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
7841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    public void setErrorHandler(ErrorHandler h)
7941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    {
8041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        xmlReader.setErrorHandler(h);
8141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    }
8241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
8341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    public void setLocale(java.util.Locale locale)
8441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        throws SAXException
8541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    {
8641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        /* I have no idea what this is supposed to do... so let's
8741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project         * throw an exception
8841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project         */
8941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        throw new SAXNotSupportedException("TagSoup does not implement setLocale() method");
9041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    }
9141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
9241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    // Helper classes:
9341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
9441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    /**
9541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project     * We need another helper class to deal with differences between
9641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project     * Sax2 handler (content handler), and Sax1 handler (document handler)
9741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project     * @deprecated
9841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project     */
9941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    final static class DocHandlerWrapper
10041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        implements ContentHandler
10141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    {
10241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        final DocumentHandler docHandler;
10341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
10441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        final AttributesWrapper mAttrWrapper = new AttributesWrapper();
10541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
10641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        /**
10741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project         * @deprecated
10841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project         */
10941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        DocHandlerWrapper(DocumentHandler h)
11041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
11141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            docHandler = h;
11241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
11341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
11441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public void characters(char[] ch, int start, int length)
11541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            throws SAXException
11641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
11741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            docHandler.characters(ch, start, length);
11841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
11941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
12041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public void endDocument()
12141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            throws SAXException
12241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
12341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            docHandler.endDocument();
12441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
12541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
12641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public void endElement(String uri, String localName, String qName)
12741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            throws SAXException
12841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
12941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            if (qName == null) {
13041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project                qName = localName;
13141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            }
13241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            docHandler.endElement(qName);
13341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
13441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
13541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public void endPrefixMapping(String prefix)
13641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
13741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            // no equivalent in SAX1, ignore
13841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
13941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
14041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public void ignorableWhitespace(char[] ch, int start, int length)
14141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            throws SAXException
14241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
14341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            docHandler.ignorableWhitespace(ch, start, length);
14441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
14541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
14641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public void processingInstruction(String target, String data)
14741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            throws SAXException
14841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
14941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            docHandler.processingInstruction(target, data);
15041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
15141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
15241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public void setDocumentLocator(Locator locator)
15341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
15441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            docHandler.setDocumentLocator(locator);
15541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
15641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
15741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public void skippedEntity(String name)
15841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
15941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            // no equivalent in SAX1, ignore
16041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
16141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
16241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public void startDocument()
16341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            throws SAXException
16441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
16541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            docHandler.startDocument();
16641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
16741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
16841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public void startElement(String uri, String localName, String qName,
16941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project                                 Attributes attrs)
17041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            throws SAXException
17141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
17241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            if (qName == null) {
17341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project                qName = localName;
17441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            }
17541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            // Also, need to wrap Attributes to look like AttributeLost
17641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            mAttrWrapper.setAttributes(attrs);
17741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            docHandler.startElement(qName, mAttrWrapper);
17841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
17941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
18041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public void startPrefixMapping(String prefix, String uri)
18141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
18241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            // no equivalent in SAX1, ignore
18341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
18441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    }
18541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
18641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    /**
18741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project     * And one more helper to deal with attribute access differences
18841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project     * @deprecated
18941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project     */
19041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    final static class AttributesWrapper
19141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        implements AttributeList
19241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    {
19341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        Attributes attrs;
19441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
19541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public AttributesWrapper() { }
19641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
19741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public void setAttributes(Attributes a) {
19841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            attrs = a;
19941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
20041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
20141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public int getLength()
20241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
20341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            return attrs.getLength();
20441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
20541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
20641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public String getName(int i)
20741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
20841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            String n = attrs.getQName(i);
20941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            return (n == null) ? attrs.getLocalName(i) : n;
21041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
21141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
21241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public String getType(int i)
21341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
21441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            return attrs.getType(i);
21541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
21641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
21741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public String getType(String name)
21841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
21941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            return attrs.getType(name);
22041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
22141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
22241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public String getValue(int i)
22341cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
22441cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            return attrs.getValue(i);
22541cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
22641cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project
22741cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        public String getValue(String name)
22841cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        {
22941cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project            return attrs.getValue(name);
23041cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project        }
23141cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project    }
23241cdf40d933f4029c37cf844f8cf3314114e4e0aThe Android Open Source Project}
233