santiagopg 2004/05/25 11:41:39
Modified: java/src/org/apache/xalan/xsltc/runtime
AbstractTranslet.java BasisLibrary.java
Log:
Improved patch for Bugzilla 29120 based on Matthias' suggestion. A
DOMImplementation is now cached for even better performance.
Revision Changes Path
1.55 +10 -8
xml-xalan/java/src/org/apache/xalan/xsltc/runtime/AbstractTranslet.java
Index: AbstractTranslet.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/AbstractTranslet.java,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- AbstractTranslet.java 20 May 2004 20:35:15 -0000 1.54
+++ AbstractTranslet.java 25 May 2004 18:41:38 -0000 1.55
@@ -27,8 +27,9 @@
import java.util.Enumeration;
import java.util.Vector;
import javax.xml.transform.Templates;
-import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.DOMImplementation;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.xml.dtm.DTM;
@@ -719,16 +720,17 @@
}
/************************************************************************
- * DOMBuilderFactory caching
+ * DOMImplementation caching for basis library
************************************************************************/
- protected DocumentBuilderFactory _domFactory = null;
+ protected DOMImplementation _domImplementation = null;
- public DocumentBuilder newDocumentBuilder()
+ public Document newDocument(String uri, String qname)
throws ParserConfigurationException
{
- if (_domFactory == null) {
- _domFactory = DocumentBuilderFactory.newInstance();
+ if (_domImplementation == null) {
+ _domImplementation = DocumentBuilderFactory.newInstance()
+ .newDocumentBuilder().getDOMImplementation();
}
- return _domFactory.newDocumentBuilder();
+ return _domImplementation.createDocument(uri, qname, null);
}
}
1.78 +4 -10
xml-xalan/java/src/org/apache/xalan/xsltc/runtime/BasisLibrary.java
Index: BasisLibrary.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/BasisLibrary.java,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -r1.77 -r1.78
--- BasisLibrary.java 20 May 2004 20:35:15 -0000 1.77
+++ BasisLibrary.java 25 May 2004 18:41:38 -0000 1.78
@@ -26,7 +26,6 @@
import java.util.Locale;
import java.util.ResourceBundle;
-import javax.xml.parsers.DocumentBuilder;
import javax.xml.transform.dom.DOMSource;
import org.apache.xalan.xsltc.DOM;
@@ -1174,22 +1173,17 @@
Translet translet, DOM dom)
{
// w3c NodeList -> w3c DOM
- DocumentBuilder docbldr = null;
+ Document doc = null;
try {
- docbldr = ((AbstractTranslet) translet).newDocumentBuilder();
+ doc = ((AbstractTranslet) translet).newDocument("", "__top__");
}
catch (javax.xml.parsers.ParserConfigurationException e) {
runTimeError(RUN_TIME_INTERNAL_ERR, e.getMessage());
return null;
}
- // create new w3c DOM
- Document doc = docbldr.newDocument();
- org.w3c.dom.Node topElementNode =
- doc.appendChild(doc.createElementNS("", "__top__"));
-
// Copy all the nodes in the nodelist to be under the top element
- copyNodes(nodeList, doc, topElementNode);
+ copyNodes(nodeList, doc, doc.getDocumentElement());
// w3cDOM -> DTM -> DOMImpl
if (dom instanceof MultiDOM) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]