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