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 2001/01/07 05:20:51 UTC

cvs commit: xml-xalan/java/src/org/apache/xml/utils TreeWalker.java

sboag       01/01/06 20:20:51

  Modified:    java/src/org/apache/xml/utils TreeWalker.java
  Log:
  Take advantage of SaxEventDispatch#dispatchCharactersEvent,
  instead of getting the string value and creating an array from it.
  
  Revision  Changes    Path
  1.5       +21 -7     xml-xalan/java/src/org/apache/xml/utils/TreeWalker.java
  
  Index: TreeWalker.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/utils/TreeWalker.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TreeWalker.java	2000/12/31 09:28:07	1.4
  +++ TreeWalker.java	2001/01/07 04:20:51	1.5
  @@ -194,6 +194,23 @@
   
     /** Flag indicating whether following text to be processed is raw text          */
     boolean nextIsRaw = false;
  +  
  +  /**
  +   * Optimized dispatch of characters.
  +   */
  +  private final void dispatachChars(Node node)
  +     throws org.xml.sax.SAXException
  +  {
  +    if(node.isSupported(org.apache.xalan.stree.SaxEventDispatch.SUPPORTSINTERFACE, "1.0"))
  +    {
  +      ((org.apache.xalan.stree.SaxEventDispatch)node).dispatchCharactersEvent(m_contentHandler);
  +    }
  +    else
  +    {
  +      String data = ((Text) node).getData();
  +      this.m_contentHandler.characters(data.toCharArray(), 0, data.length());
  +    }
  +  }
   
     /**
      * Start processing given node
  @@ -288,7 +305,6 @@
       break;
       case Node.CDATA_SECTION_NODE :
       {
  -      String data = ((Text) node).getData();
         boolean isLexH = (m_contentHandler instanceof LexicalHandler);
         LexicalHandler lh = isLexH
                             ? ((LexicalHandler) this.m_contentHandler) : null;
  @@ -297,8 +313,8 @@
         {
           lh.startCDATA();
         }
  -
  -      this.m_contentHandler.characters(data.toCharArray(), 0, data.length());
  +      
  +      dispatachChars(node);
   
         {
           if (isLexH)
  @@ -317,14 +333,12 @@
           nextIsRaw = false;
   
           m_contentHandler.processingInstruction(javax.xml.transform.Result.PI_DISABLE_OUTPUT_ESCAPING, "");
  -        m_contentHandler.characters(data.toCharArray(), 0,
  -                                         data.length());
  +        dispatachChars(node);
           m_contentHandler.processingInstruction(javax.xml.transform.Result.PI_ENABLE_OUTPUT_ESCAPING, "");
         }
         else
         {
  -        this.m_contentHandler.characters(data.toCharArray(), 0,
  -                                         data.length());
  +        dispatachChars(node);
         }
       }
       break;