1 /*
2  * Copyright (c) 2001-2003 World Wide Web Consortium,
3  * (Massachusetts Institute of Technology, Institut National de
4  * Recherche en Informatique et en Automatique, Keio University). All
5  * Rights Reserved. This program is distributed under the W3C's Software
6  * Intellectual Property License. This program is distributed in the
7  * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
8  * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  * PURPOSE.
10  * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
11  */
12 
13 /*
14   $Log: XalanDOMTestDocumentBuilderFactory.java,v $
15   Revision 1.2  2004/03/11 01:44:21  dom-ts-4
16   Checkstyle fixes (bug 592)
17 
18   Revision 1.1  2003/04/24 05:02:05  dom-ts-4
19   Xalan-J support for L3 XPath
20   http://www.w3.org/Bugs/Public/show_bug.cgi?id=191
21 
22   Revision 1.1  2002/02/03 07:47:51  dom-ts-4
23   More missing files
24 
25  */
26 
27 package org.w3c.domts;
28 
29 import java.lang.reflect.Constructor;
30 
31 import javax.xml.parsers.DocumentBuilderFactory;
32 
33 import org.w3c.dom.Document;
34 
35 /**
36  *
37  *   This class uses Xalan-J to add XPath support
38  *       to the current JAXP DOM implementation
39  */
40 public class XalanDOMTestDocumentBuilderFactory
41     extends JAXPDOMTestDocumentBuilderFactory {
42 
43   /**
44    * Creates a JAXP implementation of DOMTestDocumentBuilderFactory.
45    * @param factory null for default JAXP provider.  If not null,
46    * factory will be mutated in constructor and should be released
47    * by calling code upon return.
48    * @param settings array of settings, may be null.
49    */
XalanDOMTestDocumentBuilderFactory( DocumentBuilderFactory baseFactory, DocumentBuilderSetting[] settings)50   public XalanDOMTestDocumentBuilderFactory(
51       DocumentBuilderFactory baseFactory,
52       DocumentBuilderSetting[] settings) throws DOMTestIncompatibleException {
53     super(baseFactory, settings);
54   }
55 
createInstance(DocumentBuilderFactory newFactory, DocumentBuilderSetting[] mergedSettings)56   protected DOMTestDocumentBuilderFactory createInstance(DocumentBuilderFactory
57       newFactory,
58       DocumentBuilderSetting[] mergedSettings) throws
59       DOMTestIncompatibleException {
60     return new XalanDOMTestDocumentBuilderFactory(newFactory, mergedSettings);
61   }
62 
63   /**
64    *  Creates XPath evaluator
65    *  @param doc DOM document, may not be null
66    */
createXPathEvaluator(Document doc)67   public Object createXPathEvaluator(Document doc) {
68     try {
69       Class xpathClass = Class.forName(
70           "org.apache.xpath.domapi.XPathEvaluatorImpl");
71       Constructor constructor = xpathClass.getConstructor(new Class[] {Document.class});
72       return constructor.newInstance(new Object[] {doc});
73     }
74     catch (Exception ex) {
75     }
76     return doc;
77   }
78 
79 }
80