sboag 01/01/24 08:13:06
Modified: java/src/org/apache/xalan/transformer TransformerImpl.java
Log:
Try and avoid multiple resets on exit.
Revision Changes Path
1.76 +40 -27
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.75
retrieving revision 1.76
diff -u -r1.75 -r1.76
--- TransformerImpl.java 2001/01/11 05:05:31 1.75
+++ TransformerImpl.java 2001/01/24 16:13:05 1.76
@@ -349,6 +349,8 @@
*/
boolean m_isTransformDone = false;
+ private boolean m_hasBeenReset = false;
+
//==========================================================
// SECTION: Constructors
//==========================================================
@@ -372,29 +374,33 @@
*/
public void reset()
{
-
- // I need to look more carefully at which of these really
- // needs to be reset.
- m_countersTable = null;
- m_stackGuard = new StackGuard();
-
- getXPathContext().reset();
- getXPathContext().getVarStack().setSize(1);
- m_currentTemplateElements.removeAllElements();
- m_currentMatchTemplates.removeAllElements();
-
- m_resultTreeHandler = null;
- m_keyManager = new KeyManager();
- m_attrSetStack = null;
- m_countersTable = null;
- m_currentTemplateRuleIsNull = new BoolStack();
- m_xmlSource = null;
- m_doc = null;
- m_isTransformDone = false;
- m_inputContentHandler = null;
-
- // For now, reset the document cache each time.
- getXPathContext().getSourceTreeManager().reset();
+ if(!m_hasBeenReset)
+ {
+ m_hasBeenReset = true;
+
+ // I need to look more carefully at which of these really
+ // needs to be reset.
+ m_countersTable = null;
+ m_stackGuard = new StackGuard();
+
+ getXPathContext().reset();
+ getXPathContext().getVarStack().setSize(1);
+ m_currentTemplateElements.removeAllElements();
+ m_currentMatchTemplates.removeAllElements();
+
+ m_resultTreeHandler = null;
+ m_keyManager = new KeyManager();
+ m_attrSetStack = null;
+ m_countersTable = null;
+ m_currentTemplateRuleIsNull = new BoolStack();
+ m_xmlSource = null;
+ m_doc = null;
+ m_isTransformDone = false;
+ m_inputContentHandler = null;
+
+ // For now, reset the document cache each time.
+ getXPathContext().getSourceTreeManager().reset();
+ }
// m_reportInPostExceptionFromThread = false;
}
@@ -649,6 +655,7 @@
}
finally
{
+ // This looks to be redundent to the one done in TransformNode.
reset();
}
}
@@ -1078,7 +1085,6 @@
public void transform(Source xmlSource, Result outputTarget)
throws TransformerException
{
-
ContentHandler handler = createResultContentHandler(outputTarget);
this.setContentHandler(handler);
@@ -1115,6 +1121,7 @@
*/
public void transformNode(Node node) throws TransformerException
{
+ m_hasBeenReset = false;
try
{
@@ -1154,8 +1161,7 @@
if (null != m_resultTreeHandler)
{
m_resultTreeHandler.endDocument();
- }
- this.reset();
+ }
}
catch (Exception se)
{
@@ -1174,6 +1180,10 @@
}
throw new TransformerException(se.getMessage(), se);
}
+ finally
+ {
+ this.reset();
+ }
}
/**
@@ -2704,7 +2714,9 @@
*/
public Thread createTransformThread()
{
- return new Thread(this);
+ Thread t = new Thread(this);
+ // System.out.println("created thread: "+t.getName());
+ return t;
}
/**
@@ -2796,6 +2808,7 @@
*/
public void run()
{
+ m_hasBeenReset = false;
try
{