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...@locus.apache.org on 2000/08/07 04:49:53 UTC

cvs commit: xml-xalan/java/src/org/apache/xpath/axes AttributeWalker.java AxesWalker.java ChildWalker.java FilterExprWalker.java

sboag       00/08/06 19:49:53

  Modified:    java/src/org/apache/xpath/axes AttributeWalker.java
                        AxesWalker.java ChildWalker.java
                        FilterExprWalker.java
  Log:
  Minor changes for SQL extension library support... namely the addition of support of the NodeSetFilter interface.
  
  Revision  Changes    Path
  1.2       +1 -1      xml-xalan/java/src/org/apache/xpath/axes/AttributeWalker.java
  
  Index: AttributeWalker.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/axes/AttributeWalker.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AttributeWalker.java	2000/07/05 14:45:11	1.1
  +++ AttributeWalker.java	2000/08/07 02:49:52	1.2
  @@ -89,7 +89,7 @@
     }
     
     /**
  -   *  Moves the <code>TreeWalker</code> to the first visible child of the 
  +   * Moves the <code>TreeWalker</code> to the first visible child of the 
      * current node, and returns the new node. If the current node has no 
      * visible children, returns <code>null</code> , and retains the current 
      * node.
  
  
  
  1.3       +69 -21    xml-xalan/java/src/org/apache/xpath/axes/AxesWalker.java
  
  Index: AxesWalker.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/axes/AxesWalker.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AxesWalker.java	2000/07/30 22:41:48	1.2
  +++ AxesWalker.java	2000/08/07 02:49:53	1.3
  @@ -69,6 +69,7 @@
   import org.apache.xpath.DOMHelper;
   import org.apache.xpath.Expression;
   import org.apache.xpath.patterns.NodeTest;
  +import org.apache.xpath.patterns.NodeTestFilter;
   
   import org.apache.xalan.utils.PrefixResolver;
   
  @@ -111,7 +112,7 @@
     public void init(Compiler compiler, int opPos, int stepType)
       throws org.xml.sax.SAXException
     {
  -    int nodeTestOpPos = compiler.getFirstChildPosOfStep(opPos);
  +    // int nodeTestOpPos = compiler.getFirstChildPosOfStep(opPos);
       m_stepType = stepType;
       switch(stepType)
       {
  @@ -265,6 +266,7 @@
     public void reset()
     {
       setCurrentNode(m_root);
  +    m_isFresh = true;
     }
   
     /**
  @@ -704,14 +706,28 @@
         = new java.util.StringTokenizer(clName, ".");
       while(tokenizer.hasMoreTokens())
         clName = tokenizer.nextToken();
  -    String rootName = (null == m_root) 
  -                      ? "null" 
  -                        : m_root.getNodeName() 
  -                          + "{"+((org.apache.xalan.stree.Child)m_root).getUid()+"}";
  -    String currentNodeName = (null == m_root) 
  -                             ? "null" 
  -                               : m_currentNode.getNodeName()
  -                                + "{"+((org.apache.xalan.stree.Child)m_currentNode).getUid()+"}";
  +    String rootName;
  +    String currentNodeName;
  +    try
  +    {
  +      rootName = (null == m_root) 
  +                 ? "null" 
  +                   : m_root.getNodeName() 
  +                     + "{"+((org.apache.xalan.stree.Child)m_root).getUid()+"}";
  +      currentNodeName = (null == m_root) 
  +                        ? "null" 
  +                          : m_currentNode.getNodeName()
  +                            + "{"+((org.apache.xalan.stree.Child)m_currentNode).getUid()+"}";
  +    }
  +    catch(ClassCastException cce)
  +    {
  +      rootName = (null == m_root) 
  +                 ? "null" 
  +                   : m_root.getNodeName();
  +      currentNodeName = (null == m_root) 
  +                        ? "null" 
  +                          : m_currentNode.getNodeName();
  +    }
   
       return clName+"["+rootName+"]["+currentNodeName+"]";
     }
  @@ -721,9 +737,18 @@
      */
     protected String nodeToString(Node n)
     {
  -    return (null != n) 
  -           ? n.getNodeName()+"{"+ ((org.apache.xalan.stree.Child)n).getUid() + "}"
  -             : "null";
  +    try
  +    {
  +      return (null != n) 
  +             ? n.getNodeName()+"{"+ ((org.apache.xalan.stree.Child)n).getUid() + "}"
  +               : "null";
  +    }
  +    catch(ClassCastException cce)
  +    {
  +      return (null != n) 
  +             ? n.getNodeName()
  +               : "null";
  +    }
     }
       
     /**
  @@ -752,10 +777,16 @@
         System.out.print("\n");
         if(null != m_currentNode)
         {
  -        org.apache.xalan.stree.Child n = ((org.apache.xalan.stree.Child)m_currentNode);
  -        int depth = n.getLevel();
  -        for(int i = 0; i < depth; i++)
  -          System.out.print(" ");
  +        try
  +        {
  +          org.apache.xalan.stree.Child n = ((org.apache.xalan.stree.Child)m_currentNode);
  +          int depth = n.getLevel();
  +          for(int i = 0; i < depth; i++)
  +            System.out.print(" ");
  +        }
  +        catch(ClassCastException cce)
  +        {
  +        }
         }
         System.out.print(s);
       }
  @@ -826,10 +857,16 @@
         System.out.print("\n============================\n");
         if(null != m_currentNode)
         {
  -        org.apache.xalan.stree.Child n = ((org.apache.xalan.stree.Child)m_currentNode);
  -        int depth = n.getLevel();
  -        for(int i = 0; i < depth; i++)
  -          System.out.print("+");
  +        try
  +        {
  +          org.apache.xalan.stree.Child n = ((org.apache.xalan.stree.Child)m_currentNode);
  +          int depth = n.getLevel();
  +          for(int i = 0; i < depth; i++)
  +            System.out.print("+");
  +        }
  +        catch(ClassCastException cce)
  +        {
  +        }
         }
         System.out.print(" "+this.toString()+", "+nodeToString(this.m_currentNode));
         printWaiters();
  @@ -1084,6 +1121,15 @@
     {
       if(m_isFresh)
         m_isFresh = false;
  +    
  +    try
  +    {
  +      // I wish there was a better way to do this...
  +      // System.out.println("\nCalling setNodeTest on: "+(this.getCurrentNode()));
  +      ((NodeTestFilter)this.getCurrentNode()).setNodeTest(this);
  +    }
  +    catch(ClassCastException cce){}
  +    
       Node next = this.firstChild();
   
       while(null == next)
  @@ -1120,7 +1166,7 @@
       if(DEBUG_TRAVERSAL && !m_didDumpAll)
       {
         m_didDumpAll = true;
  -      Node doc = (Node.DOCUMENT_NODE == m_root.getNodeType()) ? m_root : m_root.getOwnerDocument();
  +      // Node doc = (Node.DOCUMENT_NODE == m_root.getNodeType()) ? m_root : m_root.getOwnerDocument();
         // dumpAll(doc, 0);
       }
       
  @@ -1221,6 +1267,7 @@
                 {
                   walker = (AxesWalker)walker.clone();
                   // walker.pushState();
  +                // System.out.println("AxesWalker - Calling setRoot(1)");
                   walker.setRoot(nextNode);
                   if(DEBUG_WAITING)
                     printDebug("clone: "+walker.toString());
  @@ -1231,6 +1278,7 @@
               }
               else
               {
  +              // System.out.println("AxesWalker - Calling setRoot(2)");
                 walker.setRoot(nextNode);
               }
               walker.m_prevWalker = prev;
  
  
  
  1.2       +5 -0      xml-xalan/java/src/org/apache/xpath/axes/ChildWalker.java
  
  Index: ChildWalker.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/axes/ChildWalker.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ChildWalker.java	2000/07/05 14:45:11	1.1
  +++ ChildWalker.java	2000/08/07 02:49:53	1.2
  @@ -80,8 +80,11 @@
      */
     public void setRoot(Node root)
     {
  +    // System.out.println("ChildWalker.setRoot");
       m_nextLevelAmount = root.hasChildNodes() ? 1 : 0;
  +    // System.out.println("Back from calling hasChildNodes");
       super.setRoot(root);
  +    // System.out.println("Exiting ChildWalker.setRoot");
     }
     
     /**
  @@ -94,9 +97,11 @@
      */
     public Node firstChild()
     {
  +    // System.out.println("ChildWalker.firstChild");
       m_nextLevelAmount = 0;
       if(m_root == m_currentNode)
       {
  +      // System.out.println("ChildWalker - Calling getFirstChild");
         return setCurrentIfNotNull(this.m_root.getFirstChild());
       }
       else 
  
  
  
  1.3       +15 -2     xml-xalan/java/src/org/apache/xpath/axes/FilterExprWalker.java
  
  Index: FilterExprWalker.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/axes/FilterExprWalker.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FilterExprWalker.java	2000/07/30 22:41:48	1.2
  +++ FilterExprWalker.java	2000/08/07 02:49:53	1.3
  @@ -65,6 +65,7 @@
   import org.apache.xalan.utils.PrefixResolver;
   import org.apache.xpath.compiler.Compiler;
   import org.apache.xpath.compiler.OpCodes;
  +import org.apache.xpath.patterns.NodeTestFilter;
   
   import java.util.Vector;
   
  @@ -122,7 +123,9 @@
         xctxt.pushCurrentNode(root);
         xctxt.getVarStack().setCurrentStackFrameIndex(m_lpi.getStackFrameIndex());
         xctxt.setNamespaceContext(m_lpi.getPrefixResolver());
  +      // System.out.println("calling m_expr.execute(m_lpi.getXPathContext())");
         XObject obj = m_expr.execute(m_lpi.getXPathContext());
  +      // System.out.println("Back from m_expr.execute(m_lpi.getXPathContext()): "+obj);
         m_nodeSet = (null != obj) ? obj.nodeset() : null;      
         m_peek = null;
       }
  @@ -206,7 +209,16 @@
       else
       {
         if(null != m_nodeSet)
  +      {
  +        try
  +        {
  +          // I wish there was a better way to do this...
  +          ((NodeTestFilter)m_nodeSet).setNodeTest(this);
  +        }
  +        catch(ClassCastException cce){}
  +
           next = m_nodeSet.nextNode();
  +      }
         else
           next = null;
       }
  @@ -219,7 +231,8 @@
       }
       else
       {
  -      m_nextLevelAmount = (next.hasChildNodes() ? 1 : 0);
  +     // System.out.println("FilterExprWalker.getNextNode");
  +     m_nextLevelAmount = (next.hasChildNodes() ? 1 : 0);
         /* ...WAIT TO SEE IF WE REALLY NEED THIS...
         m_peek = m_nodeSet.nextNode();
         if(null == m_peek)
  @@ -231,7 +244,7 @@
         }
         */
       }
  -    
  +    // System.out.println("FilterExprWalker.getNextNode - Returning: "+next);
       return setCurrentIfNotNull(next);
     }