zongaro     2002/09/17 14:09:00

  Modified:    java/src/org/apache/xalan/xsltc/dom Tag: XSLTC_DTM
                        MultiDOM.java
  Log:
  Work around problem with document('') function when transformation happens
  through a TransformerHandler.  (See constructor for more details.)  Also, 
fixed
  some spacing problems.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.16.10.4 +349 -294  
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.16.10.3
  retrieving revision 1.16.10.4
  diff -u -r1.16.10.3 -r1.16.10.4
  --- MultiDOM.java     24 Aug 2002 11:33:23 -0000      1.16.10.3
  +++ MultiDOM.java     17 Sep 2002 21:09:00 -0000      1.16.10.4
  @@ -96,84 +96,88 @@
       private Hashtable _documents = new Hashtable();
   
       private final class AxisIterator extends DTMAxisIteratorBase {
  -     // constitutive data
  -     private final int _axis;
  -     private final int _type;
  -     // implementation mechanism
  -     private DTMAxisIterator _source;
  -     private int _mask;
  -     
  -     public AxisIterator(final int axis, final int type) {
  -         _axis = axis;
  -         _type = type;
  -     }
  -     
  -     public int next() {
  -         if (_source == null) return(END);
  -         return _source.next();
  -     }
  -     
  -
  -     public void setRestartable(boolean flag) {
  -         _source.setRestartable(flag);
  -     }
  -
  -     public DTMAxisIterator setStartNode(final int node) {
  -         if (node == DTM.NULL) return this;
  -             
  -         int nodeid = getNodeIdent(node); 
  -         final int mask = nodeid & SET;
  -         int dom = getDTMId(node);
  +        // constitutive data
  +        private final int _axis;
  +        private final int _type;
  +        // implementation mechanism
  +        private DTMAxisIterator _source;
  +        private int _mask;
  +
  +        public AxisIterator(final int axis, final int type) {
  +            _axis = axis;
  +            _type = type;
  +        }
  +
  +        public int next() {
  +            if (_source == null) {
  +                return(END);
  +            }
  +            return _source.next();
  +        }
  +
  +
  +        public void setRestartable(boolean flag) {
  +            _source.setRestartable(flag);
  +        }
  +
  +        public DTMAxisIterator setStartNode(final int node) {
  +            if (node == DTM.NULL) {
  +                return this;
  +            }
  +
  +            int nodeid = getNodeIdent(node); 
  +            final int mask = nodeid & SET;
  +            int dom = getDTMId(node);
   
               // Get a new source first time and when mask changes
  -         if (_source == null || _mask != mask) {
  -             if (_type == NO_TYPE) {
  -                 _source = _adapters[dom].getAxisIterator(_axis);
  -             }
  -             else if (_axis == Axis.CHILD && _type != DTM.ELEMENT_NODE) {
  -                 _source = _adapters[dom].getTypedChildren(_type);
  -             }
  -             else {
  -                 _source = _adapters[dom].getTypedAxisIterator(_axis, _type);
  -             }
  -         }
  -
  -         _mask = mask;
  -         _source.setStartNode(node & CLR);
  -         return this;
  -     }
  -
  -     public DTMAxisIterator reset() {
  -         if (_source != null) _source.reset();
  -         return this;
  -     }
  -    
  -     public int getLast() {
  -         return _source.getLast();
  -     }
  -    
  -     public int getPosition() {
  -         return _source.getPosition();
  -     }
  -    
  -     public boolean isReverse() {
  -         return (_source == null) ? false : _source.isReverse();
  -     }
  -    
  -     public void setMark() {
  -         _source.setMark();
  -     }
  -    
  -     public void gotoMark() {
  -         _source.gotoMark();
  -     }
  -    
  -     public DTMAxisIterator cloneIterator() {
  -         final AxisIterator clone = new AxisIterator(_axis, _type);
  -         clone._source = _source.cloneIterator();
  -         clone._mask = _mask;
  -         return clone;
  -     }
  +            if (_source == null || _mask != mask) {
  +                if (_type == NO_TYPE) {
  +                    _source = _adapters[dom].getAxisIterator(_axis);
  +                } else if (_axis == Axis.CHILD && _type != DTM.ELEMENT_NODE) 
{
  +                    _source = _adapters[dom].getTypedChildren(_type);
  +                } else {
  +                    _source = _adapters[dom].getTypedAxisIterator(_axis, 
_type);
  +                }
  +            }
  +
  +            _mask = mask;
  +            _source.setStartNode(node & CLR);
  +            return this;
  +        }
  +
  +        public DTMAxisIterator reset() {
  +            if (_source != null) {
  +                _source.reset();
  +            }
  +            return this;
  +        }
  +    
  +        public int getLast() {
  +            return _source.getLast();
  +        }
  +
  +        public int getPosition() {
  +            return _source.getPosition();
  +        }
  +    
  +        public boolean isReverse() {
  +            return (_source == null) ? false : _source.isReverse();
  +        }
  +    
  +        public void setMark() {
  +            _source.setMark();
  +        }
  +    
  +        public void gotoMark() {
  +            _source.gotoMark();
  +        }
  +    
  +        public DTMAxisIterator cloneIterator() {
  +            final AxisIterator clone = new AxisIterator(_axis, _type);
  +            clone._source = _source.cloneIterator();
  +            clone._mask = _mask;
  +            return clone;
  +        }
   
       } // end of AxisIterator
   
  @@ -184,374 +188,425 @@
        */
       private final class NodeValueIterator extends DTMAxisIteratorBase {
   
  -     private DTMAxisIterator _source;
  -     private String _value;
  -     private boolean _op;
  -     private final boolean _isReverse;
  -     private int _returnType = RETURN_PARENT;
  -
  -     public NodeValueIterator(DTMAxisIterator source, int returnType,
  -                              String value, boolean op) {
  -         _source = source;
  -         _returnType = returnType;
  -         _value = value;
  -         _op = op;
  -         _isReverse = source.isReverse();
  -     }
  -
  -     public boolean isReverse() {
  -         return _isReverse;
  -     }
  -    
  -     public DTMAxisIterator cloneIterator() {
  -         try {
  -             NodeValueIterator clone = (NodeValueIterator)super.clone();
  -             clone._source = _source.cloneIterator();
  -             clone.setRestartable(false);
  -             return clone.reset();
  -         }
  -         catch (CloneNotSupportedException e) {
  -             BasisLibrary.runTimeError(BasisLibrary.ITERATOR_CLONE_ERR,
  -                                       e.toString());
  -             return null;
  -         }
  -     }
  -
  -
  -     public void setRestartable(boolean isRestartable) {
  -         _isRestartable = isRestartable;
  -         _source.setRestartable(isRestartable);
  -     }
  -
  -     public DTMAxisIterator reset() {
  -         _source.reset();
  -         return resetPosition();
  -     }
  -
  -     public int next() {
  -
  -         int node;
  -         while ((node = _source.next()) != END) {
  -             String val = getNodeValue(node);
  -             if (_value.equals(val) == _op) {
  -                 if (_returnType == RETURN_CURRENT)
  -                     return returnNode(node);
  -                 else
  -                     return returnNode(getParent(node));
  -             }
  -         }
  -         return END;
  -     }
  -
  -     public DTMAxisIterator setStartNode(int node) {
  -         if (_isRestartable) {
  -             _source.setStartNode(_startNode = node); 
  -             return resetPosition();
  -         }
  -         return this;
  -     }
  -
  -     public void setMark() {
  -         _source.setMark();
  -     }
  -
  -     public void gotoMark() {
  -         _source.gotoMark();
  -     }
  +        private DTMAxisIterator _source;
  +        private String _value;
  +        private boolean _op;
  +        private final boolean _isReverse;
  +        private int _returnType = RETURN_PARENT;
  +
  +        public NodeValueIterator(DTMAxisIterator source, int returnType,
  +                                 String value, boolean op) {
  +            _source = source;
  +            _returnType = returnType;
  +            _value = value;
  +            _op = op;
  +            _isReverse = source.isReverse();
  +        }
  +
  +        public boolean isReverse() {
  +            return _isReverse;
  +        }
  +    
  +        public DTMAxisIterator cloneIterator() {
  +            try {
  +                NodeValueIterator clone = (NodeValueIterator)super.clone();
  +                clone._source = _source.cloneIterator();
  +                clone.setRestartable(false);
  +                return clone.reset();
  +            }
  +            catch (CloneNotSupportedException e) {
  +                BasisLibrary.runTimeError(BasisLibrary.ITERATOR_CLONE_ERR,
  +                                          e.toString());
  +                return null;
  +            }
  +        }
  +
  +
  +        public void setRestartable(boolean isRestartable) {
  +            _isRestartable = isRestartable;
  +            _source.setRestartable(isRestartable);
  +        }
  +
  +        public DTMAxisIterator reset() {
  +            _source.reset();
  +            return resetPosition();
  +        }
  +
  +        public int next() {
  +
  +            int node;
  +            while ((node = _source.next()) != END) {
  +                String val = getNodeValue(node);
  +                if (_value.equals(val) == _op) {
  +                    if (_returnType == RETURN_CURRENT)
  +                        return returnNode(node);
  +                    else
  +                        return returnNode(getParent(node));
  +                }
  +            }
  +            return END;
  +        }
  +
  +        public DTMAxisIterator setStartNode(int node) {
  +            if (_isRestartable) {
  +                _source.setStartNode(_startNode = node); 
  +                return resetPosition();
  +            }
  +            return this;
  +        }
  +
  +        public void setMark() {
  +            _source.setMark();
  +        }
  +
  +        public void gotoMark() {
  +            _source.gotoMark();
  +        }
       }                       
   
       public MultiDOM(DOM main) {
  -     _size = INITIAL_SIZE;
  -     _free = 1;
  -     _adapters = new DOM[INITIAL_SIZE];
  -     _adapters[0] = main;
  -     addDOMAdapter((DOMAdapter) main);
  +        _size = INITIAL_SIZE;
  +        _free = 1;
  +        _adapters = new DOM[INITIAL_SIZE];
  +        _adapters[0] = main;
  +
  +        // %HZ% %REVISIT% Is this the right thing to do here?  In the old
  +        // %HZ% %REVISIT% version, the main document did not get added 
through
  +        // %HZ% %REVISIT% a call to addDOMAdapter, which meant it couldn't be
  +        // %HZ% %REVISIT% found by a call to getDocumentMask.  The problem is
  +        // %HZ% %REVISIT% TransformerHandler is typically constructed with a
  +        // %HZ% %REVISIT% system ID equal to the stylesheet's URI; with SAX
  +        // %HZ% %REVISIT% input, it ends up giving that URI to the document.
  +        // %HZ% %REVISIT% Then, any references to document('') are resolved
  +        // %HZ% %REVISIT% using the stylesheet's URI.
  +        // %HZ% %REVISIT% MultiDOM.getDocumentMask is called to verify that
  +        // %HZ% %REVISIT% a document associated with that URI has not been
  +        // %HZ% %REVISIT% encountered, and that method ends up returning the
  +        // %HZ% %REVISIT% mask of the main document, when what we really what
  +        // %HZ% %REVISIT% is to read the stylesheet itself!
  +        addDOMAdapter((DOMAdapter) main, false);
       }
   
       public int nextMask() {
  -     return(_free << 24);
  +        return(_free << 24);
       }
   
       public void setupMapping(String[] names, String[] namespaces) {
  -     // This method only has a function in DOM adapters
  +        // This method only has a function in DOM adapters
       }
   
       public int addDOMAdapter(DOMAdapter dom) {
  -     // Add the DOM adapter to the array of DOMs
  -     DTMManager dtmManager = 
((DTMDefaultBase)((DOMAdapter)dom).getDOMImpl()).m_mgr;
  -    final int domNo = 
dtmManager.getDTMIdentity((DTM)((DOMAdapter)dom).getDOMImpl()) >>> 
DTMManager.IDENT_DTM_NODE_BITS;
  +        return addDOMAdapter(dom, true);
  +    }
  +
  +    private int addDOMAdapter(DOMAdapter dom, boolean indexByURI) {
  +        // Add the DOM adapter to the array of DOMs
  +        DTMManager dtmManager =
  +                      ((DTMDefaultBase)((DOMAdapter)dom).getDOMImpl()).m_mgr;
  +        final int domNo =
  +             dtmManager.getDTMIdentity((DTM)((DOMAdapter)dom).getDOMImpl())
  +                   >>> DTMManager.IDENT_DTM_NODE_BITS;
     
  -     //final int domNo = _free++;
  -     if (domNo == _size) {
  -         final DOMAdapter[] newArray = new DOMAdapter[_size *= 2];
  -         System.arraycopy(_adapters, 0, newArray, 0, domNo);
  -         _adapters = newArray;
  -     }
  -     _adapters[domNo] = dom;
  -
  -     // Store reference to document (URI) in hashtable
  -     String uri = dom.getDocumentURI(0);
  -     _documents.put(uri, new Integer(domNo));
  -     
  -     // Store mask in DOMAdapter
  -     dom.setMultiDOMMask(domNo << 24);
  -     return (domNo << 24);
  +        if (domNo == _size) {
  +            final DOMAdapter[] newArray = new DOMAdapter[_size *= 2];
  +            System.arraycopy(_adapters, 0, newArray, 0, domNo);
  +            _adapters = newArray;
  +        }
  +        _adapters[domNo] = dom;
  +
  +        // Store reference to document (URI) in hashtable
  +        if (indexByURI) {
  +            String uri = dom.getDocumentURI(0);
  +            _documents.put(uri, new Integer(domNo));
  +        }
  +        
  +        // Store mask in DOMAdapter
  +        dom.setMultiDOMMask(domNo << 24);
  +        return (domNo << 24);
       }
  -    
  +        
       public int getDocumentMask(String uri) {
  -     Integer domIdx = (Integer)_documents.get(uri);
  -     if (domIdx == null)
  -         return(-1);
  -     else
  -         return((domIdx.intValue() << 24));
  +        Integer domIdx = (Integer)_documents.get(uri);
  +        if (domIdx == null) {
  +            return(-1);
  +        } else {
  +            return((domIdx.intValue() << 24));
  +        }
       }
       
       public DOM getDOMAdapter(String uri) {
  -     Integer domIdx = (Integer)_documents.get(uri);
  -     if (domIdx == null)
  -         return(null);
  -     else
  -         return(_adapters[domIdx.intValue()]);
  +        Integer domIdx = (Integer)_documents.get(uri);
  +        if (domIdx == null) {
  +            return(null);
  +        } else {
  +            return(_adapters[domIdx.intValue()]);
  +        }
       }
       
       public int getDocument() 
       {
  -      return _adapters[0].getDocument();
  +        return _adapters[0].getDocument();
       }
   
       /** 
         * Returns singleton iterator containing the document root 
         */
       public DTMAxisIterator getIterator() {
  -     // main source document @ 0
  -     return _adapters[0].getIterator();
  +        // main source document @ 0
  +        return _adapters[0].getIterator();
       }
       
       public String getStringValue() {
  -     return _adapters[0].getStringValue();
  +        return _adapters[0].getStringValue();
       }
   
       public String getTreeString() {
  -     return _adapters[0].getTreeString();
  +        return _adapters[0].getTreeString();
       }
       
       public DTMAxisIterator getChildren(final int node) {
  -     return _adapters[getDTMId(node)].getChildren(node);
  -     /*(node & SET) == 0
  -         ? _adapters[0].getChildren(node)
  -         : getAxisIterator(Axis.CHILD).setStartNode(node);*/
  +        return _adapters[getDTMId(node)].getChildren(node);
       }
       
       public DTMAxisIterator getTypedChildren(final int type) {
  -     return new AxisIterator(Axis.CHILD, type);
  +        return new AxisIterator(Axis.CHILD, type);
       }
       
       public DTMAxisIterator getAxisIterator(final int axis) {
  -     return new AxisIterator(axis, NO_TYPE);
  +        return new AxisIterator(axis, NO_TYPE);
       }
       
  -    public DTMAxisIterator getTypedAxisIterator(final int axis, final int 
type) {
  -     return new AxisIterator(axis, type);
  +    public DTMAxisIterator getTypedAxisIterator(final int axis, final int 
type)
  +    {
  +        return new AxisIterator(axis, type);
       }
   
  -    public DTMAxisIterator getNthDescendant(int node, int n, boolean 
includeself) {
  -     return _adapters[getDTMId(node)].getNthDescendant(node & 
CLR,n,includeself);
  +    public DTMAxisIterator getNthDescendant(int node, int n,
  +                                            boolean includeself)
  +    {
  +        return _adapters[getDTMId(node)].getNthDescendant(node & CLR,n,
  +                                                          includeself);
       }
   
  -    public DTMAxisIterator getNodeValueIterator(DTMAxisIterator iterator, 
int type,
  -                                          String value, boolean op) {
  -     return(new NodeValueIterator(iterator, type, value, op));
  +    public DTMAxisIterator getNodeValueIterator(DTMAxisIterator iterator,
  +                                                int type, String value,
  +                                                boolean op)
  +    {
  +        return(new NodeValueIterator(iterator, type, value, op));
       }
   
  -    public DTMAxisIterator getNamespaceAxisIterator(final int axis, final 
int ns) {
  -     DTMAxisIterator iterator = 
_adapters[0].getNamespaceAxisIterator(axis,ns);
  -     return(iterator);       
  +    public DTMAxisIterator getNamespaceAxisIterator(final int axis,
  +                                                    final int ns)
  +    {
  +        DTMAxisIterator iterator = 
_adapters[0].getNamespaceAxisIterator(axis,
  +                                                                         ns);
  +        return(iterator);        
       }
   
       public DTMAxisIterator orderNodes(DTMAxisIterator source, int node) {
  -     return _adapters[getDTMId(node)].orderNodes(source, node & CLR);
  +        return _adapters[getDTMId(node)].orderNodes(source, node & CLR);
       }
   
       public int getType(final int node) {
  -     return _adapters[getDTMId(node)].getType(node & CLR);
  +        return _adapters[getDTMId(node)].getType(node & CLR);
       }
   
       public int getNamespaceType(final int node) {
  -     return _adapters[getDTMId(node)].getNamespaceType(node & CLR);
  +        return _adapters[getDTMId(node)].getNamespaceType(node & CLR);
       }
       
       public int getNSType(int node)
      {
  -     return _adapters[getDTMId(node)].getNSType(node & CLR);
  +        return _adapters[getDTMId(node)].getNSType(node & CLR);
      }
       
       public int getParent(final int node) {
  -     if (node == DTM.NULL)
  -     return DTM.NULL;
  -     return _adapters[getDTMId(node)].getParent(node & CLR) | node&SET;
  +        if (node == DTM.NULL) {
  +            return DTM.NULL;
  +        }
  +        return _adapters[getDTMId(node)].getParent(node & CLR) | node&SET;
       }
       
       public int getTypedPosition(int type, int node) {
  -     return _adapters[getDTMId(node)].getTypedPosition(type, node&CLR);
  +        return _adapters[getDTMId(node)].getTypedPosition(type, node&CLR);
       }
   
       public int getTypedLast(int type, int node) {
  -     return _adapters[getDTMId(node)].getTypedLast(type, node&CLR);
  +        return _adapters[getDTMId(node)].getTypedLast(type, node&CLR);
       }
   
       public int getAttributeNode(final int type, final int el) {
  -     if (el == DTM.NULL)
  -     return DTM.NULL;
  -     return _adapters[getDTMId(el)].getAttributeNode(type, el&CLR) | el&SET;
  +        if (el == DTM.NULL) {
  +            return DTM.NULL;
  +        }
  +        return _adapters[getDTMId(el)].getAttributeNode(type, el&CLR) | 
el&SET;
       }
       
       public String getNodeName(final int node) {
  -     if (node == DTM.NULL)
  -     return "";
  -     return _adapters[getDTMId(node)].getNodeName(node & CLR);
  +        if (node == DTM.NULL) {
  +            return "";
  +        }
  +        return _adapters[getDTMId(node)].getNodeName(node & CLR);
       }
       
       public String getNodeNameX(final int node) {
  -     if (node == DTM.NULL)
  -     return "";
  -     return _adapters[getDTMId(node)].getNodeNameX(node & CLR);
  +        if (node == DTM.NULL) {
  +            return "";
  +        }
  +        return _adapters[getDTMId(node)].getNodeNameX(node & CLR);
       }
   
       public String getNamespaceName(final int node) {
  -     if (node == DTM.NULL)
  -     return "";
  -     return _adapters[getDTMId(node)].getNamespaceName(node & CLR);
  +        if (node == DTM.NULL) {
  +            return "";
  +        }
  +        return _adapters[getDTMId(node)].getNamespaceName(node & CLR);
       }
       
       public String getNodeValue(final int node) {
  -     if (node == DTM.NULL)
  -     return "";
  -     return _adapters[getDTMId(node)].getNodeValue(node & CLR);
  +        if (node == DTM.NULL) {
  +            return "";
  +        }
  +        return _adapters[getDTMId(node)].getNodeValue(node & CLR);
       }
       
       public void copy(final int node, TransletOutputHandler handler)
  -     throws TransletException {
  -             if (node != DTM.NULL)
  -     _adapters[getDTMId(node)].copy(node & CLR, handler);
  +        throws TransletException
  +    {
  +        if (node != DTM.NULL) {
  +            _adapters[getDTMId(node)].copy(node & CLR, handler);
  +        }
       }
       
       public void copy(DTMAxisIterator nodes, TransletOutputHandler handler)
  -     throws TransletException {
  -     int node;
  -     while ((node = nodes.next()) != DTM.NULL) {
  -         _adapters[getDTMId(node)].copy(node & CLR, handler);
  -     }
  +            throws TransletException
  +    {
  +        int node;
  +        while ((node = nodes.next()) != DTM.NULL) {
  +            _adapters[getDTMId(node)].copy(node & CLR, handler);
  +        }
       }
   
   
       public String shallowCopy(final int node, TransletOutputHandler handler)
  -     throws TransletException {
  -             if (node == DTM.NULL)
  -     return "";
  -     return _adapters[getDTMId(node)].shallowCopy(node & CLR, handler);
  +            throws TransletException
  +    {
  +        if (node == DTM.NULL) {
  +            return "";
  +        }
  +        return _adapters[getDTMId(node)].shallowCopy(node & CLR, handler);
       }
       
       public boolean lessThan(final int node1, final int node2) {
  -     if (node1 == DTM.NULL) return true;
  -     if (node2 == DTM.NULL) return false;
  -   // int nodeid1 = getNodeIdent(node1);
  -    //int nodeid2 = getNodeIdent(node2); 
  -     final int dom1 = getDTMId(node1);
  -     final int dom2 = getDTMId(node2);
  -     return dom1 == dom2
  -         ? _adapters[dom1].lessThan(node1 & CLR, node2 & CLR)
  -         : dom1 < dom2;
  +        if (node1 == DTM.NULL) {
  +            return true;
  +        }
  +        if (node2 == DTM.NULL) {
  +            return false;
  +        }
  +        final int dom1 = getDTMId(node1);
  +        final int dom2 = getDTMId(node2);
  +        return dom1 == dom2 ? _adapters[dom1].lessThan(node1 & CLR, node2 & 
CLR)
  +                            : dom1 < dom2;
       }
       
       public void characters(final int textNode, TransletOutputHandler handler)
  -     throws TransletException {
  -         _adapters[getDTMId(textNode)].characters(textNode & CLR, handler);
  +                 throws TransletException
  +    {
  +        _adapters[getDTMId(textNode)].characters(textNode & CLR, handler);
       }
   
       public void setFilter(StripFilter filter) {
  -     for (int dom=0; dom<_free; dom++) {
  -         _adapters[dom].setFilter(filter);
  -     }
  +        for (int dom=0; dom<_free; dom++) {
  +            _adapters[dom].setFilter(filter);
  +        }
       }
   
       public Node makeNode(int index) {
  -     if (index == DTM.NULL)
  -     return null;
  -     return _adapters[getDTMId(index)].makeNode(index & CLR);
  +        if (index == DTM.NULL) {
  +            return null;
  +        }
  +        return _adapters[getDTMId(index)].makeNode(index & CLR);
       }
   
       public Node makeNode(DTMAxisIterator iter) {
  -     // TODO: gather nodes from all DOMs ?
  -     return _adapters[0].makeNode(iter);
  +        // TODO: gather nodes from all DOMs ?
  +        return _adapters[0].makeNode(iter);
       }
   
       public NodeList makeNodeList(int index) {
  -     if (index == DTM.NULL)
  -     return null;
  -     return _adapters[getDTMId(index)].makeNodeList(index & CLR);
  +        if (index == DTM.NULL) {
  +            return null;
  +        }
  +        return _adapters[getDTMId(index)].makeNodeList(index & CLR);
       }
   
       public NodeList makeNodeList(DTMIterator iter) {
  -     // TODO: gather nodes from all DOMs ?
  -     return _adapters[0].makeNodeList(iter);
  +        // TODO: gather nodes from all DOMs ?
  +        return _adapters[0].makeNodeList(iter);
       }
   
       public String getLanguage(int node) {
  -     return _adapters[getDTMId(node)].getLanguage(node & CLR);
  +        return _adapters[getDTMId(node)].getLanguage(node & CLR);
       }
   
       public int getSize() {
  -     int size = 0;
  -     for (int i=0; i<_size; i++)
  -         size += _adapters[i].getSize();
  -     return(size);
  +        int size = 0;
  +        for (int i=0; i<_size; i++) {
  +            size += _adapters[i].getSize();
  +        }
  +        return(size);
       }
   
       public String getDocumentURI(int node) {
  -     if (node == DTM.NULL)
  -     node = DOM.NULL;
  -     return _adapters[getDTMId(node)].getDocumentURI(0);
  +        if (node == DTM.NULL) {
  +            node = DOM.NULL;
  +        }
  +        return _adapters[getDTMId(node)].getDocumentURI(0);
       }
   
       public boolean isElement(final int node) {
  -     if (node == DTM.NULL)
  -     return false;
  -     return(_adapters[getDTMId(node)].isElement(node & CLR));
  +        if (node == DTM.NULL) {
  +            return false;
  +        }
  +        return(_adapters[getDTMId(node)].isElement(node & CLR));
       }
   
       public boolean isAttribute(final int node) {
  -     if (node == DTM.NULL)
  -     return false;
  -//           getNodeIdent(node)>>>24
  -     return(_adapters[getDTMId(node)].isAttribute(node & CLR));
  +        if (node == DTM.NULL) {
  +            return false;
  +        }
  +        return(_adapters[getDTMId(node)].isAttribute(node & CLR));
       }
       
       public int getDTMId(int nodeHandle)
       {
  -     DTMManager dtmManager = 
((DTMDefaultBase)((DOMAdapter)_adapters[0]).getDOMImpl()).m_mgr;
  -     int id = dtmManager.getDTMIdentity(dtmManager.getDTM(nodeHandle)) >>> 
DTMManager.IDENT_DTM_NODE_BITS;
  -     return (id == -1 ? 0 : id);
  +        DTMManager dtmManager =
  +              
((DTMDefaultBase)((DOMAdapter)_adapters[0]).getDOMImpl()).m_mgr;
  +        int id = dtmManager.getDTMIdentity(dtmManager.getDTM(nodeHandle))
  +                       >>> DTMManager.IDENT_DTM_NODE_BITS;
  +        return (id == -1 ? 0 : id);
       }
       
       public int getNodeIdent(int nodeHandle)
       {
  -     int id = getDTMId(nodeHandle);
  -     return (_adapters[id].getNodeIdent(nodeHandle) | id<<24);
  +        int id = getDTMId(nodeHandle);
  +        return (_adapters[id].getNodeIdent(nodeHandle) | id<<24);
       }
       
       public int getNodeHandle(int nodeId)
       {
  -     return _adapters[nodeId>>>24].getNodeHandle(nodeId & CLR);
  +        return _adapters[nodeId>>>24].getNodeHandle(nodeId & CLR);
       }
       
       public DOM getResultTreeFrag()
       {
  -     return _adapters[0].getResultTreeFrag();
  +        return _adapters[0].getResultTreeFrag();
       }
       
       public DOM getMain()
       {
  -     return _adapters[0];
  +        return _adapters[0];
       }
       
       /**
  @@ -559,13 +614,13 @@
        */
       public TransletOutputHandler getOutputDomBuilder()
       {
  -     return _adapters[0].getOutputDomBuilder();
  +        return _adapters[0].getOutputDomBuilder();
       }
   
       public String lookupNamespace(int node, String prefix) 
  -     throws TransletException
  +        throws TransletException
       {
  -     return _adapters[node>>>24].lookupNamespace(node, prefix);
  +        return _adapters[node>>>24].lookupNamespace(node, prefix);
       }
   
       // %HZ% Does this method make any sense here???
  
  
  

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

Reply via email to