You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by sb...@apache.org on 2002/03/24 01:57:54 UTC

cvs commit: xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java

sboag       02/03/23 16:57:54

  Modified:    java/src/org/apache/xalan/templates ElemApplyImport.java
                        ElemApplyTemplates.java ElemAttribute.java
                        ElemCallTemplate.java ElemChoose.java
                        ElemComment.java ElemCopy.java ElemCopyOf.java
                        ElemFallback.java ElemForEach.java ElemIf.java
                        ElemMessage.java ElemNumber.java ElemPI.java
                        ElemParam.java ElemTemplate.java
                        ElemTextLiteral.java ElemUse.java ElemValueOf.java
                        ElemVariable.java
               java/src/org/apache/xalan/trace TraceListenerEx.java
                        TraceManager.java
               java/src/org/apache/xalan/transformer TransformerImpl.java
  Added:       java/src/org/apache/xalan/trace TraceListenerEx2.java
  Log:
  Implemented TraceListenerEx2, which extends TraceListenerEx to add
  the traceEnd event.
  
  Modified all existing templates that call fireTraceEvent to also call
  fireTraceEndEvent at the appropriate time.
  
  Note that there was a bad incompatibility between xsl:for-each and
  xsl:if, which was called whether the test was successful or not.
  With the current logic of xsl:for-each,
  if the node-set is empty trace will not be called at all.
  So I've changed xsl:if to match the xsl:for-each behavior.
  
  Revision  Changes    Path
  1.10      +2 -0      xml-xalan/java/src/org/apache/xalan/templates/ElemApplyImport.java
  
  Index: ElemApplyImport.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemApplyImport.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ElemApplyImport.java	12 Jun 2001 19:15:06 -0000	1.9
  +++ ElemApplyImport.java	24 Mar 2002 00:57:52 -0000	1.10
  @@ -134,6 +134,8 @@
         transformer.getMsgMgr().error(this,
           XSLTErrorResources.ER_NULL_SOURCENODE_APPLYIMPORTS);  //"sourceNode is null in xsl:apply-imports!");
       }
  +    if (TransformerImpl.S_DEBUG)
  +      transformer.getTraceManager().fireTraceEndEvent(this);
     }
   
     /**
  
  
  
  1.21      +9 -3      xml-xalan/java/src/org/apache/xalan/templates/ElemApplyTemplates.java
  
  Index: ElemApplyTemplates.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemApplyTemplates.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- ElemApplyTemplates.java	22 Mar 2002 01:04:40 -0000	1.20
  +++ ElemApplyTemplates.java	24 Mar 2002 00:57:52 -0000	1.21
  @@ -204,9 +204,6 @@
   
       try
       {
  -      if (TransformerImpl.S_DEBUG)
  -        transformer.getTraceManager().fireTraceEvent(this);
  -
         // %REVIEW% Do we need this check??
         //      if (null != sourceNode)
         //      {
  @@ -223,10 +220,16 @@
             transformer.pushMode(m_mode);
           }
         }
  +      if (TransformerImpl.S_DEBUG)
  +        transformer.getTraceManager().fireTraceEvent(this);
  +
         transformSelectedNodes(transformer);
       }
       finally
       {
  +      if (TransformerImpl.S_DEBUG)
  +        transformer.getTraceManager().fireTraceEndEvent(this);
  +
         if (pushMode)
           transformer.popMode();
   
  @@ -422,6 +425,9 @@
             t.execute(transformer);
           }
           
  +        if (TransformerImpl.S_DEBUG)
  +	      transformer.getTraceManager().fireTraceEndEvent(this); 
  +	    
           if(template.m_frameSize > 0)
             vars.unlink();
             
  
  
  
  1.17      +2 -0      xml-xalan/java/src/org/apache/xalan/templates/ElemAttribute.java
  
  Index: ElemAttribute.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemAttribute.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- ElemAttribute.java	22 Mar 2002 01:04:40 -0000	1.16
  +++ ElemAttribute.java	24 Mar 2002 00:57:52 -0000	1.17
  @@ -137,6 +137,8 @@
                                      XSLTErrorResources.WG_ILLEGAL_ATTRIBUTE,
                                      new Object[]{ attrName });
   
  +      if (TransformerImpl.S_DEBUG)
  +        transformer.getTraceManager().fireTraceEndEvent(this);
         return;
   
         // warn(templateChild, sourceNode, "Trying to add attribute after element child has been added, ignoring...");
  
  
  
  1.21      +4 -0      xml-xalan/java/src/org/apache/xalan/templates/ElemCallTemplate.java
  
  Index: ElemCallTemplate.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemCallTemplate.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- ElemCallTemplate.java	22 Mar 2002 01:04:40 -0000	1.20
  +++ ElemCallTemplate.java	24 Mar 2002 00:57:52 -0000	1.21
  @@ -293,6 +293,10 @@
         transformer.getMsgMgr().error(this, XSLTErrorResources.ER_TEMPLATE_NOT_FOUND,
                                       new Object[]{ m_templateName });  //"Could not find template named: '"+templateName+"'");
       }
  +    
  +    if (TransformerImpl.S_DEBUG)
  +	  transformer.getTraceManager().fireTraceEndEvent(this); 
  +
     }
     
     /** Vector of xsl:param elements associated with this element. 
  
  
  
  1.14      +8 -0      xml-xalan/java/src/org/apache/xalan/templates/ElemChoose.java
  
  Index: ElemChoose.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemChoose.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ElemChoose.java	22 Mar 2002 01:04:40 -0000	1.13
  +++ ElemChoose.java	24 Mar 2002 00:57:52 -0000	1.14
  @@ -158,8 +158,11 @@
             if (test.bool())
             {
               transformer.getTraceManager().fireTraceEvent(when);
  +            
               transformer.executeChildTemplates(when, true);
   
  +	        transformer.getTraceManager().fireTraceEndEvent(when); 
  +	                  
               return;
             }
   
  @@ -181,6 +184,8 @@
           // xsl:otherwise                
           transformer.executeChildTemplates(childElem, true);
   
  +        if (TransformerImpl.S_DEBUG)
  +	      transformer.getTraceManager().fireTraceEndEvent(childElem); 
           return;
         }
       }
  @@ -188,6 +193,9 @@
       if (!found)
         transformer.getMsgMgr().error(
           this, XSLTErrorResources.ER_CHOOSE_REQUIRES_WHEN);
  +        
  +    if (TransformerImpl.S_DEBUG)
  +	  transformer.getTraceManager().fireTraceEndEvent(this);         
     }
   
     /**
  
  
  
  1.9       +7 -3      xml-xalan/java/src/org/apache/xalan/templates/ElemComment.java
  
  Index: ElemComment.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemComment.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ElemComment.java	12 Jun 2001 19:15:08 -0000	1.8
  +++ ElemComment.java	24 Mar 2002 00:57:52 -0000	1.9
  @@ -115,11 +115,10 @@
             TransformerImpl transformer)
               throws TransformerException
     {
  +    if (TransformerImpl.S_DEBUG)
  +      transformer.getTraceManager().fireTraceEvent(this);
       try
       {
  -      if (TransformerImpl.S_DEBUG)
  -        transformer.getTraceManager().fireTraceEvent(this);
  -
         // Note the content model is:
         // <!ENTITY % instructions "
         // %char-instructions;
  @@ -135,6 +134,11 @@
       catch(org.xml.sax.SAXException se)
       {
         throw new TransformerException(se);
  +    }
  +    finally
  +    {
  +      if (TransformerImpl.S_DEBUG)
  +        transformer.getTraceManager().fireTraceEndEvent(this);
       }
     }
   
  
  
  
  1.15      +9 -6      xml-xalan/java/src/org/apache/xalan/templates/ElemCopy.java
  
  Index: ElemCopy.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemCopy.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ElemCopy.java	12 Jun 2001 19:15:09 -0000	1.14
  +++ ElemCopy.java	24 Mar 2002 00:57:52 -0000	1.15
  @@ -148,6 +148,9 @@
         {
           ResultTreeHandler rthandler = transformer.getResultTreeHandler();
   
  +        if (TransformerImpl.S_DEBUG)
  +          transformer.getTraceManager().fireTraceEvent(this);
  +            
           // TODO: Process the use-attribute-sets stuff
           ClonerToResultTree.cloneToResultTree(sourceNode, nodeType, dtm, 
                                                rthandler, false);
  @@ -163,11 +166,8 @@
             transformer.getResultTreeHandler().endElement(ns, localName,
                                                           dtm.getNodeName(sourceNode));
           }
  -        else
  -        {
  -          if (TransformerImpl.S_DEBUG)
  -            transformer.getTraceManager().fireTraceEvent(this);
  -        }
  +        if (TransformerImpl.S_DEBUG)
  +		  transformer.getTraceManager().fireTraceEndEvent(this);         
         }
         else
         {
  @@ -176,13 +176,16 @@
   
           super.execute(transformer);
           transformer.executeChildTemplates(this, true);
  +
  +        if (TransformerImpl.S_DEBUG)
  +          transformer.getTraceManager().fireTraceEndEvent(this);
         }
       }
       catch(org.xml.sax.SAXException se)
       {
         throw new TransformerException(se);
       }
  -                finally
  +    finally
       {
         xctxt.popCurrentNode();
       }
  
  
  
  1.14      +7 -3      xml-xalan/java/src/org/apache/xalan/templates/ElemCopyOf.java
  
  Index: ElemCopyOf.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemCopyOf.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ElemCopyOf.java	22 Mar 2002 01:04:40 -0000	1.13
  +++ ElemCopyOf.java	24 Mar 2002 00:57:52 -0000	1.14
  @@ -166,12 +166,11 @@
             TransformerImpl transformer)
               throws TransformerException
     {
  +    if (TransformerImpl.S_DEBUG)
  +    	transformer.getTraceManager().fireTraceEvent(this);
   
       try
       {
  -      if (TransformerImpl.S_DEBUG)
  -        transformer.getTraceManager().fireTraceEvent(this);
  -
         XPathContext xctxt = transformer.getXPathContext();
         int sourceNode = xctxt.getCurrentNode();
         XObject value = m_selectExpression.execute(xctxt, sourceNode, this);
  @@ -253,6 +252,11 @@
       catch(org.xml.sax.SAXException se)
       {
         throw new TransformerException(se);
  +    }
  +    finally
  +    {
  +      if (TransformerImpl.S_DEBUG)
  +        transformer.getTraceManager().fireTraceEndEvent(this);
       }
   
     }
  
  
  
  1.12      +2 -0      xml-xalan/java/src/org/apache/xalan/templates/ElemFallback.java
  
  Index: ElemFallback.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemFallback.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ElemFallback.java	12 Jun 2001 19:15:09 -0000	1.11
  +++ ElemFallback.java	24 Mar 2002 00:57:52 -0000	1.12
  @@ -146,6 +146,8 @@
   
         transformer.executeChildTemplates(this, true);
   
  +      if (TransformerImpl.S_DEBUG)
  +	    transformer.getTraceManager().fireTraceEndEvent(this); 
       }
       else
       {
  
  
  
  1.26      +9 -4      xml-xalan/java/src/org/apache/xalan/templates/ElemForEach.java
  
  Index: ElemForEach.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemForEach.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- ElemForEach.java	22 Mar 2002 01:04:40 -0000	1.25
  +++ ElemForEach.java	24 Mar 2002 00:57:52 -0000	1.26
  @@ -291,17 +291,18 @@
     public void execute(TransformerImpl transformer) throws TransformerException
     {
   
  -    transformer.pushCurrentTemplateRuleIsNull(true);
  +    transformer.pushCurrentTemplateRuleIsNull(true);    
  +    if (TransformerImpl.S_DEBUG)
  +      transformer.getTraceManager().fireTraceEvent(this);
   
       try
       {
  -      if (TransformerImpl.S_DEBUG)
  -        transformer.getTraceManager().fireTraceEvent(this);
  -
         transformSelectedNodes(transformer);
       }
       finally
       {
  +      if (TransformerImpl.S_DEBUG)
  +	    transformer.getTraceManager().fireTraceEndEvent(this); 
         transformer.popCurrentTemplateRuleIsNull();
       }
     }
  @@ -440,6 +441,10 @@
             transformer.setCurrentElement(t);
             t.execute(transformer);
           }
  +        
  +        if (TransformerImpl.S_DEBUG)
  +          transformer.getTraceManager().fireTraceEndEvent(this);
  +
   
   	 	// KLUGE: Implement <?xalan:doc_cache_off?> 
   	 	// ASSUMPTION: This will be set only when the XPath was indeed
  
  
  
  1.12      +14 -3     xml-xalan/java/src/org/apache/xalan/templates/ElemIf.java
  
  Index: ElemIf.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemIf.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ElemIf.java	22 Mar 2002 01:04:40 -0000	1.11
  +++ ElemIf.java	24 Mar 2002 00:57:53 -0000	1.12
  @@ -171,9 +171,6 @@
     public void execute(TransformerImpl transformer) throws TransformerException
     {
   
  -    if (TransformerImpl.S_DEBUG)
  -      transformer.getTraceManager().fireTraceEvent(this);
  -
       XPathContext xctxt = transformer.getXPathContext();
       int sourceNode = xctxt.getCurrentNode();
   
  @@ -187,7 +184,20 @@
   
         if (test.bool())
         {
  +      	// Note that there was a bad incompatibility with xsl:if... 
  +      	// which was called whether the test was successful or not.  
  +      	// With the current logic of xsl:for-each, 
  +      	// if the node-set is empty trace will not be called at all.
  +        // So I've changed xsl:if to match the xsl:for-each behavior. 
  +        // -sb
  +
  +        if (TransformerImpl.S_DEBUG)
  +          transformer.getTraceManager().fireTraceEvent(this);
  +
           transformer.executeChildTemplates(this, true);
  +        
  +        if (TransformerImpl.S_DEBUG)
  +          transformer.getTraceManager().fireTraceEndEvent(this);
         }
   
         // I don't think we want this.  -sb
  @@ -199,6 +209,7 @@
       {
         transformer.executeChildTemplates(this, true);
       }
  +    
     }
     
     /**
  
  
  
  1.13      +3 -0      xml-xalan/java/src/org/apache/xalan/templates/ElemMessage.java
  
  Index: ElemMessage.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemMessage.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ElemMessage.java	28 Jul 2001 00:25:58 -0000	1.12
  +++ ElemMessage.java	24 Mar 2002 00:57:53 -0000	1.13
  @@ -166,5 +166,8 @@
       
       if(m_terminate)
         transformer.getErrorListener().fatalError(new TransformerException(XSLMessages.createMessage(XSLTErrorResources.ER_STYLESHEET_DIRECTED_TERMINATION, null))); //"Stylesheet directed termination"));
  +    
  +    if (TransformerImpl.S_DEBUG)
  +	  transformer.getTraceManager().fireTraceEndEvent(this); 
     }
   }
  
  
  
  1.24      +5 -0      xml-xalan/java/src/org/apache/xalan/templates/ElemNumber.java
  
  Index: ElemNumber.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemNumber.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- ElemNumber.java	22 Mar 2002 01:04:40 -0000	1.23
  +++ ElemNumber.java	24 Mar 2002 00:57:53 -0000	1.24
  @@ -559,6 +559,11 @@
       {
         throw new TransformerException(se);
       }
  +    finally
  +    {
  +      if (TransformerImpl.S_DEBUG)
  +	    transformer.getTraceManager().fireTraceEndEvent(this); 
  +    }
     }
   
     /**
  
  
  
  1.12      +3 -0      xml-xalan/java/src/org/apache/xalan/templates/ElemPI.java
  
  Index: ElemPI.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemPI.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ElemPI.java	15 Jun 2001 05:13:55 -0000	1.11
  +++ ElemPI.java	24 Mar 2002 00:57:53 -0000	1.12
  @@ -203,6 +203,9 @@
       {
         throw new TransformerException(se);
       }
  +    
  +    if (TransformerImpl.S_DEBUG)
  +      transformer.getTraceManager().fireTraceEndEvent(this);
     }
   
     /**
  
  
  
  1.12      +3 -0      xml-xalan/java/src/org/apache/xalan/templates/ElemParam.java
  
  Index: ElemParam.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemParam.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ElemParam.java	12 Jun 2001 19:15:10 -0000	1.11
  +++ ElemParam.java	24 Mar 2002 00:57:53 -0000	1.12
  @@ -163,6 +163,9 @@
         // transformer.getXPathContext().getVarStack().pushVariable(m_qname, var);
         transformer.getXPathContext().getVarStack().setLocalVariable(m_index, var);
       }
  +    
  +    if (TransformerImpl.S_DEBUG)
  +      transformer.getTraceManager().fireTraceEndEvent(this);
     }
     
   }
  
  
  
  1.15      +6 -3      xml-xalan/java/src/org/apache/xalan/templates/ElemTemplate.java
  
  Index: ElemTemplate.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemTemplate.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ElemTemplate.java	23 Jan 2002 22:53:46 -0000	1.14
  +++ ElemTemplate.java	24 Mar 2002 00:57:53 -0000	1.15
  @@ -420,12 +420,12 @@
             TransformerImpl transformer)
               throws TransformerException
     {
  -    if (TransformerImpl.S_DEBUG)
  -      transformer.getTraceManager().fireTraceEvent(this);
  -
       XPathContext xctxt = transformer.getXPathContext();      
       xctxt.pushRTFContext();
   
  +    if (TransformerImpl.S_DEBUG)
  +      transformer.getTraceManager().fireTraceEvent(this);
  +
         // %REVIEW% commenting out of the code below.
   //    if (null != sourceNode)
   //    {
  @@ -439,6 +439,9 @@
   //
   //      //"sourceNode is null in handleApplyTemplatesInstruction!");
   //    }
  +
  +    if (TransformerImpl.S_DEBUG)
  +      transformer.getTraceManager().fireTraceEndEvent(this);
   
       xctxt.popRTFContext();  
       }
  
  
  
  1.10      +7 -3      xml-xalan/java/src/org/apache/xalan/templates/ElemTextLiteral.java
  
  Index: ElemTextLiteral.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemTextLiteral.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ElemTextLiteral.java	12 Jun 2001 19:15:11 -0000	1.9
  +++ ElemTextLiteral.java	24 Mar 2002 00:57:53 -0000	1.10
  @@ -242,11 +242,10 @@
             TransformerImpl transformer)
               throws TransformerException
     {
  +    if (TransformerImpl.S_DEBUG)
  +      transformer.getTraceManager().fireTraceEvent(this);
       try
       {
  -      if (TransformerImpl.S_DEBUG)
  -        transformer.getTraceManager().fireTraceEvent(this);
  -
         ResultTreeHandler rth = transformer.getResultTreeHandler();
         if (m_disableOutputEscaping)
         {
  @@ -263,6 +262,11 @@
       catch(SAXException se)
       {
         throw new TransformerException(se);
  +    }
  +    finally
  +    {
  +      if (TransformerImpl.S_DEBUG)
  +        transformer.getTraceManager().fireTraceEndEvent(this);
       }
     }
   }
  
  
  
  1.13      +3 -0      xml-xalan/java/src/org/apache/xalan/templates/ElemUse.java
  
  Index: ElemUse.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemUse.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ElemUse.java	17 Sep 2001 20:20:51 -0000	1.12
  +++ ElemUse.java	24 Mar 2002 00:57:53 -0000	1.13
  @@ -242,5 +242,8 @@
         applyAttrSets(transformer, getStylesheetRoot(),
                       m_attributeSetsNames);
       }
  +    
  +    if (TransformerImpl.S_DEBUG)
  +	  transformer.getTraceManager().fireTraceEndEvent(this); 
     }
   }
  
  
  
  1.18      +9 -4      xml-xalan/java/src/org/apache/xalan/templates/ElemValueOf.java
  
  Index: ElemValueOf.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemValueOf.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- ElemValueOf.java	22 Mar 2002 01:04:40 -0000	1.17
  +++ ElemValueOf.java	24 Mar 2002 00:57:53 -0000	1.18
  @@ -260,13 +260,13 @@
       XPathContext xctxt = transformer.getXPathContext();
       ResultTreeHandler rth = transformer.getResultTreeHandler();
   
  +    if (TransformerImpl.S_DEBUG)
  +      transformer.getTraceManager().fireTraceEvent(this);
  +
       try
       {
  -      if (TransformerImpl.S_DEBUG)
  -        transformer.getTraceManager().fireTraceEvent(this);
  -
         // Optimize for "."
  -      if (false && m_isDot &&!TransformerImpl.S_DEBUG)
  +      if (false && m_isDot && !TransformerImpl.S_DEBUG)
         {
           int child = xctxt.getCurrentNode();
           DTM dtm = xctxt.getDTM(child);
  @@ -333,6 +333,11 @@
       catch (SAXException se)
       {
         throw new TransformerException(se);
  +    }
  +    finally
  +    {
  +      if (TransformerImpl.S_DEBUG)
  +	    transformer.getTraceManager().fireTraceEndEvent(this); 
       }
     }
   
  
  
  
  1.16      +3 -0      xml-xalan/java/src/org/apache/xalan/templates/ElemVariable.java
  
  Index: ElemVariable.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemVariable.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- ElemVariable.java	22 Mar 2002 01:04:40 -0000	1.15
  +++ ElemVariable.java	24 Mar 2002 00:57:53 -0000	1.16
  @@ -284,6 +284,9 @@
   
       // transformer.getXPathContext().getVarStack().pushVariable(m_qname, var);
       transformer.getXPathContext().getVarStack().setLocalVariable(m_index, var);
  +    
  +    if (TransformerImpl.S_DEBUG)
  +	  transformer.getTraceManager().fireTraceEndEvent(this);         
     }
   
     /**
  
  
  
  1.3       +57 -1     xml-xalan/java/src/org/apache/xalan/trace/TraceListenerEx.java
  
  Index: TraceListenerEx.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/trace/TraceListenerEx.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TraceListenerEx.java	12 Jun 2001 19:15:24 -0000	1.2
  +++ TraceListenerEx.java	24 Mar 2002 00:57:53 -0000	1.3
  @@ -1,3 +1,59 @@
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2002 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Xalan" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation and was
  + * originally based on software copyright (c) 1999, Lotus
  + * Development Corporation., http://www.lotus.com.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.xalan.trace;
   
   /**
  @@ -17,4 +73,4 @@
      */
     public void selectEnd(EndSelectionEvent ev) throws javax.xml.transform.TransformerException;
   
  -}
  \ No newline at end of file
  +}
  
  
  
  1.11      +48 -0     xml-xalan/java/src/org/apache/xalan/trace/TraceManager.java
  
  Index: TraceManager.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/trace/TraceManager.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- TraceManager.java	22 Mar 2002 01:04:41 -0000	1.10
  +++ TraceManager.java	24 Mar 2002 00:57:53 -0000	1.11
  @@ -178,6 +178,54 @@
     }
   
     /**
  +   * Fire a end trace event, after all children of an element have been
  +   * executed.
  +   *
  +   * @param sourceNode Current source node
  +   * @param mode Template mode
  +   * @param styleNode Stylesheet template node
  +   */
  +  public void fireTraceEndEvent(ElemTemplateElement styleNode)
  +  {
  +
  +    if (hasTraceListeners())
  +    {
  +      int sourceNode = m_transformer.getXPathContext().getCurrentNode();
  +      Node source = m_transformer.getXPathContext().getDTM(
  +        sourceNode).getNode(sourceNode);
  +
  +      fireTraceEndEvent(new TracerEvent(m_transformer, source,
  +                     m_transformer.getMode(),  /*sourceNode, mode,*/
  +                                     styleNode));
  +    }
  +  }
  +
  +  /**
  +   * Fire a trace event.
  +   *
  +   * @param te Trace event to fire
  +   */
  +  public void fireTraceEndEvent(TracerEvent te)
  +  {
  +
  +    if (hasTraceListeners())
  +    {
  +      int nListeners = m_traceListeners.size();
  +
  +      for (int i = 0; i < nListeners; i++)
  +      {
  +        TraceListener tl = (TraceListener) m_traceListeners.elementAt(i);
  +        if(tl instanceof TraceListenerEx2)
  +        {
  +          ((TraceListenerEx2)tl).traceEnd(te);
  +        }
  +      }
  +    }
  +  }
  +
  +
  +
  +  /**
      * Fire a trace event.
      *
      * @param te Trace event to fire
  
  
  
  1.1                  xml-xalan/java/src/org/apache/xalan/trace/TraceListenerEx2.java
  
  Index: TraceListenerEx2.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 1999, Lotus
   * Development Corporation., http://www.lotus.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.xalan.trace;
  
  /**
   * <meta name="usage" content="advanced"/>
   * Extends TraceListenerEx but adds a EndTrace event.
   */
  public interface TraceListenerEx2 extends TraceListenerEx
  {
    /**
     * Method that is called when a trace event occurs.
     * The method is blocking.  It must return before processing continues.
     *
     * @param ev the trace event.
     */
    public void traceEnd(TracerEvent ev);
  }
  
  
  
  1.126     +5 -2      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.125
  retrieving revision 1.126
  diff -u -r1.125 -r1.126
  --- TransformerImpl.java	4 Mar 2002 18:21:31 -0000	1.125
  +++ TransformerImpl.java	24 Mar 2002 00:57:53 -0000	1.126
  @@ -2090,8 +2090,8 @@
   
           // Fire a trace event for the template.
            
  -                if (TransformerImpl.S_DEBUG)
  -                  getTraceManager().fireTraceEvent(template);
  +        if (TransformerImpl.S_DEBUG)
  +          getTraceManager().fireTraceEvent(template);
           // And execute the child templates.
           // 9/11/00: If template has been compiled, hand off to it
           // since much (most? all?) of the processing has been inlined.
  @@ -2105,6 +2105,9 @@
           // m_xcontext.getVarStack().link();
           m_xcontext.getVarStack().link(template.m_frameSize);
           executeChildTemplates(template, true);
  +        
  +        if (TransformerImpl.S_DEBUG)
  +          getTraceManager().fireTraceEndEvent(template);
         }
       }
       catch (org.xml.sax.SAXException se)
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org