zongaro     2002/09/27 09:47:10

  Modified:    java/src/org/apache/xalan/xsltc/dom Tag: XSLTC_DTM
                        DOMImpl.java SAXImpl.java DocumentCache.java
               java/src/org/apache/xalan/xsltc/trax Tag: XSLTC_DTM
                        TransformerImpl.java
  Log:
  XSLTCDTMManager checks whether any XMLReader associated with a SAXSource object
  has a DTDHandler or ErrorHandler before substituting a DTM implementation to
  listen for those events.  That avoids disrupting any user-supplied handlers.
  However, the XSLTC TransformerFactoryImpl now re-uses instances of SAXParser.
  This means that when the XSLTCDTMManager checks whether the XMLReader has an
  associated DTDHandler or ErrorHandler, it might find the DTM from a previous
  transformation, and functionality might be limited.
  
  To distinguish the cases, I've added a boolean flag to the
  XSLTCDTMManager.getDTM methods that indicates whether any XMLReader was supplied
  by the user.  If it's false, the XSLTCDTMManager ignores any previously set
  DTDHandler or ErrorHandler.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.68.2.11 +3 -2      xml-xalan/java/src/org/apache/xalan/xsltc/dom/DOMImpl.java
  
  Index: DOMImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/DOMImpl.java,v
  retrieving revision 1.68.2.10
  retrieving revision 1.68.2.11
  diff -u -r1.68.2.10 -r1.68.2.11
  --- DOMImpl.java      23 Sep 2002 17:24:07 -0000      1.68.2.10
  +++ DOMImpl.java      27 Sep 2002 16:47:09 -0000      1.68.2.11
  @@ -2014,7 +2014,8 @@
       public DOM getResultTreeFrag(int initSize)
       {
           return (SAXImpl) ((XSLTCDTMManager)m_mgr).getDTM(null, true, m_wsfilter,
  -                                                        false, false, initSize);
  +                                                         false, false, false,
  +                                                         initSize);
       }
   
       /**
  
  
  
  1.1.2.12  +3 -2      xml-xalan/java/src/org/apache/xalan/xsltc/dom/Attic/SAXImpl.java
  
  Index: SAXImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/Attic/SAXImpl.java,v
  retrieving revision 1.1.2.11
  retrieving revision 1.1.2.12
  diff -u -r1.1.2.11 -r1.1.2.12
  --- SAXImpl.java      23 Sep 2002 17:24:07 -0000      1.1.2.11
  +++ SAXImpl.java      27 Sep 2002 16:47:09 -0000      1.1.2.12
  @@ -1885,7 +1885,8 @@
       public DOM getResultTreeFrag(int initSize)
       {
        return (SAXImpl) ((XSLTCDTMManager)m_mgr).getDTM(null, true, m_wsfilter,
  -                                                        false, false, initSize);
  +                                                         false, false, false,
  +                                                         initSize);
       }
   
       /**
  
  
  
  1.6.10.3  +6 -4      xml-xalan/java/src/org/apache/xalan/xsltc/dom/DocumentCache.java
  
  Index: DocumentCache.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/DocumentCache.java,v
  retrieving revision 1.6.10.2
  retrieving revision 1.6.10.3
  diff -u -r1.6.10.2 -r1.6.10.3
  --- DocumentCache.java        24 Aug 2002 11:33:16 -0000      1.6.10.2
  +++ DocumentCache.java        27 Sep 2002 16:47:09 -0000      1.6.10.3
  @@ -138,13 +138,15 @@
         */
        public void loadDocument(String uri) {
   
  -           DTMManager dtmManager = XSLTCDTMManager.newInstance(
  -                 org.apache.xpath.objects.XMLStringFactoryImpl.getFactory());       
                               
  +            XSLTCDTMManager dtmManager =
  +                    (XSLTCDTMManager)XSLTCDTMManager.newInstance(
  +                                  org.apache.xpath.objects.XMLStringFactoryImpl
  +                                                          .getFactory());
            try {
                final long stamp = System.currentTimeMillis();
                   _dom = (SAXImpl)dtmManager.getDTM(
                                    new SAXSource(_reader, new InputSource(uri)),
  -                                 false, null, true, true);
  +                                 false, null, true, true, false);
                _dom.setDocumentURI(uri);
   
                // The build time can be used for statistics for a better
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.37.2.7  +19 -10    
xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerImpl.java
  
  Index: TransformerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerImpl.java,v
  retrieving revision 1.37.2.6
  retrieving revision 1.37.2.7
  diff -u -r1.37.2.6 -r1.37.2.7
  --- TransformerImpl.java      18 Sep 2002 16:04:29 -0000      1.37.2.6
  +++ TransformerImpl.java      27 Sep 2002 16:47:09 -0000      1.37.2.7
  @@ -397,6 +397,7 @@
                final SAXSource sax = (SAXSource)source;
                XMLReader reader = sax.getXMLReader();
                final InputSource input = sax.getInputSource();
  +                final boolean hasUserReader = reader != null;
   
                // Create a reader if not set by user
                if (reader == null) {
  @@ -405,10 +406,13 @@
   
                // Create a new internal DOM and set up its builder to trap
                // all content/lexical events
  -             DTMManager dtmManager = XSLTCDTMManager.newInstance(
  -                   org.apache.xpath.objects.XMLStringFactoryImpl.getFactory());
  +             XSLTCDTMManager dtmManager = 
  +                   (XSLTCDTMManager) XSLTCDTMManager.newInstance(
  +                                   org.apache.xpath.objects.XMLStringFactoryImpl
  +                                                       .getFactory());
   
  -             dom = (SAXImpl)dtmManager.getDTM(sax, false, null, true, true);
  +             dom = (SAXImpl)dtmManager.getDTM(sax, false, null, true, true,
  +                                                 hasUserReader);
                final DOMBuilder builder = ((SAXImpl)dom).getBuilder();
                try {
                    reader.setProperty(LEXICAL_HANDLER_PROPERTY, builder);
  @@ -424,11 +428,13 @@
                final DOMSource domsrc = (DOMSource) source;
   
                // Create a new internal DTM and build it directly from DOM
  -             DTMManager dtmManager = XSLTCDTMManager.newInstance(
  -                   org.apache.xpath.objects.XMLStringFactoryImpl.getFactory());
  +             XSLTCDTMManager dtmManager =
  +                     (XSLTCDTMManager)XSLTCDTMManager.newInstance(
  +                                   org.apache.xpath.objects.XMLStringFactoryImpl
  +                                                         .getFactory());
       
                dom = (DOMImpl)dtmManager.getDTM(domsrc, false, null, true,
  -                                                 true);
  +                                                 true, false);
                ((DOMImpl)dom).setDocumentURI(_sourceSystemId);
            }
            // Handle StreamSource input
  @@ -441,8 +447,10 @@
   
                // Create a new internal DOM and set up its builder to trap
                // all content/lexical events
  -             DTMManager dtmManager = XSLTCDTMManager.newInstance(
  -                 org.apache.xpath.objects.XMLStringFactoryImpl.getFactory());
  +             XSLTCDTMManager dtmManager =
  +                         (XSLTCDTMManager) XSLTCDTMManager.newInstance(
  +                                   org.apache.xpath.objects.XMLStringFactoryImpl
  +                                                   .getFactory());
   
                InputSource input;
                if (streamInput != null) {
  @@ -460,7 +468,8 @@
                    throw new TransformerException(err.toString());
                }
                dom = (SAXImpl)dtmManager.getDTM(new SAXSource(reader, input),
  -                                                 false, null, true, true);
  +                                                 false, null, true, true,
  +                                                 false);
                ((SAXImpl)dom).setDocumentURI(_sourceSystemId);
            }
            else if (source instanceof XSLTCSource) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to