santiagopg    2002/06/21 11:00:11

  Modified:    java/src/org/apache/xalan/xsltc/dom MultiDOM.java
  Log:
  Fix for Bugzilla 9068.
  
  Revision  Changes    Path
  1.19      +16 -17    
xml-xalan/java/src/org/apache/xalan/xsltc/dom/MultiDOM.java
  
  Index: MultiDOM.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/MultiDOM.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- MultiDOM.java     21 Jun 2002 15:36:01 -0000      1.18
  +++ MultiDOM.java     21 Jun 2002 18:00:10 -0000      1.19
  @@ -89,12 +89,11 @@
       private Hashtable _documents = new Hashtable();
   
       private final class AxisIterator implements NodeIterator {
  -     // constitutive data
        private final int _axis;
        private final int _type;
  -     // implementation mechanism
  -     private NodeIterator _source;
  +
        private int _mask;
  +     private NodeIterator _source = null;
        
        public AxisIterator(final int axis, final int type) {
            _axis = axis;
  @@ -116,16 +115,19 @@
            _mask = node & SET;
            int dom = node >>> 24;
   
  -         // consider caching these
  -         if (_type == NO_TYPE) {
  -             _source = _adapters[dom].getAxisIterator(_axis);
  -         }
  -         else if (_axis == Axis.CHILD && _type != ELEMENT) {
  -             _source = _adapters[dom].getTypedChildren(_type);
  -         }
  -         else {
  -             _source = _adapters[dom].getTypedAxisIterator(_axis, _type);
  +         // Get a new source for the first time only
  +         if (_source == null) {
  +             if (_type == NO_TYPE) {
  +                 _source = _adapters[dom].getAxisIterator(_axis);
  +             }
  +             else if (_axis == Axis.CHILD && _type != ELEMENT) {
  +                 _source = _adapters[dom].getTypedChildren(_type);
  +             }
  +             else {
  +                 _source = _adapters[dom].getTypedAxisIterator(_axis, _type);
  +             }
            }
  +
            _source.setStartNode(node & CLR);
            return this;
        }
  @@ -144,10 +146,7 @@
        }
       
        public boolean isReverse() {
  -         if (_source == null)
  -             return(false);
  -         else
  -             return _source.isReverse();
  +         return (_source == null) ? false : _source.isReverse();
        }
       
        public void setMark() {
  
  
  

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

Reply via email to