SAXParserFactoryTest.java revision 5ab82b77afbc8af3b91e90ab46b0a7cc0a090f04
1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License.
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.javax.xml.parsers;
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayInputStream;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.InputStream;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashMap;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Properties;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Vector;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.FactoryConfigurationError;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.ParserConfigurationException;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.SAXParser;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.SAXParserFactory;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.Attributes;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXException;
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXNotRecognizedException;
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXNotSupportedException;
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.helpers.DefaultHandler;
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.AndroidOnly;
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.KnownFailure;
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestLevel;
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetClass;
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetNew;
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargets;
44d37c804ccd11e38ee9221194866a152a4de6c8e9Jesse Wilsonimport tests.util.TestEnvironment;
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project@TestTargetClass(SAXParserFactory.class)
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class SAXParserFactoryTest extends TestCase {
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    SAXParserFactory spf;
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    InputStream is1;
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    static HashMap<String, String> ns;
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    static Vector<String> el;
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    static HashMap<String, String> attr;
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setUp() throws Exception {
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        spf = SAXParserFactory.newInstance();
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        is1 = getClass().getResourceAsStream("/simple.xml");
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ns = new HashMap<String, String>();
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        attr = new HashMap<String, String>();
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        el = new Vector<String>();
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void tearDown() throws Exception {
70d37c804ccd11e38ee9221194866a152a4de6c8e9Jesse Wilson        TestEnvironment.reset();
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        is1.close();
72d37c804ccd11e38ee9221194866a152a4de6c8e9Jesse Wilson        super.tearDown();
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "SAXParserFactory",
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {}
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @AndroidOnly("Android SAX implementation is non-validating")
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_Constructor() {
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySAXParserFactory mpf = new MySAXParserFactory();
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(mpf instanceof SAXParserFactory);
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(mpf.isValidating());
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @tests javax.xml.parsers.SAXParserFactory#getSchema().
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * TBD getSchema() IS NOT SUPPORTED
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*   public void test_getSchema() {
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(spf.getSchema());
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SchemaFactory sf =
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Schema schema = sf.newSchema();
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            spf.setSchema(schema);
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(spf.getSchema());
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception " + sax.toString());
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargets({
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.COMPLETE,
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "isNamespaceAware",
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {}
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ),
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.COMPLETE,
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "setNamespaceAware",
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {boolean.class}
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        )
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    })
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_setIsNamespaceAware() {
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        spf.setNamespaceAware(true);
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(spf.isNamespaceAware());
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        spf.setNamespaceAware(false);
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(spf.isNamespaceAware());
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        spf.setNamespaceAware(true);
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(spf.isNamespaceAware());
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargets({
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.COMPLETE,
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "isValidating",
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {}
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ),
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.SUFFICIENT,
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "setValidating",
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {boolean.class}
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        )
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    })
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_setIsValidating() {
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        spf.setValidating(true);
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(spf.isValidating());
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        spf.setValidating(false);
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(spf.isValidating());
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        spf.setValidating(true);
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(spf.isValidating());
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargets({
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.COMPLETE,
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "isXIncludeAware",
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {}
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ),
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.SUFFICIENT,
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "setXIncludeAware",
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {boolean.class}
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        )
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    })
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @KnownFailure("Should handle XIncludeAware flag more gracefully")
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_setIsXIncludeAware() {
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        spf.setXIncludeAware(true);
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(spf.isXIncludeAware());
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        spf.setXIncludeAware(false);
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(spf.isXIncludeAware());
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "newInstance",
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {}
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
1805ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson    @KnownFailure("Dalvik doesn't honor system properties when choosing a SAX implementation")
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_newInstance() {
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SAXParserFactory dtf = SAXParserFactory.newInstance();
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull("New Instance of DatatypeFactory is null", dtf);
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            System.setProperty("javax.xml.parsers.SAXParserFactory",
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            "org.apache.harmony.xml.parsers.SAXParserFactoryImpl");
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SAXParserFactory spf1 = SAXParserFactory.newInstance();
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(spf1 instanceof org.apache.harmony.xml.parsers.SAXParserFactoryImpl);
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String key = "javax.xml.parsers.SAXParserFactory = org.apache.harmony.xml.parsers.SAXParserFactoryImpl";
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ByteArrayInputStream bis = new ByteArrayInputStream(key.getBytes());
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Properties prop = System.getProperties();
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            prop.load(bis);
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SAXParserFactory spf2 = SAXParserFactory.newInstance();
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(spf2 instanceof org.apache.harmony.xml.parsers.SAXParserFactoryImpl);
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            System.setProperty("javax.xml.parsers.SAXParserFactory", "");
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                SAXParserFactory.newInstance();
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("Expected FactoryConfigurationError was not thrown");
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (FactoryConfigurationError e) {
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                // expected
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception " + ioe.toString());
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.SUFFICIENT,
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "SAXException untested; unused on Android",
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "newSAXParser",
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {}
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_newSAXParser() {
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ordinary case
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SAXParser sp = spf.newSAXParser();
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(sp instanceof SAXParser);
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sp.parse(is1, new MyHandler());
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch(Exception e) {
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Exception case
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        spf.setValidating(true);
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SAXParser sp = spf.newSAXParser();
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch(ParserConfigurationException e) {
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected, since Android doesn't have a validating parser.
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargets({
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.SUFFICIENT,
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "setFeature",
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "ParserConfigurationException untested; unused on Android",
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {java.lang.String.class, boolean.class}
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ),
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.SUFFICIENT,
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "getFeature",
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "ParserConfigurationException untested; unused on Android",
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {java.lang.String.class}
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        )
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    })
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_setFeatureLjava_lang_StringZ() {
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // We can't verify ParserConfigurationException and
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // SAXNotSupportedException since these are never
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // thrown by Android.
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] features = {
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "http://xml.org/sax/features/namespaces",
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "http://xml.org/sax/features/validation" };
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < features.length; i++) {
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                spf.setFeature(features[i], true);
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertTrue(spf.getFeature(features[i]));
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                spf.setFeature(features[i], false);
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertFalse(spf.getFeature(features[i]));
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (ParserConfigurationException pce) {
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("ParserConfigurationException is thrown");
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SAXNotRecognizedException snre) {
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("SAXNotRecognizedException is thrown");
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SAXNotSupportedException snse) {
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("SAXNotSupportedException is thrown");
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            spf.setFeature("", true);
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("SAXNotRecognizedException is not thrown");
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ParserConfigurationException pce) {
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ParserConfigurationException is thrown");
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXNotRecognizedException snre) {
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXNotSupportedException snse) {
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("SAXNotSupportedException is thrown");
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException npe) {
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException is thrown");
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            spf.setFeature("http://xml.org/sax/features/unknown-feature", true);
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ParserConfigurationException pce) {
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ParserConfigurationException is thrown");
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXNotRecognizedException snre) {
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("SAXNotRecognizedException is thrown");
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXNotSupportedException snse) {
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Acceptable, although this doesn't happen an Android.
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException npe) {
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException is thrown");
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            spf.setFeature(null, true);
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException is not thrown");
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ParserConfigurationException pce) {
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ParserConfigurationException is thrown");
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXNotRecognizedException snre) {
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("SAXNotRecognizedException is thrown");
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXNotSupportedException snse) {
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("SAXNotSupportedException is thrown");
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException npe) {
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "setNamespaceAware",
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {boolean.class}
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
3205ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson    public void test_setNamespaceAwareZ() throws Exception {
3215ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson        MyHandler mh = new MyHandler();
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        spf.setNamespaceAware(true);
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream is = getClass().getResourceAsStream("/simple_ns.xml");
3255ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson        spf.newSAXParser().parse(is, mh);
3265ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson        is.close();
3275ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        spf.setNamespaceAware(false);
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        is = getClass().getResourceAsStream("/simple_ns.xml");
3305ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson        spf.newSAXParser().parse(is, mh);
3315ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson        is.close();
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*   public void test_setSchemaLjavax_xml_validation_Schema() {
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SchemaFactory sf =
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Schema schema = sf.newSchema();
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            spf.setSchema(schema);
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(spf.getSchema());
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception " + sax.toString());
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//    public void test_setValidatingZ() {
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        MyHandler mh = new MyHandler();
349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        InputStream is2 = getClass().getResourceAsStream("/recipe.xml");
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        try {
351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            spf.setValidating(true);
352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            assertTrue(spf.isValidating());
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            spf.newSAXParser().parse(is2, mh);
354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (org.xml.sax.SAXException se) {
355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("SAXException was thrown during parsing");
356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (javax.xml.parsers.ParserConfigurationException pce) {
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("ParserConfigurationException was thrown during parsing");
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (IOException ioe) {
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("IOException was thrown during parsing");
360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } finally {
361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            try {
362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//                is2.close();
363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            } catch(Exception ioee) {}
364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        }
365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        InputStream is3 = getClass().getResourceAsStream("/recipe1.xml");
366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        try {
367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            assertTrue(spf.isValidating());
368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            spf.newSAXParser().parse(is3, mh);
369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (org.xml.sax.SAXException se) {
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("SAXException was thrown during parsing");
371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (javax.xml.parsers.ParserConfigurationException pce) {
372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("ParserConfigurationException was thrown during parsing");
373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (IOException ioe) {
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("IOEXception was thrown during parsing: " + ioe.getMessage());
375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } finally {
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            try {
377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//                is3.close();
378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            } catch(Exception ioee) {}
379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        }
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        is2 = getClass().getResourceAsStream("/recipe.xml");
381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        try {
382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            spf.setValidating(false);
383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            assertFalse(spf.isValidating());
384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            spf.newSAXParser().parse(is2, mh);
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (org.xml.sax.SAXException se) {
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("SAXException was thrown during parsing");
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (javax.xml.parsers.ParserConfigurationException pce) {
388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("ParserConfigurationException was thrown during parsing");
389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (IOException ioe) {
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("IOException was thrown during parsing");
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } finally {
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            try {
393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//                is2.close();
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            } catch(Exception ioee) {}
395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        }
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        is3 = getClass().getResourceAsStream("/recipe1.xml");
397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        try {
398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            assertFalse(spf.isValidating());
399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            spf.newSAXParser().parse(is3, mh);
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (org.xml.sax.SAXException se) {
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("SAXException was thrown during parsing");
402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (javax.xml.parsers.ParserConfigurationException pce) {
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("ParserConfigurationException was thrown during parsing");
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (IOException ioe) {
405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("IOEXception was thrown during parsing: " + ioe.getMessage());
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } finally {
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            try {
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//                is3.close();
409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            } catch(Exception ioee) {}
410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        }
411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//    }
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//    public void test_setXIncludeAwareZ() {
414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        spf.setXIncludeAware(true);
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        MyHandler mh = new MyHandler();
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        InputStream is = getClass().getResourceAsStream("/simple_ns.xml");
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        try {
418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            spf.newSAXParser().parse(is, mh);
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch(javax.xml.parsers.ParserConfigurationException pce) {
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("ParserConfigurationException was thrown during parsing");
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch(org.xml.sax.SAXException se) {
422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("SAXException was thrown during parsing");
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch(IOException ioe) {
424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("IOException was thrown during parsing");
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } finally {
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            try {
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//                is.close();
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            } catch(Exception ioee) {}
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        }
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        spf.setXIncludeAware(false);
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        is = getClass().getResourceAsStream("/simple_ns.xml");
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        try {
433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            is = getClass().getResourceAsStream("/simple_ns.xml");
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            spf.newSAXParser().parse(is, mh);
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch(javax.xml.parsers.ParserConfigurationException pce) {
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("ParserConfigurationException was thrown during parsing");
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch(org.xml.sax.SAXException se) {
438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("SAXException was thrown during parsing");
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch(IOException ioe) {
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("IOException was thrown during parsing");
441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } finally {
442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            try {
443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//                is.close();
444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            } catch(Exception ioee) {}
445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        }
446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        is = getClass().getResourceAsStream("/simple_ns.xml");
447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        try {
448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            spf.setXIncludeAware(true);
449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            spf.newSAXParser().parse(is, mh);
450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch(javax.xml.parsers.ParserConfigurationException pce) {
451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("ParserConfigurationException was thrown during parsing");
452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch(org.xml.sax.SAXException se) {
453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("SAXException was thrown during parsing");
454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch(IOException ioe) {
455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("IOException was thrown during parsing");
456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } finally {
457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            try {
458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//                is.close();
459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            } catch(Exception ioee) {}
460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        }
461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//    }
462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    static class MyHandler extends DefaultHandler {
464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void startElement(String uri, String localName, String qName,
466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Attributes atts) {
467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            el.add(qName);
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (!uri.equals(""))
470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ns.put(qName, uri);
471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < atts.getLength(); i++) {
472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                attr.put(atts.getQName(i), atts.getValue(i));
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class MySAXParserFactory extends SAXParserFactory {
479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public MySAXParserFactory() {
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super();
482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public SAXParser newSAXParser() {
485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void setFeature(String name, boolean value) throws
489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ParserConfigurationException, SAXNotRecognizedException,
490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                SAXNotSupportedException {
491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean getFeature(String name) throws
495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ParserConfigurationException, SAXNotRecognizedException,
496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                SAXNotSupportedException {
497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return true;
498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
503