mmidy       00/10/05 15:58:25

  Modified:    java/src/org/apache/xalan/transformer NodeSorter.java
  Log:
  Make sure nextNode is only called once in sort processing
  
  Revision  Changes    Path
  1.4       +13 -6     
xml-xalan/java/src/org/apache/xalan/transformer/NodeSorter.java
  
  Index: NodeSorter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/NodeSorter.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NodeSorter.java   2000/08/17 21:00:01     1.3
  +++ NodeSorter.java   2000/10/05 22:58:25     1.4
  @@ -60,6 +60,8 @@
   import java.text.NumberFormat;
   import java.text.CollationKey;
   import org.w3c.dom.Node;
  +import org.w3c.dom.traversal.NodeIterator;
  +import org.apache.xpath.axes.ContextNodeList;
   import org.apache.xpath.XPathContext;
   import org.apache.xpath.NodeSet;
   import org.apache.xpath.objects.XObject;
  @@ -419,12 +421,7 @@
                    NodeSortKey k1 = (NodeSortKey)m_keys.elementAt(0);
           XObject r = k1.m_selectPat.execute(m_execContext, node, 
k1.m_namespaceContext);
           
  -        if (r.getType()== XObject.CLASS_NODESET)
  -        {
  -          if (((XNodeSet)r).nodeset().nextNode() == null)
  -            tryNextKey = false;
  -        }
  -        else if (r == null)
  +        if (r == null)
             tryNextKey = false;
           
           double d ;
  @@ -435,7 +432,17 @@
             m_key1Value = new Double(Double.isNaN(d)? 0.0 : d);
           }  
           else
  +        {
             m_key1Value = k1.m_col.getCollationKey(r.str());
  +        }
  +        
  +         if (r.getType()== XObject.CLASS_NODESET)
  +        {
  +           NodeIterator ni = (NodeIterator)r.object();
  +           if(ni instanceof ContextNodeList)
  +             tryNextKey = (((ContextNodeList)ni).getCurrentNode() != null);
  +           // else abdicate... should never happen, but... -sb
  +        }
                  
                    if (m_keys.size()>1)
                    {
  
  
  

Reply via email to