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]

Reply via email to