< prev index next >

src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/dom/MultiDOM.java

Print this page




  18  * limitations under the License.
  19  */
  20 /*
  21  * $Id: MultiDOM.java,v 1.5 2005/09/28 13:48:36 pvedula Exp $
  22  */
  23 
  24 package com.sun.org.apache.xalan.internal.xsltc.dom;
  25 
  26 import com.sun.org.apache.xalan.internal.xsltc.DOM;
  27 import com.sun.org.apache.xalan.internal.xsltc.StripFilter;
  28 import com.sun.org.apache.xml.internal.serializer.SerializationHandler;
  29 import com.sun.org.apache.xalan.internal.xsltc.TransletException;
  30 import com.sun.org.apache.xalan.internal.xsltc.runtime.BasisLibrary;
  31 import com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable;
  32 import com.sun.org.apache.xml.internal.dtm.DTM;
  33 import com.sun.org.apache.xml.internal.dtm.Axis;
  34 import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator;
  35 import com.sun.org.apache.xml.internal.dtm.DTMManager;
  36 import com.sun.org.apache.xml.internal.dtm.ref.DTMAxisIteratorBase;
  37 import com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBase;

  38 import com.sun.org.apache.xml.internal.utils.SuballocatedIntVector;
  39 
  40 import org.w3c.dom.Node;
  41 import org.w3c.dom.NodeList;
  42 
  43 /**
  44  * @author Jacek Ambroziak
  45  * @author Morten Jorgensen
  46  * @author Erwin Bolwidt <ejb@klomp.org>
  47  */
  48 public final class MultiDOM implements DOM {
  49 
  50     private static final int NO_TYPE = DOM.FIRST_TYPE - 2;
  51     private static final int INITIAL_SIZE = 4;
  52 
  53     private DOM[] _adapters;
  54     private DOMAdapter _main;
  55     private DTMManager _dtmManager;
  56     private int _free;
  57     private int _size;


 552             return null;
 553         }
 554         return _adapters[getDTMId(index)].makeNode(index);
 555     }
 556 
 557     public Node makeNode(DTMAxisIterator iter) {
 558         // TODO: gather nodes from all DOMs ?
 559         return _main.makeNode(iter);
 560     }
 561 
 562     public NodeList makeNodeList(int index) {
 563         if (index == DTM.NULL) {
 564             return null;
 565         }
 566         return _adapters[getDTMId(index)].makeNodeList(index);
 567     }
 568 
 569     public NodeList makeNodeList(DTMAxisIterator iter) {
 570         int index = iter.next();
 571         if (index == DTM.NULL) {
 572             return null;
 573         }
 574         iter.reset();
 575         return _adapters[getDTMId(index)].makeNodeList(iter);
 576     }
 577 
 578     public String getLanguage(int node) {
 579         return _adapters[getDTMId(node)].getLanguage(node);
 580     }
 581 
 582     public int getSize() {
 583         int size = 0;
 584         for (int i=0; i<_size; i++) {
 585             size += _adapters[i].getSize();
 586         }
 587         return(size);
 588     }
 589 
 590     public String getDocumentURI(int node) {
 591         if (node == DTM.NULL) {
 592             node = DOM.NULL;




  18  * limitations under the License.
  19  */
  20 /*
  21  * $Id: MultiDOM.java,v 1.5 2005/09/28 13:48:36 pvedula Exp $
  22  */
  23 
  24 package com.sun.org.apache.xalan.internal.xsltc.dom;
  25 
  26 import com.sun.org.apache.xalan.internal.xsltc.DOM;
  27 import com.sun.org.apache.xalan.internal.xsltc.StripFilter;
  28 import com.sun.org.apache.xml.internal.serializer.SerializationHandler;
  29 import com.sun.org.apache.xalan.internal.xsltc.TransletException;
  30 import com.sun.org.apache.xalan.internal.xsltc.runtime.BasisLibrary;
  31 import com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable;
  32 import com.sun.org.apache.xml.internal.dtm.DTM;
  33 import com.sun.org.apache.xml.internal.dtm.Axis;
  34 import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator;
  35 import com.sun.org.apache.xml.internal.dtm.DTMManager;
  36 import com.sun.org.apache.xml.internal.dtm.ref.DTMAxisIteratorBase;
  37 import com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBase;
  38 import com.sun.org.apache.xml.internal.dtm.ref.DTMAxisIterNodeList;
  39 import com.sun.org.apache.xml.internal.utils.SuballocatedIntVector;
  40 
  41 import org.w3c.dom.Node;
  42 import org.w3c.dom.NodeList;
  43 
  44 /**
  45  * @author Jacek Ambroziak
  46  * @author Morten Jorgensen
  47  * @author Erwin Bolwidt <ejb@klomp.org>
  48  */
  49 public final class MultiDOM implements DOM {
  50 
  51     private static final int NO_TYPE = DOM.FIRST_TYPE - 2;
  52     private static final int INITIAL_SIZE = 4;
  53 
  54     private DOM[] _adapters;
  55     private DOMAdapter _main;
  56     private DTMManager _dtmManager;
  57     private int _free;
  58     private int _size;


 553             return null;
 554         }
 555         return _adapters[getDTMId(index)].makeNode(index);
 556     }
 557 
 558     public Node makeNode(DTMAxisIterator iter) {
 559         // TODO: gather nodes from all DOMs ?
 560         return _main.makeNode(iter);
 561     }
 562 
 563     public NodeList makeNodeList(int index) {
 564         if (index == DTM.NULL) {
 565             return null;
 566         }
 567         return _adapters[getDTMId(index)].makeNodeList(index);
 568     }
 569 
 570     public NodeList makeNodeList(DTMAxisIterator iter) {
 571         int index = iter.next();
 572         if (index == DTM.NULL) {
 573             return new DTMAxisIterNodeList(null, null);
 574         }
 575         iter.reset();
 576         return _adapters[getDTMId(index)].makeNodeList(iter);
 577     }
 578 
 579     public String getLanguage(int node) {
 580         return _adapters[getDTMId(node)].getLanguage(node);
 581     }
 582 
 583     public int getSize() {
 584         int size = 0;
 585         for (int i=0; i<_size; i++) {
 586             size += _adapters[i].getSize();
 587         }
 588         return(size);
 589     }
 590 
 591     public String getDocumentURI(int node) {
 592         if (node == DTM.NULL) {
 593             node = DOM.NULL;


< prev index next >