KickJava   Java API By Example, From Geeks To Geeks.

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


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

20 public final class SchemaValidatingSAXParser {
21
22     private static final Logger JavaDoc LOG = LogUtils.getL7dLogger(SchemaValidatingSAXParser.class);
23
24     private final SAXParserFactory JavaDoc parserFactory = SAXParserFactory.newInstance();
25     private SAXParser JavaDoc parser;
26     private SchemaFactory JavaDoc schemaFactory;
27     private Schema JavaDoc schema;
28
29     public SchemaValidatingSAXParser() {
30         try {
31             parserFactory.setNamespaceAware(true);
32             parser = parserFactory.newSAXParser();
33         } catch (javax.xml.parsers.ParserConfigurationException JavaDoc e) {
34             LOG.log(Level.SEVERE, "SAX_PARSER_CONFIG_ERR_MSG");
35         } catch (org.xml.sax.SAXException JavaDoc saxe) {
36             LOG.log(Level.SEVERE, "SAX_PARSER_EXCEPTION_MSG");
37         }
38         setValidating(true);
39     }
40
41     private InputStream JavaDoc getSchemaLocation() {
42         String JavaDoc toolspec = "/org/objectweb/celtix/tools/common/toolspec/tool-specification.xsd";
43         return getClass().getResourceAsStream(toolspec);
44     }
45     
46     public void setValidating(boolean validate) {
47         if (validate) {
48             this.schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
49             try {
50                 this.schema = schemaFactory.newSchema(new StreamSource JavaDoc(getSchemaLocation()));
51             } catch (org.xml.sax.SAXException JavaDoc e) {
52                 LOG.log(Level.SEVERE, "SCHEMA_FACTORY_EXCEPTION_MSG");
53             }
54             this.parserFactory.setSchema(this.schema);
55         }
56     }
57
58     public SAXParser JavaDoc getSAXParser() {
59         return parser;
60     }
61 }
62
Popular Tags