1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.org.w3c.dom;
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.DocumentBuilder;
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.DocumentBuilderFactory;
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.ParserConfigurationException;
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class DOMDocumentBuilderFactory {
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Parser configuration
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private DocumentBuilderSetting[] settings = null;
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private DocumentBuilder builder = null;
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private DocumentBuilderFactory factory = null;
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public DOMDocumentBuilderFactory(DocumentBuilderSetting[] settings) {
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (settings == null) {
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            settings = new DocumentBuilderSetting[0];
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } else {
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            settings = (DocumentBuilderSetting[]) settings.clone();
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        factory = DocumentBuilderFactory.newInstance();
25f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (factory == null) {
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("DocumentBuilderFactory must not be null");
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (settings != null) {
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < settings.length; i++) {
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                settings[i].applySetting(factory);
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            builder = factory.newDocumentBuilder();
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ParserConfigurationException e) {
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            e.printStackTrace();
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
40f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (builder == null) {
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("DocumentBuilder must not be null");
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
44f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public DocumentBuilder getBuilder() {
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return builder;
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean hasFeature(String feature, String version) {
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return builder.getDOMImplementation().hasFeature(feature, version);
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean isCoalescing() {
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return factory.isCoalescing();
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean isExpandEntityReferences() {
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return factory.isExpandEntityReferences();
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean isIgnoringElementContentWhitespace() {
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return factory.isIgnoringElementContentWhitespace();
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean isNamespaceAware() {
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return factory.isNamespaceAware();
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean isValidating() {
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return factory.isValidating();
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static DocumentBuilderSetting[] getConfiguration1() {
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return new DocumentBuilderSetting[] {
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                DocumentBuilderSetting.notCoalescing,
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                DocumentBuilderSetting.notExpandEntityReferences,
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                DocumentBuilderSetting.notIgnoringElementContentWhitespace,
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                DocumentBuilderSetting.notNamespaceAware,
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                DocumentBuilderSetting.notValidating };
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static DocumentBuilderSetting[] getConfiguration2() {
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return new DocumentBuilderSetting[] {
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                DocumentBuilderSetting.notCoalescing,
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                DocumentBuilderSetting.notExpandEntityReferences,
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                DocumentBuilderSetting.notIgnoringElementContentWhitespace,
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                DocumentBuilderSetting.namespaceAware,
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                DocumentBuilderSetting.notValidating };
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
95