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