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