sboag 01/07/13 12:09:22
Modified: java/src/org/apache/xalan/transformer
TransformerHandlerImpl.java
Log:
Add pauseForTransformThreadStartup. Call this in startDocument just
after starting the transform thread. This should get rid of any variability
with racing threads.
Revision Changes Path
1.9 +33 -0
xml-xalan/java/src/org/apache/xalan/transformer/TransformerHandlerImpl.java
Index: TransformerHandlerImpl.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/TransformerHandlerImpl.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- TransformerHandlerImpl.java 2001/07/12 19:50:37 1.8
+++ TransformerHandlerImpl.java 2001/07/13 19:09:18 1.9
@@ -101,6 +101,7 @@
{
private boolean m_insideParse = false;
+ private boolean m_hasStarted = false;
////////////////////////////////////////////////////////////////////
// Constructors.
@@ -207,6 +208,7 @@
*/
protected void waitForInitialEvents()
{
+ m_hasStarted = true;
if(m_dtm instanceof SAX2DTM)
{
@@ -221,6 +223,34 @@
}
}
}
+
+ /**
+ * Call co_entry_pause on the CoroutineSAXParser.
+ */
+ protected void pauseForTransformThreadStartup()
+ {
+
+ if(m_dtm instanceof SAX2DTM)
+ {
+ if(DEBUG)
+ System.out.println("In pauseForTransformThreadStartup...");
+ SAX2DTM sax2dtm = ((SAX2DTM)m_dtm);
+ if(null != m_contentHandler
+ && m_contentHandler instanceof CoroutineSAXParser)
+ {
+ CoroutineSAXParser sp = (CoroutineSAXParser)m_contentHandler;
+ try
+ {
+ sp.getCoroutineManager().co_entry_pause(sp.getParserCoroutineID());
+ }
+ catch(java.lang.NoSuchMethodException nsme)
+ {
+ // ignore.
+ }
+ }
+ }
+ }
+
////////////////////////////////////////////////////////////////////
@@ -428,6 +458,9 @@
// runTransformThread is equivalent with the 2.0.1 code,
// except that the Thread may come from a pool.
m_transformer.runTransformThread( cpriority );
+ pauseForTransformThreadStartup();
+ if(false == m_hasStarted)
+ System.err.println("Transform thread has still not started after
pauseForTransformThreadStartup!");
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]