santiagopg    2002/06/21 08:36:01

  Modified:    java/src/org/apache/xalan/xsltc/dom DOMAdapter.java
                        MultiDOM.java
  Log:
  Fixed evaluation of "parent::*" with multiple DOMs.
  
  Revision  Changes    Path
  1.13      +27 -20    
xml-xalan/java/src/org/apache/xalan/xsltc/dom/DOMAdapter.java
  
  Index: DOMAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/DOMAdapter.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- DOMAdapter.java   24 Apr 2002 17:03:16 -0000      1.12
  +++ DOMAdapter.java   21 Jun 2002 15:36:01 -0000      1.13
  @@ -73,6 +73,7 @@
   import org.apache.xalan.xsltc.TransletException;
   
   public final class DOMAdapter implements DOM {
  +
       private final DOMImpl _domImpl;
       private short[] _mapping;
       private short[] _reverse;
  @@ -85,7 +86,8 @@
       
       public DOMAdapter(DOMImpl dom,
                      String[] namesArray,
  -                   String[] namespaceArray) {
  +                   String[] namespaceArray) 
  +    {
        _domImpl = dom;
        _mapping = dom.getMapping(namesArray);
        _reverse = dom.getReverseMapping(namesArray);
  @@ -100,7 +102,9 @@
        _NSreverse = _domImpl.getReverseNamespaceMapping(namespaces);
       }
   
  -    /** returns singleton iterator containg the document root */
  +    /** 
  +      * Returns singleton iterator containg the document root 
  +      */
       public NodeIterator getIterator() {
        return _domImpl.getIterator();
       }
  @@ -124,11 +128,11 @@
       public NodeIterator getChildren(final int node) {
        NodeIterator iterator = _domImpl.getChildren(node);
        if (_filter == null) {
  -         return(iterator.setStartNode(node));
  +         return iterator.setStartNode(node);
        }
        else {
  -         iterator = _domImpl.strippingIterator(iterator,_mapping,_filter);
  -         return(iterator.setStartNode(node));
  +         iterator = _domImpl.strippingIterator(iterator, _mapping, _filter);
  +         return iterator.setStartNode(node);
        }
       }
   
  @@ -138,9 +142,10 @@
       
       public NodeIterator getTypedChildren(final int type) {
        NodeIterator iterator = _domImpl.getTypedChildren(_reverse[type]);
  -     if ((_reverse[type] == DOM.TEXT) && (_filter != null))
  -         iterator = _domImpl.strippingIterator(iterator,_mapping,_filter);
  -     return(iterator);
  +     if (_reverse[type] == DOM.TEXT && _filter != null) {
  +         return _domImpl.strippingIterator(iterator,_mapping,_filter);
  +     }
  +     return iterator;
       }
   
       public NodeIterator getNamespaceAxisIterator(final int axis, final int 
ns) {
  @@ -150,26 +155,27 @@
       public NodeIterator getAxisIterator(final int axis) {
        NodeIterator iterator = _domImpl.getAxisIterator(axis);
        if (_filter != null) {
  -         iterator = _domImpl.strippingIterator(iterator,_mapping,_filter);
  +         return _domImpl.strippingIterator(iterator, _mapping, _filter);
        }
  -     return(iterator);
  +     return iterator;
       }
       
       public NodeIterator getTypedAxisIterator(final int axis, final int type) 
{
        NodeIterator iterator;
   
        if (axis == Axis.NAMESPACE) {
  -         if ((type == NO_TYPE) || (type > _NSreverse.length))
  -             iterator = _domImpl.getAxisIterator(axis);
  -         else
  -             iterator = _domImpl.getTypedAxisIterator(axis,_NSreverse[type]);
  +         iterator = (type == NO_TYPE || type > _NSreverse.length) ?
  +             _domImpl.getAxisIterator(axis) :
  +             _domImpl.getTypedAxisIterator(axis,_NSreverse[type]);
        }
  -     else
  +     else {
            iterator = _domImpl.getTypedAxisIterator(axis, _reverse[type]);
  +     }
        
  -     if ((_reverse[type] == DOM.TEXT) && (_filter != null))
  -         iterator = _domImpl.strippingIterator(iterator,_mapping,_filter);
  -     return(iterator);
  +     if (_reverse[type] == DOM.TEXT && _filter != null) {
  +         iterator = _domImpl.strippingIterator(iterator, _mapping, _filter);
  +     }
  +     return iterator;
       }
   
       public NodeIterator getNthDescendant(int type, int n, boolean 
includeself) {
  @@ -177,7 +183,8 @@
       }
   
       public NodeIterator getNodeValueIterator(NodeIterator iterator, int type,
  -                                          String value, boolean op) {
  +                                          String value, boolean op) 
  +    {
        return _domImpl.getNodeValueIterator(iterator, type, value, op);
       }
   
  
  
  
  1.18      +8 -5      
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.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- MultiDOM.java     24 Apr 2002 17:03:16 -0000      1.17
  +++ MultiDOM.java     21 Jun 2002 15:36:01 -0000      1.18
  @@ -76,6 +76,7 @@
   import org.apache.xalan.xsltc.runtime.BasisLibrary;
   
   public final class MultiDOM implements DOM {
  +
       private static final int NO_TYPE = DOM.FIRST_TYPE - 2;
       private static final int INITIAL_SIZE = 4;
       private static final int CLR = 0x00FFFFFF;
  @@ -116,14 +117,14 @@
            int dom = node >>> 24;
   
            // consider caching these
  -         if ((_type == NO_TYPE) || (_type == DOM.ELEMENT)) {
  +         if (_type == NO_TYPE) {
                _source = _adapters[dom].getAxisIterator(_axis);
            }
  -         else if (_axis == Axis.CHILD) {
  +         else if (_axis == Axis.CHILD && _type != ELEMENT) {
                _source = _adapters[dom].getTypedChildren(_type);
            }
            else {
  -             _source = _adapters[dom].getTypedAxisIterator(_axis,_type);
  +             _source = _adapters[dom].getTypedAxisIterator(_axis, _type);
            }
            _source.setStartNode(node & CLR);
            return this;
  @@ -290,7 +291,9 @@
            return((domIdx.intValue() << 24));
       }
   
  -    /** returns singleton iterator containg the document root */
  +    /** 
  +      * Returns singleton iterator containg the document root 
  +      */
       public NodeIterator getIterator() {
        // main source document @ 0
        return _adapters[0].getIterator();
  
  
  

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

Reply via email to