sboag       00/08/09 13:05:29

  Modified:    java/src/org/apache/xalan/stree SourceTreeHandler.java
               java/src/org/apache/xalan/transformer TransformerImpl.java
  Log:
  Reverse the order of the parse thread vs. the transform thread... the 
transform thread needs to be the main thread, and the parse needs to be the 
child thread.
  
  Revision  Changes    Path
  1.6       +6 -0      
xml-xalan/java/src/org/apache/xalan/stree/SourceTreeHandler.java
  
  Index: SourceTreeHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/stree/SourceTreeHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SourceTreeHandler.java    2000/08/04 22:26:25     1.5
  +++ SourceTreeHandler.java    2000/08/09 20:05:28     1.6
  @@ -32,6 +32,10 @@
       m_transformer = transformer;
       XPathContext xctxt = ((TransformerImpl)transformer).getXPathContext();
       xctxt.setDOMHelper(new StreeDOMHelper());
  +    if (indexedLookup)
  +      m_root = new IndexedDocImpl();
  +    else
  +      m_root = new DocumentImpl();      
     }
   
     /**
  @@ -111,10 +115,12 @@
       
       if(m_useMultiThreading && (null != m_transformer))
       {
  +      /*
         if(null != m_inputSource)
           
m_transformer.getXPathContext().getSourceTreeManager().putDocumentInCache(m_root,
 m_inputSource);
         Thread t = new Thread(m_transformer);
         t.start();
  +      */
         //m_transformer.transformNode(m_root);
       }
   
  
  
  
  1.14      +28 -6     
xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java
  
  Index: TransformerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- TransformerImpl.java      2000/08/07 02:57:13     1.13
  +++ TransformerImpl.java      2000/08/09 20:05:29     1.14
  @@ -297,15 +297,34 @@
           ContentHandler inputHandler = getInputContentHandler();
           reader.setContentHandler( inputHandler );
           reader.setProperty("http://xml.org/sax/properties/lexical-handler";, 
inputHandler);
  -        
  -        
((org.apache.xalan.stree.SourceTreeHandler)inputHandler).setInputSource(xmlSource);
  -        
  +                
           // Set the reader for cloning purposes.
           getXPathContext().setPrimaryReader(reader);
           
  +        if(inputHandler instanceof org.apache.xalan.stree.SourceTreeHandler)
  +        {
  +          
((org.apache.xalan.stree.SourceTreeHandler)inputHandler).setInputSource(xmlSource);
  +          Node doc 
  +            = 
((org.apache.xalan.stree.SourceTreeHandler)inputHandler).getRoot();
  +          if(null != doc)
  +          {
  +            getXPathContext().getSourceTreeManager().putDocumentInCache(doc, 
xmlSource);
  +            m_xmlSource = xmlSource;
  +            Thread t = new Thread(this);
  +            t.start();
  +            transformNode(doc);
  +          }
  +          
  +        }
  +        else
  +        {
  +          // ??
  +          reader.parse( xmlSource );
  +        }
  +        
           // Kick off the parse.  When the ContentHandler gets 
           // the startDocument event, it will call transformNode( node ).
  -        reader.parse( xmlSource );
  +        // reader.parse( xmlSource );
           
           // This has to be done to catch exceptions thrown from 
           // the transform thread spawned by the STree handler.
  @@ -1723,6 +1742,8 @@
       return m_exceptionThrown;
     }
     
  +  private InputSource m_xmlSource;
  +  
     /**
      * Run the transform thread.
      */
  @@ -1730,8 +1751,9 @@
     {
       try
       {
  -      Node n = ((SourceTreeHandler)getInputContentHandler()).getRoot();
  -      transformNode(n);
  +      // Node n = ((SourceTreeHandler)getInputContentHandler()).getRoot();
  +      // transformNode(n);
  +      getXPathContext().getPrimaryReader().parse(m_xmlSource);
       }
       catch(Exception e)
       {
  
  
  

Reply via email to