package tests.org.w3c.dom; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; public class DOMDocumentBuilderFactory { /** * Parser configuration */ private DocumentBuilderSetting[] settings = null; private DocumentBuilder builder = null; private DocumentBuilderFactory factory = null; public DOMDocumentBuilderFactory(DocumentBuilderSetting[] settings) { if (settings == null) { settings = new DocumentBuilderSetting[0]; } else { settings = (DocumentBuilderSetting[]) settings.clone(); } factory = DocumentBuilderFactory.newInstance(); if (factory == null) { throw new RuntimeException("DocumentBuilderFactory must not be null"); } if (settings != null) { for (int i = 0; i < settings.length; i++) { settings[i].applySetting(factory); } } try { builder = factory.newDocumentBuilder(); } catch (ParserConfigurationException e) { e.printStackTrace(); } if (builder == null) { throw new RuntimeException("DocumentBuilder must not be null"); } } public DocumentBuilder getBuilder() { return builder; } public boolean hasFeature(String feature, String version) { return builder.getDOMImplementation().hasFeature(feature, version); } public boolean isCoalescing() { return factory.isCoalescing(); } public boolean isExpandEntityReferences() { return factory.isExpandEntityReferences(); } public boolean isIgnoringElementContentWhitespace() { return factory.isIgnoringElementContentWhitespace(); } public boolean isNamespaceAware() { return factory.isNamespaceAware(); } public boolean isValidating() { return factory.isValidating(); } public static DocumentBuilderSetting[] getConfiguration1() { return new DocumentBuilderSetting[] { DocumentBuilderSetting.notCoalescing, DocumentBuilderSetting.notExpandEntityReferences, DocumentBuilderSetting.notIgnoringElementContentWhitespace, DocumentBuilderSetting.notNamespaceAware, DocumentBuilderSetting.notValidating }; } public static DocumentBuilderSetting[] getConfiguration2() { return new DocumentBuilderSetting[] { DocumentBuilderSetting.notCoalescing, DocumentBuilderSetting.notExpandEntityReferences, DocumentBuilderSetting.notIgnoringElementContentWhitespace, DocumentBuilderSetting.namespaceAware, DocumentBuilderSetting.notValidating }; } }