KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > enhydra > apache > xerces > jaxp > DocumentBuilderFactoryImpl


1 /*
2  * $Id: DocumentBuilderFactoryImpl.java,v 1.2 2005/01/26 08:28:44 jkjome Exp $
3  *
4  * The Apache Software License, Version 1.1
5  *
6  *
7  * Copyright (c) 2000 The Apache Software Foundation. All rights
8  * reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  *
14  * 1. Redistributions of source code must retain the above copyright
15  * notice, this list of conditions and the following disclaimer.
16  *
17  * 2. Redistributions in binary form must reproduce the above copyright
18  * notice, this list of conditions and the following disclaimer in
19  * the documentation and/or other materials provided with the
20  * distribution.
21  *
22  * 3. The end-user documentation included with the redistribution,
23  * if any, must include the following acknowledgment:
24  * "This product includes software developed by the
25  * Apache Software Foundation (http://www.apache.org/)."
26  * Alternately, this acknowledgment may appear in the software itself,
27  * if and wherever such third-party acknowledgments normally appear.
28  *
29  * 4. The names "Xerces" and "Apache Software Foundation" must
30  * not be used to endorse or promote products derived from this
31  * software without prior written permission. For written
32  * permission, please contact apache@apache.org.
33  *
34  * 5. Products derived from this software may not be called "Apache",
35  * nor may "Apache" appear in their name, without prior written
36  * permission of the Apache Software Foundation.
37  *
38  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
39  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
40  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
41  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
42  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
43  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
44  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
45  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
46  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
47  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
48  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
49  * SUCH DAMAGE.
50  * ====================================================================
51  *
52  * This software consists of voluntary contributions made by many
53  * individuals on behalf of the Apache Software Foundation and was
54  * originally based on software copyright (c) 1999, Sun Microsystems, Inc.,
55  * http://www.sun.com. For more information on the Apache Software
56  * Foundation, please see <http://www.apache.org/>.
57  */

58
59
60 package org.enhydra.apache.xerces.jaxp;
61
62 import java.util.Hashtable JavaDoc;
63
64 import javax.xml.parsers.DocumentBuilder JavaDoc;
65 import javax.xml.parsers.DocumentBuilderFactory JavaDoc;
66 import javax.xml.parsers.ParserConfigurationException JavaDoc;
67
68 import org.enhydra.apache.xerces.parsers.DOMParser;
69 import org.xml.sax.SAXException JavaDoc;
70
71 /**
72  * @author Rajiv Mordani
73  * @author Edwin Goei
74  * @version $Revision: 1.2 $
75  */

76 public class DocumentBuilderFactoryImpl extends DocumentBuilderFactory JavaDoc {
77     /** These are DocumentBuilderFactory attributes not DOM attributes */
78     private Hashtable JavaDoc attributes;
79
80     public DocumentBuilderFactoryImpl() {
81      
82     }
83
84     /**
85      *
86      */

87     public DocumentBuilder JavaDoc newDocumentBuilder()
88         throws ParserConfigurationException JavaDoc
89     {
90         try {
91             return new DocumentBuilderImpl(this, attributes);
92         } catch (SAXException JavaDoc se) {
93             // Handles both SAXNotSupportedException, SAXNotRecognizedException
94
throw new ParserConfigurationException JavaDoc(se.getMessage());
95         }
96     }
97
98     /**
99      * Allows the user to set specific attributes on the underlying
100      * implementation.
101      */

102     public void setAttribute(String JavaDoc name, Object JavaDoc value)
103         throws IllegalArgumentException JavaDoc
104     {
105         // XXX This is ugly. We have to collect the attributes and then
106
// later create a DocumentBuilderImpl to verify the attributes.
107
if (attributes == null) {
108             attributes = new Hashtable JavaDoc();
109         }
110         attributes.put(name, value);
111
112         // Test the attribute name by possibly throwing an exception
113
try {
114             new DocumentBuilderImpl(this, attributes);
115         } catch (Exception JavaDoc e) {
116             attributes.remove(name);
117             throw new IllegalArgumentException JavaDoc(e.getMessage());
118         }
119     }
120
121     /**
122      * Allows the user to retrieve specific attributes on the underlying
123      * implementation.
124      */

125     public Object JavaDoc getAttribute(String JavaDoc name)
126         throws IllegalArgumentException JavaDoc
127     {
128         DOMParser domParser = null;
129
130         try {
131             // We create a dummy DocumentBuilderImpl in case the attribute
132
// name is not one that is in the attributes hashtable.
133
domParser =
134                 new DocumentBuilderImpl(this, attributes).getDOMParser();
135             return domParser.getProperty(name);
136         } catch (SAXException JavaDoc se1) {
137             // assert(name is not recognized or not supported), try feature
138
try {
139                 boolean result = domParser.getFeature(name);
140                 // Must have been a feature
141
return new Boolean JavaDoc(result);
142             } catch (SAXException JavaDoc se2) {
143                 // Not a property or a feature
144
throw new IllegalArgumentException JavaDoc(se1.getMessage());
145             }
146         }
147     }
148
149
150     /* (non-Javadoc)
151      * @see javax.xml.parsers.DocumentBuilderFactory#setFeature(java.lang.String, boolean)
152      */

153     public void setFeature(String JavaDoc name, boolean value) throws ParserConfigurationException JavaDoc {
154         // TODO Auto-generated method stub
155

156     }
157     /* (non-Javadoc)
158      * @see javax.xml.parsers.DocumentBuilderFactory#getFeature(java.lang.String)
159      */

160     public boolean getFeature(String JavaDoc name) throws ParserConfigurationException JavaDoc {
161         // TODO Auto-generated method stub
162
return false;
163     }
164
165 }
166
Popular Tags