sboag       01/07/06 11:29:17

  Modified:    java/src/org/apache/xpath/axes ChildTestIterator.java
                        OneStepIterator.java
               java/src/org/apache/xpath/functions FuncExtFunction.java
  Log:
  Fix for John G. for the SQL extension: handle return types of
  DTM and DTMAxisIterator.
  
  Revision  Changes    Path
  1.10      +19 -0     xml-xalan/java/src/org/apache/xpath/axes/ChildTestIterator.java
  
  Index: ChildTestIterator.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/axes/ChildTestIterator.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ChildTestIterator.java    2001/06/12 19:16:15     1.9
  +++ ChildTestIterator.java    2001/07/06 18:29:17     1.10
  @@ -117,6 +117,25 @@
     }
     
     /**
  +   * Create a ChildTestIterator object.
  +   *
  +   * @param compiler A reference to the Compiler that contains the op map.
  +   * @param opPos The position within the op map, which contains the
  +   * location path expression for this itterator.
  +   *
  +   * @throws javax.xml.transform.TransformerException
  +   */
  +  ChildTestIterator(DTMAxisTraverser traverser)
  +          throws javax.xml.transform.TransformerException
  +  {
  +
  +    super(null);
  +
  +    m_traverser = traverser;
  +  }
  +
  +  
  +  /**
      *  Get a cloned Iterator that is reset to the beginning
      *  of the query.
      * 
  
  
  
  1.3       +19 -1     xml-xalan/java/src/org/apache/xpath/axes/OneStepIterator.java
  
  Index: OneStepIterator.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/axes/OneStepIterator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- OneStepIterator.java      2001/06/12 19:16:19     1.2
  +++ OneStepIterator.java      2001/07/06 18:29:17     1.3
  @@ -47,6 +47,23 @@
     }
     
     /**
  +   * Create a OneStepIterator object.
  +   *
  +   * @param compiler A reference to the Compiler that contains the op map.
  +   * @param opPos The position within the op map, which contains the
  +   * location path expression for this itterator.
  +   *
  +   * @throws javax.xml.transform.TransformerException
  +   */
  +  public OneStepIterator(DTMAxisIterator iterator)
  +          throws javax.xml.transform.TransformerException
  +  {
  +    super(null);
  +    
  +    m_iterator = iterator;
  +  }
  +  
  +  /**
      * Initialize the context values for this expression
      * after it is cloned.
      *
  @@ -56,7 +73,8 @@
     public void setRoot(int context, Object environment)
     {
       super.setRoot(context, environment);
  -    m_iterator = m_cdtm.getAxisIterator(m_axis);
  +    if(m_axis > -1)
  +      m_iterator = m_cdtm.getAxisIterator(m_axis);
       m_iterator.setStartNode(m_context);
     }
     
  
  
  
  1.12      +16 -0     
xml-xalan/java/src/org/apache/xpath/functions/FuncExtFunction.java
  
  Index: FuncExtFunction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xpath/functions/FuncExtFunction.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- FuncExtFunction.java      2001/06/15 05:15:41     1.11
  +++ FuncExtFunction.java      2001/07/06 18:29:17     1.12
  @@ -68,6 +68,9 @@
   import org.w3c.dom.DocumentFragment;
   import org.w3c.dom.traversal.NodeIterator;
   
  +import org.apache.xml.dtm.*;
  +import org.apache.xpath.axes.*;
  +
   /**
    * <meta name="usage" content="advanced"/>
    * An object of this class represents an extension call expression.  When
  @@ -203,6 +206,19 @@
           int handle = xctxt.getDTMHandleFromNode((DocumentFragment)val);
           
           result = new XRTreeFrag(handle, xctxt);
  +      }
  +      else if (val instanceof DTM)
  +      {
  +        DTM dtm = (DTM)val;
  +        DTMIterator iterator = new DescendantIterator();
  +        iterator.setRoot(dtm.getDocument(), xctxt);
  +        result = new XNodeSet(iterator);
  +      }
  +      else if (val instanceof DTMAxisIterator)
  +      {
  +        DTMAxisIterator iter = (DTMAxisIterator)val;
  +        DTMIterator iterator = new OneStepIterator(iter);
  +        result = new XNodeSet(iterator);
         }
         else if (val instanceof DTMIterator)
         {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to