santiagopg 2004/05/20 13:35:15
Modified: java/src/org/apache/xalan/xsltc/runtime
AbstractTranslet.java BasisLibrary.java
Log:
Fix for Bugzilla 29120. The translet now stores a reference to the
DocumentBuilderFactory which is used by nodeList2Iterator() in the basis
library. Note that to reuse that reference you need to use the same transformer
(not just the same template).
Revision Changes Path
1.54 +18 -1
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.53
retrieving revision 1.54
diff -u -r1.53 -r1.54
--- AbstractTranslet.java 13 May 2004 23:34:12 -0000 1.53
+++ AbstractTranslet.java 20 May 2004 20:35:15 -0000 1.54
@@ -27,6 +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 javax.xml.parsers.ParserConfigurationException;
import org.apache.xml.dtm.DTM;
@@ -714,4 +717,18 @@
public void setTemplates(Templates templates) {
_templates = templates;
}
+
+ /************************************************************************
+ * DOMBuilderFactory caching
+
************************************************************************/
+ protected DocumentBuilderFactory _domFactory = null;
+
+ public DocumentBuilder newDocumentBuilder()
+ throws ParserConfigurationException
+ {
+ if (_domFactory == null) {
+ _domFactory = DocumentBuilderFactory.newInstance();
+ }
+ return _domFactory.newDocumentBuilder();
+ }
}
1.77 +5 -6
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.76
retrieving revision 1.77
diff -u -r1.76 -r1.77
--- BasisLibrary.java 27 Feb 2004 01:59:31 -0000 1.76
+++ BasisLibrary.java 20 May 2004 20:35:15 -0000 1.77
@@ -27,7 +27,6 @@
import java.util.ResourceBundle;
import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.dom.DOMSource;
import org.apache.xalan.xsltc.DOM;
@@ -1175,15 +1174,15 @@
Translet translet, DOM dom)
{
// w3c NodeList -> w3c DOM
- DocumentBuilderFactory dfac = DocumentBuilderFactory.newInstance();
DocumentBuilder docbldr = null;
try {
- docbldr = dfac.newDocumentBuilder();
- } catch (javax.xml.parsers.ParserConfigurationException e) {
+ docbldr = ((AbstractTranslet) translet).newDocumentBuilder();
+ }
+ 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 =
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]