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]