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)
{