KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > tools > common > dom > ExtendedDocumentBuilder


1 package org.objectweb.celtix.tools.common.dom;
2
3 import java.io.IOException JavaDoc;
4 import java.io.InputStream JavaDoc;
5 import java.util.logging.Level JavaDoc;
6 import java.util.logging.Logger JavaDoc;
7
8 import javax.xml.XMLConstants JavaDoc;
9 import javax.xml.parsers.DocumentBuilder JavaDoc;
10 import javax.xml.parsers.DocumentBuilderFactory JavaDoc;
11 import javax.xml.transform.stream.StreamSource JavaDoc;
12 import javax.xml.validation.Schema JavaDoc;
13 import javax.xml.validation.SchemaFactory JavaDoc;
14     
15 import org.w3c.dom.Document JavaDoc;
16 import org.xml.sax.SAXException JavaDoc;
17
18 import org.objectweb.celtix.common.logging.LogUtils;
19
20 /**
21  * (not thread safe)
22  *
23  */

24 public class ExtendedDocumentBuilder {
25
26     private static final Logger JavaDoc LOG = LogUtils.getL7dLogger(ExtendedDocumentBuilder.class);
27
28     private final DocumentBuilderFactory JavaDoc parserFactory;
29     private DocumentBuilder JavaDoc parser;
30
31     private SchemaFactory JavaDoc schemaFactory;
32     private Schema JavaDoc schema;
33
34     public ExtendedDocumentBuilder() {
35         parserFactory = DocumentBuilderFactory.newInstance();
36         parserFactory.setNamespaceAware(true);
37     }
38
39     private InputStream JavaDoc getSchemaLocation() {
40         String JavaDoc toolspec = "/org/objectweb/celtix/tools/common/toolspec/tool-specification.xsd";
41         return getClass().getResourceAsStream(toolspec);
42     }
43
44     public void setValidating(boolean validate) {
45         if (validate) {
46             this.schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
47             try {
48                 this.schema = schemaFactory.newSchema(new StreamSource JavaDoc(getSchemaLocation()));
49             } catch (org.xml.sax.SAXException JavaDoc e) {
50                 LOG.log(Level.SEVERE, "SCHEMA_FACTORY_EXCEPTION_MSG");
51             }
52             this.parserFactory.setSchema(this.schema);
53         }
54     }
55
56
57     private DocumentBuilder JavaDoc getParser() {
58         if (parser == null) {
59             try {
60                 parser = parserFactory.newDocumentBuilder();
61             } catch (javax.xml.parsers.ParserConfigurationException JavaDoc e) {
62                 LOG.log(Level.SEVERE, "NEW_DOCUMENT_BUILDER_EXCEPTION_MSG");
63             }
64         }
65         return parser;
66     }
67     
68     public Document JavaDoc parse(InputStream JavaDoc in) throws SAXException JavaDoc, IOException JavaDoc {
69         if (in == null && LOG.isLoggable(Level.FINE)) {
70             LOG.fine("ExtendedDocumentBuilder trying to parse a null inputstream");
71         }
72         return getParser().parse(in);
73     }
74
75 }
76
Popular Tags