zongaro     2002/09/23 10:24:08

  Modified:    java/src/org/apache/xalan/xsltc/dom Tag: XSLTC_DTM
                        DOMAdapter.java DOMImpl.java SAXImpl.java
  Log:
  Folding in changes from the MAIN branch.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.11.10.5 +185 -159  
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.11.10.4
  retrieving revision 1.11.10.5
  diff -u -r1.11.10.4 -r1.11.10.5
  --- DOMAdapter.java   18 Sep 2002 13:31:53 -0000      1.11.10.4
  +++ DOMAdapter.java   23 Sep 2002 17:24:07 -0000      1.11.10.5
  @@ -77,11 +77,21 @@
   import org.apache.xml.dtm.ref.*;
   
   public final class DOMAdapter implements DOM {
  -    private final DOM _domImpl;
  -    private short[] _mapping;
  -    private int[] _reverse;
  -    private short[] _NSmapping;
  -    private short[] _NSreverse;
  +
  +    // Mutually exclusive casting of DOM interface to known implementations
  +    private DOMImpl _domImpl;
  +    private SAXImpl _saxImpl;
  +
  +    private DOM _dom;
  +
  +    private String[] _namesArray;
  +    private String[] _namespaceArray;
  +
  +    // Cached mappings
  +    private short[] _mapping = null;
  +    private int[]   _reverse = null;
  +    private short[] _NSmapping = null;
  +    private short[] _NSreverse = null;
   
       private StripFilter _filter = null;
   
  @@ -89,124 +99,151 @@
       
       public DOMAdapter(DOM dom,
                         String[] namesArray,
  -                      String[] namespaceArray) 
  -    {
  -      _domImpl = dom;
  -      if (_domImpl instanceof DOMImpl )
  -      {
  -        _mapping = ((DOMImpl)dom).getMapping(namesArray);
  -        _reverse = ((DOMImpl)dom).getReverseMapping(namesArray);
  -        _NSmapping = ((DOMImpl)dom).getNamespaceMapping(namespaceArray);
  -        _NSreverse = 
((DOMImpl)dom).getReverseNamespaceMapping(namespaceArray);
  -      }
  -      else
  -      {
  -              _mapping = ((SAXImpl)dom).getMapping(namesArray);
  -         _reverse = ((SAXImpl)dom).getReverseMapping(namesArray);
  -         _NSmapping = ((SAXImpl)dom).getNamespaceMapping(namespaceArray);
  -         _NSreverse = 
((SAXImpl)dom).getReverseNamespaceMapping(namespaceArray);
  +                      String[] namespaceArray) {
  +      if (dom instanceof DOMImpl) {
  +          _domImpl = (DOMImpl) dom;
  +      } else {
  +          _saxImpl = (SAXImpl) dom;
         }
  -    }
   
  -    public void setupMapping(String[] names, String[] namespaces) 
  -    {
  -      if (_domImpl instanceof DOMImpl )
  -       {
  -          _mapping = ((DOMImpl)_domImpl).getMapping(names);
  -          _reverse = ((DOMImpl)_domImpl).getReverseMapping(names);
  -          _NSmapping = ((DOMImpl)_domImpl).getNamespaceMapping(namespaces);
  -          _NSreverse = 
((DOMImpl)_domImpl).getReverseNamespaceMapping(namespaces);
  -       }
  -      else
  -       {
  -          _mapping = ((SAXImpl)_domImpl).getMapping(names);
  -          _reverse = ((SAXImpl)_domImpl).getReverseMapping(names);
  -          _NSmapping = ((SAXImpl)_domImpl).getNamespaceMapping(namespaces);
  -          _NSreverse = 
((SAXImpl)_domImpl).getReverseNamespaceMapping(namespaces);
  -       }
  -    }
  -    
  -    
  -    public DOM getDOMImpl()
  -    {
  -     return _domImpl;
  +      _dom = dom;
  +      _namesArray = namesArray;
  +      _namespaceArray = namespaceArray;
  +    }
  +
  +    public void setupMapping(String[] names, String[] namespaces) {
  +        _namesArray = names;
  +        _namespaceArray = namespaces;
  +    }
  +    
  +    public DOM getDOMImpl() {
  +     return (_domImpl != null) ? (DOM)_domImpl : (DOM)_saxImpl;
  +    }
  +
  +    private short[] getMapping() {
  +     if (_mapping == null) {
  +            if (_domImpl != null) {
  +             _mapping = _domImpl.getMapping(_namesArray);
  +            } else {
  +             _mapping = _saxImpl.getMapping(_namesArray);
  +            }
  +     }
  +     return _mapping;
  +    }
  +
  +    private int[] getReverse() {
  +     if (_reverse == null) {
  +            if (_domImpl != null) {
  +             _reverse = _domImpl.getReverseMapping(_namesArray);
  +            } else {
  +             _reverse = _saxImpl.getReverseMapping(_namesArray);
  +            }
  +     }
  +     return _reverse;
  +    }
  +
  +    private short[] getNSMapping() {
  +     if (_NSmapping == null) {
  +            if (_domImpl != null) {
  +             _NSmapping = _domImpl.getNamespaceMapping(_namespaceArray);
  +            } else {
  +             _NSmapping = _saxImpl.getNamespaceMapping(_namespaceArray);
  +            }
  +     }
  +     return _NSmapping;
  +    }
  +
  +    private short[] getNSReverse() {
  +     if (_NSreverse == null) {
  +            if (_domImpl != null) {
  +             _NSreverse =
  +                        _domImpl.getReverseNamespaceMapping(_namespaceArray);
  +            } else {
  +             _NSreverse =
  +                        _saxImpl.getReverseNamespaceMapping(_namespaceArray);
  +            }
  +     }
  +     return _NSreverse;
       }
   
       /** 
         * Returns singleton iterator containg the document root 
         */
       public DTMAxisIterator getIterator() {
  -      return _domImpl.getIterator();
  +        return _dom.getIterator();
       }
       
       public String getStringValue() {
  -      return _domImpl.getStringValue();
  +        return _dom.getStringValue();
       }
       
       public DTMAxisIterator getChildren(final int node) {
  -      DTMAxisIterator iterator = _domImpl.getChildren(node);
  -      if (_filter == null) {
  -        return(iterator.setStartNode(node));
  -      }
  -      else {
  -             if (_domImpl instanceof DOMImpl )
  -          iterator = 
((DOMImpl)_domImpl).strippingIterator(iterator,_mapping,_filter);
  -       else
  -          iterator = 
((SAXImpl)_domImpl).strippingIterator(iterator,_mapping,_filter);
  +        DTMAxisIterator iterator = _dom.getChildren(node);
  +        if (_filter != null) {
  +            if (_domImpl != null)
  +                iterator = _domImpl.strippingIterator(iterator, getMapping(),
  +                                                      _filter);
  +            else
  +                iterator = _saxImpl.strippingIterator(iterator, getMapping(),
  +                                                      _filter);
  +        }
           return iterator.setStartNode(node);
  -      }
       }
   
       public void setFilter(StripFilter filter) {
  -      _filter = filter;
  +     _filter = filter;
       }
  -    
  +
       public DTMAxisIterator getTypedChildren(final int type) {
  -      DTMAxisIterator iterator = _domImpl.getTypedChildren(_reverse[type]);
  -      if (_reverse[type] == DTM.TEXT_NODE && _filter != null)
  -      {
  -             if (_domImpl instanceof DOMImpl )
  -          iterator = 
((DOMImpl)_domImpl).strippingIterator(iterator,_mapping,_filter);
  -       else
  -          iterator = 
((SAXImpl)_domImpl).strippingIterator(iterator,_mapping,_filter);
  +      final int[] reverse = getReverse();
  +
  +      DTMAxisIterator iterator = _dom.getTypedChildren(reverse[type]);
  +      if (_filter != null && reverse[type] == DTM.TEXT_NODE) {
  +             if (_domImpl != null) {
  +          iterator = 
_domImpl.strippingIterator(iterator,getMapping(),_filter);
  +        } else {
  +          iterator = 
_saxImpl.strippingIterator(iterator,getMapping(),_filter);
  +        }
         }
         return iterator;
       }
   
  -    public DTMAxisIterator getNamespaceAxisIterator(final int axis, final 
int ns) {
  -      return _domImpl.getNamespaceAxisIterator(axis,_NSreverse[ns]);
  +    public DTMAxisIterator getNamespaceAxisIterator(final int axis,
  +                                                    final int ns) {
  +      return _dom.getNamespaceAxisIterator(axis, getNSReverse()[ns]);
       }
   
       public DTMAxisIterator getAxisIterator(final int axis) {
  -      DTMAxisIterator iterator = _domImpl.getAxisIterator(axis);
  +      DTMAxisIterator iterator = _dom.getAxisIterator(axis);
         if (_filter != null)
         {
  -        return (_domImpl instanceof DOMImpl)
  -             ? 
((DOMImpl)_domImpl).strippingIterator(iterator,_mapping,_filter)
  -             : 
((SAXImpl)_domImpl).strippingIterator(iterator,_mapping,_filter);
  +        return (_domImpl != null)
  +                  ? _domImpl.strippingIterator(iterator, getMapping(), 
_filter)
  +                  : _saxImpl.strippingIterator(iterator, getMapping(), 
_filter);
         }
         return iterator;
       }
       
  -    public DTMAxisIterator getTypedAxisIterator(final int axis, final int 
type) {
  +    public DTMAxisIterator getTypedAxisIterator(final int axis,
  +                                                final int type) {
         DTMAxisIterator iterator;
  +      final int[] reverse = getReverse();
   
  -      if (axis == Axis.NAMESPACE) 
  -      {
  -        iterator = (type == NO_TYPE || type > _NSreverse.length)
  -             ? _domImpl.getAxisIterator(axis)
  -             : _domImpl.getTypedAxisIterator(axis,_NSreverse[type]);
  -      }
  -      else {
  -        iterator = _domImpl.getTypedAxisIterator(axis, _reverse[type]);
  +      if (axis == Axis.NAMESPACE) {
  +          short[] NSReverse = getNSReverse();
  +          if (type == NO_TYPE || type > NSReverse.length) {
  +             iterator = _dom.getAxisIterator(axis);
  +          } else {
  +             iterator = _dom.getTypedAxisIterator(axis, NSReverse[type]);
  +          }
  +      } else {
  +          iterator = _dom.getTypedAxisIterator(axis, reverse[type]);
         }
         
  -      if (_reverse[type] == DTM.TEXT_NODE && _filter != null)
  -      {
  -             if (_domImpl instanceof DOMImpl )
  -          iterator = 
((DOMImpl)_domImpl).strippingIterator(iterator,_mapping,_filter);
  -       else
  -          iterator = 
((SAXImpl)_domImpl).strippingIterator(iterator,_mapping,_filter);
  +      if (_filter != null && reverse[type] == DTM.TEXT_NODE) {
  +             iterator = (_domImpl != null)
  +                    ? 
_domImpl.strippingIterator(iterator,getMapping(),_filter)
  +                    : 
_saxImpl.strippingIterator(iterator,getMapping(),_filter);
           
         }
         return iterator;
  @@ -214,7 +251,7 @@
       
   
       public String getTreeString() {
  -     return _domImpl.getTreeString();
  +     return _dom.getTreeString();
       }
       
       public int getMultiDOMMask() {
  @@ -225,193 +262,182 @@
        _multiDOMMask = mask;
       }
   
  -    public DTMAxisIterator getNthDescendant(int type, int n, boolean 
includeself) 
  -    {
  -      return _domImpl.getNthDescendant(_reverse[type], n, includeself);
  +    public DTMAxisIterator getNthDescendant(int type, int n,
  +                                            boolean includeself) {
  +        return _dom.getNthDescendant(getReverse()[type], n, includeself);
       }
   
  -    public DTMAxisIterator getNodeValueIterator(DTMAxisIterator iterator, 
int type,
  -                                                String value, boolean op) 
  -    {
  -      return _domImpl.getNodeValueIterator(iterator, type, value, op);
  +    public DTMAxisIterator getNodeValueIterator(DTMAxisIterator iterator,
  +                                                int type, String value,
  +                                                boolean op) {
  +      return _dom.getNodeValueIterator(iterator, type, value, op);
       }
   
  -
  -    public DTMAxisIterator orderNodes(DTMAxisIterator source, int node) 
  -    {
  -      return _domImpl.orderNodes(source, node);
  +    public DTMAxisIterator orderNodes(DTMAxisIterator source, int node) {
  +      return _dom.orderNodes(source, node);
       }
       
  -    public int getType(final int node) 
  -    {
  -      return _mapping[_domImpl.getType(node)];
  +    public int getType(final int node) {
  +      return getMapping()[_dom.getType(node)];
       }
   
  -    public int getNamespaceType(final int node) 
  -    {
  -     
  -     return _NSmapping[_domImpl.getNSType(node)];
  +    public int getNamespaceType(final int node) {
  +     return getNSMapping()[_dom.getNSType(node)];
       }
  -    
  -    public int getNSType(int node)
  -    {
  -     return _domImpl.getNSType(node);
  +
  +    public int getNSType(int node) {
  +     return _dom.getNSType(node);
       }
       
  -    public int getParent(final int node) 
  -    {
  -      return _domImpl.getParent(node);
  +    public int getParent(final int node) {
  +      return _dom.getParent(node);
       }
   
  -    public int getTypedPosition(int type, int node) 
  -    {
  -      return _domImpl.getTypedPosition(_reverse[type], node);
  +    public int getTypedPosition(int type, int node) {
  +      return _dom.getTypedPosition(getReverse()[type], node);
       }
   
  -    public int getTypedLast(int type, int node) 
  -    {
  -      return _domImpl.getTypedLast(_reverse[type], node);
  +    public int getTypedLast(int type, int node) {
  +     return _dom.getTypedLast(getReverse()[type], node);
       }
   
  -    public int getAttributeNode(final int type, final int element) 
  -    {
  -      return _domImpl.getAttributeNode(_reverse[type], element);
  +    public int getAttributeNode(final int type, final int element) {
  +     return _dom.getAttributeNode(getReverse()[type], element);
       }
       
  -    public String getNodeName(final int node) 
  -    {
  +    public String getNodeName(final int node) {
        if (node == DTM.NULL)
        return "";
  -      return _domImpl.getNodeName(node);
  +      return _dom.getNodeName(node);
       }
       
       public String getNodeNameX(final int node) 
       {
        if (node == DTM.NULL)
        return "";
  -      return _domImpl.getNodeNameX(node);
  +      return _dom.getNodeNameX(node);
       }
   
       public String getNamespaceName(final int node) 
       {
        if (node == DTM.NULL)
        return "";
  -      return _domImpl.getNamespaceName(node);
  +      return _dom.getNamespaceName(node);
       }
       
       public String getNodeValue(final int node) 
       {
        if (node == DTM.NULL)
        return "";
  -      return _domImpl.getNodeValue(node);
  +      return _dom.getNodeValue(node);
       }
       
       public void copy(final int node, TransletOutputHandler handler)
        throws TransletException 
       {
  -         _domImpl.copy(node, handler);
  +         _dom.copy(node, handler);
       }
       
       public void copy(DTMAxisIterator nodes, TransletOutputHandler handler)
        throws TransletException 
       {
  -         _domImpl.copy(nodes, handler);
  +         _dom.copy(nodes, handler);
       }
   
       public String shallowCopy(final int node, TransletOutputHandler handler)
        throws TransletException 
       {
  -         return _domImpl.shallowCopy(node, handler);
  +         return _dom.shallowCopy(node, handler);
       }
       
       public boolean lessThan(final int node1, final int node2) 
       {
  -      return _domImpl.lessThan(node1, node2);
  +      return _dom.lessThan(node1, node2);
       }
       
       public void characters(final int textNode, TransletOutputHandler handler)
         throws TransletException 
       {
  -      _domImpl.characters(textNode, handler);
  +      _dom.characters(textNode, handler);
       }
   
       public Node makeNode(int index) 
       {
  -      return _domImpl.makeNode(index);
  +      return _dom.makeNode(index);
       }
   
       public Node makeNode(DTMAxisIterator iter) 
       {
  -      return _domImpl.makeNode(iter);
  +      return _dom.makeNode(iter);
       }
   
       public NodeList makeNodeList(int index) 
       {
  -      return _domImpl.makeNodeList(index);
  +      return _dom.makeNodeList(index);
       }
   
       public NodeList makeNodeList(DTMIterator iter) 
       {
  -      return _domImpl.makeNodeList(iter);
  +      return _dom.makeNodeList(iter);
       }
   
       public String getLanguage(int node) 
       {
  -      return _domImpl.getLanguage(node);
  +      return _dom.getLanguage(node);
       }
   
       public int getSize() 
       {
  -      return _domImpl.getSize();
  +      return _dom.getSize();
       }
   
       public void setDocumentURI(String uri) 
       {
  -      if (_domImpl instanceof DOMImpl )
  -        ((DOMImpl)_domImpl).setDocumentURI(uri);
  +      if (_domImpl != null)
  +        _domImpl.setDocumentURI(uri);
         else
  -        ((SAXImpl)_domImpl).setDocumentURI(uri);
  +        _saxImpl.setDocumentURI(uri);
       }
   
       public String getDocumentURI() 
       {
  -      if (_domImpl instanceof DOMImpl )
  -        return(((DOMImpl)_domImpl).getDocumentURI());
  +      if (_domImpl != null)
  +        return _domImpl.getDocumentURI();
         else
  -        return(((SAXImpl)_domImpl).getDocumentURI());
  +        return _saxImpl.getDocumentURI();
       }
   
       public String getDocumentURI(int node) 
       {
  -      if (_domImpl instanceof DOMImpl)
  -        return(((DOMImpl)_domImpl).getDocumentURI());
  +      if (_domImpl != null)
  +        return _domImpl.getDocumentURI();
         else
  -        return(((SAXImpl)_domImpl).getDocumentURI());
  +        return _saxImpl.getDocumentURI();
       }
  -    
  +
       public int getDocument() 
       {
  -      return(((DTMDefaultBase)_domImpl).getDocument());
  +      return(((DTMDefaultBase)_dom).getDocument());
       }
   
       public boolean isElement(final int node) 
       {
  -      return(_domImpl.isElement(node));
  +      return(_dom.isElement(node));
       }
   
       public boolean isAttribute(final int node) 
       {
  -      return(_domImpl.isAttribute(node));
  +      return(_dom.isAttribute(node));
       }
       
       public int getNodeIdent(int nodeHandle)
       {
  -     return _domImpl.getNodeIdent(nodeHandle);
  +     return _dom.getNodeIdent(nodeHandle);
       }
       
       public int getNodeHandle(int nodeId)
       {
  -     return _domImpl.getNodeHandle(nodeId);
  +     return _dom.getNodeHandle(nodeId);
       }
       
       /**
  @@ -419,7 +445,7 @@
        */ 
       public DOM getResultTreeFrag(int initSize)
       {
  -     return _domImpl.getResultTreeFrag(initSize);
  +     return _dom.getResultTreeFrag(initSize);
       }
       
       /**
  @@ -427,20 +453,20 @@
        */
       public TransletOutputHandler getOutputDomBuilder()
       {
  -     return _domImpl.getOutputDomBuilder();
  +     return _dom.getOutputDomBuilder();
       }
   
       public String lookupNamespace(int node, String prefix) 
        throws TransletException 
       {
  -     return _domImpl.lookupNamespace(node, prefix);
  +     return _dom.lookupNamespace(node, prefix);
       }
   
       public String getUnparsedEntityURI(String entity) {
  -        return _domImpl.getUnparsedEntityURI(entity);
  +        return _dom.getUnparsedEntityURI(entity);
       }
   
       public Hashtable getElementsWithIDs() {
  -        return _domImpl.getElementsWithIDs();
  +        return _dom.getElementsWithIDs();
       }
   }
  
  
  
  1.68.2.10 +8 -7      
xml-xalan/java/src/org/apache/xalan/xsltc/dom/DOMImpl.java
  
  Index: DOMImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/DOMImpl.java,v
  retrieving revision 1.68.2.9
  retrieving revision 1.68.2.10
  diff -u -r1.68.2.9 -r1.68.2.10
  --- DOMImpl.java      20 Sep 2002 19:15:09 -0000      1.68.2.9
  +++ DOMImpl.java      23 Sep 2002 17:24:07 -0000      1.68.2.10
  @@ -281,8 +281,10 @@
        * Returns the origin of the document from which the tree was built
        */
       public String getDocumentURI() {
  -      String baseURI = getDocumentBaseURI();
  -      return (baseURI != null) ? baseURI : "rtf" + _documentURIIndex++;
  +     synchronized (getClass()) {     // synchronize access to static
  +            String baseURI = getDocumentBaseURI();
  +         return (baseURI != null) ? baseURI : "rtf" + _documentURIIndex++;
  +     }
       }
   
       public String getDocumentURI(int node) 
  @@ -2030,7 +2032,6 @@
        return c == 0x20 || c == 0x0A || c == 0x0D || c == 0x09;
       }
   
  -
       /****************************************************************/
       /*               DOM builder class definition                   */
       /****************************************************************/
  @@ -2039,7 +2040,7 @@
       {
   
        private final static int ATTR_ARRAY_SIZE = 32;
  -     private final static int REUSABLE_TEXT_SIZE = 32;
  +     private final static int REUSABLE_TEXT_SIZE = 0;  // turned off
        private final static int INIT_STACK_LENGTH = 64;
   
        private Hashtable _shortTexts           = null;
  @@ -2051,8 +2052,8 @@
        //private int[]     _previousSiblingStack = new int[INIT_STACK_LENGTH];
        private int       _sp;
        private int       _baseOffset           = 0;
  -     private int       _currentOffset        = 0;
        private int       _currentNode          = 0;
  +     private int       _currentOffset        = 0;
   
        // Temporary structures for attribute nodes
        private int       _currentAttributeNode = 1;
  @@ -2068,8 +2069,8 @@
        private int       _uriCount     = 0;
        private int       _prefixCount  = 0;
   
  -     private int       _nextNamespace = DOM.NULL;
        private int       _lastNamespace = DOM.NULL;
  +     private int       _nextNamespace = DOM.NULL;
        
        // Stack used to keep track of what whitespace text nodes are protected
        // by xml:space="preserve" attributes and which nodes that are not.
  
  
  
  1.1.2.11  +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/dom/Attic/SAXImpl.java
  
  Index: SAXImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/Attic/SAXImpl.java,v
  retrieving revision 1.1.2.10
  retrieving revision 1.1.2.11
  diff -u -r1.1.2.10 -r1.1.2.11
  --- SAXImpl.java      20 Sep 2002 19:15:19 -0000      1.1.2.10
  +++ SAXImpl.java      23 Sep 2002 17:24:07 -0000      1.1.2.11
  @@ -1929,7 +1929,7 @@
       {
   
        private final static int ATTR_ARRAY_SIZE = 32;
  -     private final static int REUSABLE_TEXT_SIZE = 32;
  +     private final static int REUSABLE_TEXT_SIZE = 0;  // turned off
        private final static int INIT_STACK_LENGTH = 64;
   
        private Hashtable _shortTexts           = null;
  
  
  

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

Reply via email to