You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mm...@apache.org on 2001/04/09 23:06:27 UTC
cvs commit: xml-xalan/java/src/org/apache/xalan/transformer TransformSnapshotImpl.java TransformerImpl.java
mmidy 01/04/09 14:06:26
Modified: java/src/org/apache/xalan/transformer
TransformSnapshotImpl.java TransformerImpl.java
Log:
Additional support for tooling. Allow tools to take a snapshot of context and restart execution at that point.
Revision Changes Path
1.2 +27 -23 xml-xalan/java/src/org/apache/xalan/transformer/TransformSnapshotImpl.java
Index: TransformSnapshotImpl.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/TransformSnapshotImpl.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TransformSnapshotImpl.java 2001/03/28 04:42:01 1.1
+++ TransformSnapshotImpl.java 2001/04/09 21:06:25 1.2
@@ -4,6 +4,7 @@
import org.apache.xpath.VariableStack;
import org.apache.xml.utils.NodeVector;
import org.apache.xml.utils.BoolStack;
+import org.apache.xalan.serialize.SerializerToXML;
import java.util.Stack;
import org.xml.sax.helpers.NamespaceSupport;
import java.util.Enumeration;
@@ -86,8 +87,8 @@
/** Queued start element */
QueuedStartElement m_startElement;
-
- TransformSnapshotImpl(TransformerImpl transformer)
+
+ TransformSnapshotImpl(TransformerImpl transformer)
{
try
{
@@ -97,7 +98,7 @@
m_startElement = (QueuedStartElement)rtf.m_startElement.clone();
m_startDoc = (QueuedStartDocument)rtf.m_startDoc.clone();
- m_eventCount = rtf.m_eventCount;
+ m_eventCount = rtf.m_eventCount;
// yuck. No clone. Hope this is good enough.
m_nsSupport = new NamespaceSupport();
@@ -122,8 +123,9 @@
m_currentTemplateRuleIsNull = (BoolStack)transformer.m_currentTemplateRuleIsNull.clone();
m_currentTemplateElements = (NodeVector)transformer.m_currentTemplateElements.clone();
m_currentMatchTemplates = (NodeVector)transformer.m_currentMatchTemplates.clone();
- m_countersTable = (CountersTable)transformer.m_countersTable.clone();
- m_attrSetStack = (Stack)transformer.m_attrSetStack.clone();
+ m_countersTable = (CountersTable)transformer.getCountersTable().clone();
+ if (transformer.m_attrSetStack != null)
+ m_attrSetStack = (Stack)transformer.m_attrSetStack.clone();
}
catch(CloneNotSupportedException cnse)
{
@@ -138,23 +140,24 @@
// Are all these clones deep enough?
ResultTreeHandler rtf = transformer.getResultTreeHandler();
-
- rtf.m_startElement = (QueuedStartElement)m_startElement.clone();
- rtf.m_startDoc = (QueuedStartDocument)m_startDoc.clone();
- rtf.m_eventCount = m_eventCount;
-
- // yuck. No clone. Hope this is good enough.
- rtf.m_nsSupport = new NamespaceSupport();
- Enumeration prefixes = m_nsSupport.getPrefixes();
- while(prefixes.hasMoreElements())
- {
- String prefix = (String)prefixes.nextElement();
- String uri = m_nsSupport.getURI(prefix);
- rtf.m_nsSupport.declarePrefix(prefix, uri);
- }
-
- rtf.m_nsContextPushed = m_nsContextPushed;
-
+ if (rtf != null)
+ {
+ rtf.m_startElement = (QueuedStartElement)m_startElement.clone();
+ rtf.m_startDoc = (QueuedStartDocument)m_startDoc.clone();
+ rtf.m_eventCount = 1; //1 for start document event! m_eventCount;
+
+ // yuck. No clone. Hope this is good enough.
+ rtf.m_nsSupport = new NamespaceSupport();
+ Enumeration prefixes = m_nsSupport.getPrefixes();
+ while(prefixes.hasMoreElements())
+ {
+ String prefix = (String)prefixes.nextElement();
+ String uri = m_nsSupport.getURI(prefix);
+ rtf.m_nsSupport.declarePrefix(prefix, uri);
+ }
+
+ rtf.m_nsContextPushed = m_nsContextPushed;
+ }
XPathContext xpc = transformer.getXPathContext();
xpc.setVarStack((VariableStack)m_variableStacks.clone());
@@ -167,7 +170,8 @@
transformer.m_currentTemplateElements = (NodeVector)m_currentTemplateElements.clone();
transformer.m_currentMatchTemplates = (NodeVector)m_currentMatchTemplates.clone();
transformer.m_countersTable = (CountersTable)m_countersTable.clone();
- transformer.m_attrSetStack = (Stack)m_attrSetStack.clone();
+ if (m_attrSetStack != null)
+ transformer.m_attrSetStack = (Stack)m_attrSetStack.clone();
}
catch(CloneNotSupportedException cnse)
{
1.92 +26 -4 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.91
retrieving revision 1.92
diff -u -r1.91 -r1.92
--- TransformerImpl.java 2001/04/02 10:24:17 1.91
+++ TransformerImpl.java 2001/04/09 21:06:26 1.92
@@ -356,7 +356,14 @@
private boolean m_isTransformDone = false;
private boolean m_hasBeenReset = false;
-
+ private boolean m_shouldReset = true;
+
+ public void setShouldReset(boolean shouldReset)
+ {
+ m_shouldReset = shouldReset;
+ }
+
+
//==========================================================
// SECTION: Constructors
//==========================================================
@@ -380,7 +387,7 @@
*/
public void reset()
{
- if(!m_hasBeenReset)
+ if(!m_hasBeenReset && m_shouldReset)
{
m_hasBeenReset = true;
@@ -504,7 +511,7 @@
if(null == xmlSource)
{
m_errorHandler.fatalError(new TransformerException("Can't transform a Source of type "+
- source.getClass().getName()+"!"));
+ ((source == null)? "null" : source.getClass().getName())+"!"));
}
if (null != xmlSource.getSystemId())
@@ -3006,8 +3013,23 @@
* from the snapshot point.
*/
public void executeFromSnapshot(TransformSnapshot ts)
+ throws TransformerException
+ {
+ ElemTemplateElement template = getMatchedTemplate();
+ Node child = getMatchedNode();
+ pushElemTemplateElement(template); //needed??
+ m_xcontext.pushCurrentNode(child); //needed??
+ this.executeChildTemplates(template, child, null, true); // getResultTreeHandler());
+ }
+
+ /**
+ * This will execute the following XSLT instructions
+ * from the snapshot point.
+ */
+ public void resetToStylesheet(TransformSnapshot ts)
+ //throws TransformerException
{
- ((TransformSnapshotImpl)ts).apply(this);
+ ((TransformSnapshotImpl)ts).apply(this);
}
public void stopTransformation()
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org