jkesselm 02/04/29 10:49:32
Modified: java/src/org/apache/xml/dtm Tag: Xalan3 DTM.java
java/src/org/apache/xml/dtm/ref Tag: Xalan3
DTMDefaultBase.java DTMDefaultBaseIterators.java
DTMDefaultBaseTraversers.java
ExpandedNameTable.java
java/src/org/apache/xml/dtm/ref/dom2dtm Tag: Xalan3
DOM2DTM.java
java/src/org/apache/xml/dtm/ref/sax2dtm Tag: Xalan3
SAX2DTM.java
Log:
Merge ExtendedType changes from main branch
Revision Changes Path
No revision
No revision
1.6.6.2 +7 -0 xml-xalan/java/src/org/apache/xml/dtm/DTM.java
Index: DTM.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/dtm/DTM.java,v
retrieving revision 1.6.6.1
retrieving revision 1.6.6.2
diff -u -r1.6.6.1 -r1.6.6.2
--- DTM.java 12 Apr 2002 18:26:19 -0000 1.6.6.1
+++ DTM.java 29 Apr 2002 17:49:31 -0000 1.6.6.2
@@ -190,6 +190,13 @@
* currently a node type defined by the DOM API.
*/
public static final short NAMESPACE_NODE = 13;
+
+ /**
+ * The number of valid nodetypes. REMEMBER TO UPDATE THIS if you add more
+ * node types.
+ */
+ public static final short NTYPES = 14;
+
// ========= DTM Implementation Control Functions. ==============
// %TBD% RETIRED -- do via setFeature if needed. Remove from impls.
No revision
No revision
1.27.2.2 +3 -3
xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBase.java
Index: DTMDefaultBase.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBase.java,v
retrieving revision 1.27.2.1
retrieving revision 1.27.2.2
diff -u -r1.27.2.1 -r1.27.2.2
--- DTMDefaultBase.java 12 Apr 2002 18:26:19 -0000 1.27.2.1
+++ DTMDefaultBase.java 29 Apr 2002 17:49:31 -0000 1.27.2.2
@@ -461,7 +461,7 @@
int info = _exptype(identity);
if (NULL != info)
- return ExpandedNameTable.getType(info);
+ return m_expandedNameTable.getType(info);
else
return NULL;
}
@@ -1572,7 +1572,7 @@
int identity = makeNodeIdentity(nodeHandle);
int expandedNameID = _exptype(identity);
- return ExpandedNameTable.getNamespaceID(expandedNameID);
+ return m_expandedNameTable.getNamespaceID(expandedNameID);
}
/**
@@ -1662,7 +1662,7 @@
*/
public short getNodeType(int nodeHandle)
{
- return (short)(_exptype(makeNodeIdentity(nodeHandle)) >>>
ExpandedNameTable.ROTAMOUNT_TYPE);
+ return
m_expandedNameTable.getType(_exptype(makeNodeIdentity(nodeHandle)));
}
/**
1.11.6.1 +1 -1
xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBaseIterators.java
Index: DTMDefaultBaseIterators.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBaseIterators.java,v
retrieving revision 1.11
retrieving revision 1.11.6.1
diff -u -r1.11 -r1.11.6.1
--- DTMDefaultBaseIterators.java 8 Feb 2002 23:33:50 -0000 1.11
+++ DTMDefaultBaseIterators.java 29 Apr 2002 17:49:32 -0000 1.11.6.1
@@ -1036,7 +1036,7 @@
return resetPosition();
}
- int type = getExpandedTypeID(node) & ExpandedNameTable.MASK_NODETYPE;
+ int type = m_expandedNameTable.getType(getExpandedTypeID(node));
if(ExpandedNameTable.ATTRIBUTE == type
|| ExpandedNameTable.NAMESPACE == type )
{
1.8.10.1 +1 -1
xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBaseTraversers.java
Index: DTMDefaultBaseTraversers.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBaseTraversers.java,v
retrieving revision 1.8
retrieving revision 1.8.10.1
diff -u -r1.8 -r1.8.10.1
--- DTMDefaultBaseTraversers.java 27 Nov 2001 00:15:43 -0000 1.8
+++ DTMDefaultBaseTraversers.java 29 Apr 2002 17:49:32 -0000 1.8.10.1
@@ -517,7 +517,7 @@
{
return (m_indexing
&& ExpandedNameTable.ELEMENT
- == (expandedTypeID & ExpandedNameTable.MASK_NODETYPE));
+ == m_expandedNameTable.getType(expandedTypeID));
}
/**
1.3.10.1 +104 -34
xml-xalan/java/src/org/apache/xml/dtm/ref/ExpandedNameTable.java
Index: ExpandedNameTable.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/ExpandedNameTable.java,v
retrieving revision 1.3
retrieving revision 1.3.10.1
diff -u -r1.3 -r1.3.10.1
--- ExpandedNameTable.java 11 Jul 2001 04:00:13 -0000 1.3
+++ ExpandedNameTable.java 29 Apr 2002 17:49:32 -0000 1.3.10.1
@@ -58,6 +58,8 @@
import org.apache.xml.dtm.DTM;
+import java.util.Vector;
+
/**
* This is a default implementation of a table that manages mappings from
* expanded names to expandedNameIDs.
@@ -81,30 +83,27 @@
/** Probably a reference to static pool. */
private DTMStringPool m_namespaceNames;
- public static int BITS_PER_LOCALNAME = 16;
- public static int BITS_PER_NAMESPACE = 10;
-
- public static int MASK_LOCALNAME = 0x0000FFFF;
- public static int MASK_NAMESPACE = 0x03FF0000;
- public static int MASK_NODETYPE = 0xFC000000;
- public static int MASK_NODEHANDLE = 0x000FFFFF;
-
- public static final int ROTAMOUNT_TYPE =
(BITS_PER_NAMESPACE+BITS_PER_LOCALNAME);
+ /** Vector of extended types for this document */
+ private /*static*/ Vector m_extendedTypes;
+ /** Next available extended type */
+ private int m_nextType;
+
// These are all the types prerotated, for caller convenience.
- public static final int ELEMENT = ((int)DTM.ELEMENT_NODE) <<
ROTAMOUNT_TYPE;
- public static final int ATTRIBUTE = ((int)DTM.ATTRIBUTE_NODE) <<
ROTAMOUNT_TYPE;
- public static final int TEXT = ((int)DTM.TEXT_NODE) << ROTAMOUNT_TYPE;
- public static final int CDATA_SECTION = ((int)DTM.CDATA_SECTION_NODE) <<
ROTAMOUNT_TYPE;
- public static final int ENTITY_REFERENCE =
((int)DTM.ENTITY_REFERENCE_NODE) << ROTAMOUNT_TYPE;
- public static final int ENTITY = ((int)DTM.ENTITY_NODE) << ROTAMOUNT_TYPE;
- public static final int PROCESSING_INSTRUCTION =
((int)DTM.PROCESSING_INSTRUCTION_NODE) << ROTAMOUNT_TYPE;
- public static final int COMMENT = ((int)DTM.COMMENT_NODE) <<
ROTAMOUNT_TYPE;
- public static final int DOCUMENT = ((int)DTM.DOCUMENT_NODE) <<
ROTAMOUNT_TYPE;
- public static final int DOCUMENT_TYPE = ((int)DTM.DOCUMENT_TYPE_NODE) <<
ROTAMOUNT_TYPE;
- public static final int DOCUMENT_FRAGMENT
=((int)DTM.DOCUMENT_FRAGMENT_NODE) << ROTAMOUNT_TYPE;
- public static final int NOTATION = ((int)DTM.NOTATION_NODE) <<
ROTAMOUNT_TYPE;
- public static final int NAMESPACE = ((int)DTM.NAMESPACE_NODE) <<
ROTAMOUNT_TYPE;
+ public static final int ELEMENT = ((int)DTM.ELEMENT_NODE) ;
+ public static final int ATTRIBUTE = ((int)DTM.ATTRIBUTE_NODE) ;
+ public static final int TEXT = ((int)DTM.TEXT_NODE) ;
+ public static final int CDATA_SECTION = ((int)DTM.CDATA_SECTION_NODE) ;
+ public static final int ENTITY_REFERENCE =
((int)DTM.ENTITY_REFERENCE_NODE) ;
+ public static final int ENTITY = ((int)DTM.ENTITY_NODE) ;
+ public static final int PROCESSING_INSTRUCTION =
((int)DTM.PROCESSING_INSTRUCTION_NODE) ;
+ public static final int COMMENT = ((int)DTM.COMMENT_NODE) ;
+ public static final int DOCUMENT = ((int)DTM.DOCUMENT_NODE) ;
+ public static final int DOCUMENT_TYPE = ((int)DTM.DOCUMENT_TYPE_NODE) ;
+ public static final int DOCUMENT_FRAGMENT
=((int)DTM.DOCUMENT_FRAGMENT_NODE) ;
+ public static final int NOTATION = ((int)DTM.NOTATION_NODE) ;
+ public static final int NAMESPACE = ((int)DTM.NAMESPACE_NODE) ;
+
/**
* Create an expanded name table that uses private string pool lookup.
@@ -113,6 +112,7 @@
{
m_locNamesPool = new DTMSafeStringPool();
m_namespaceNames = new DTMSafeStringPool();
+ initExtendedTypes();
}
/**
@@ -126,6 +126,22 @@
{
m_locNamesPool = locNamesPool;
m_namespaceNames = namespaceNames;
+ initExtendedTypes();
+ }
+
+ /**
+ * Initialize the vector of extended types with the
+ * basic DOM node types.
+ */
+ private void initExtendedTypes()
+ {
+ m_extendedTypes = new Vector();
+ int i;
+ for (i = 0; i < DTM.NTYPES; i++)
+ {
+ m_extendedTypes.addElement(new ExtendedType(i, "", "") );
+ }
+ m_nextType = m_extendedTypes.size();
}
/**
@@ -141,13 +157,25 @@
*/
public int getExpandedTypeID(String namespace, String localName, int type)
{
- int nsID = (null != namespace) ?
m_namespaceNames.stringToIndex(namespace) : 0;
+ /*int nsID = (null != namespace) ?
m_namespaceNames.stringToIndex(namespace) : 0;
int lnID = m_locNamesPool.stringToIndex(localName);
int expandedTypeID = (type << (BITS_PER_NAMESPACE+BITS_PER_LOCALNAME))
| (nsID << BITS_PER_LOCALNAME) | lnID;
-
return expandedTypeID;
+*/
+ if (null == namespace)
+ namespace = "";
+ if (null == localName)
+ localName = "";
+ for (int i = 0; i < m_extendedTypes.size(); i++)
+ {
+ ExtendedType etype = (ExtendedType)m_extendedTypes.elementAt(i);
+ if( type == etype.nodetype && namespace.equals(etype.namespace) &&
localName.equals(etype.localName))
+ return i;
+ }
+ m_extendedTypes.addElement(new ExtendedType(type, namespace, localName));
+ return m_nextType++;
}
/**
@@ -161,9 +189,17 @@
*/
public int getExpandedTypeID(int type)
{
- int expandedTypeID = (type << (BITS_PER_NAMESPACE+BITS_PER_LOCALNAME));
+ /*int expandedTypeID = (type << (BITS_PER_NAMESPACE+BITS_PER_LOCALNAME));
return expandedTypeID;
+ */
+ for (int i = 0; i < m_extendedTypes.size(); i++)
+ {
+ ExtendedType etype = (ExtendedType)m_extendedTypes.elementAt(i);
+ if( type == etype.nodetype )
+ return i;
+ }
+ return -1; // something's very wrong!
}
/**
@@ -174,7 +210,9 @@
*/
public String getLocalName(int ExpandedNameID)
{
- return m_locNamesPool.indexToString(ExpandedNameID & MASK_LOCALNAME);
+ //return m_locNamesPool.indexToString(ExpandedNameID & MASK_LOCALNAME);
+ ExtendedType etype = (ExtendedType)m_extendedTypes.elementAt
(ExpandedNameID);
+ return etype.localName;
}
/**
@@ -183,9 +221,14 @@
* @param ExpandedNameID an ID that represents an expanded-name.
* @return The id of this local name.
*/
- public static final int getLocalNameID(int ExpandedNameID)
+ public /*static*/ final int getLocalNameID(int ExpandedNameID)
{
- return (ExpandedNameID & MASK_LOCALNAME);
+ //return (ExpandedNameID & MASK_LOCALNAME);
+ ExtendedType etype = (ExtendedType)m_extendedTypes.elementAt
(ExpandedNameID);
+ if (etype.localName.equals(""))
+ return 0;
+ else
+ return ExpandedNameID;
}
@@ -199,8 +242,10 @@
public String getNamespace(int ExpandedNameID)
{
- int id = (ExpandedNameID & MASK_NAMESPACE) >> BITS_PER_LOCALNAME;
- return (0 == id) ? null : m_namespaceNames.indexToString(id);
+ //int id = (ExpandedNameID & MASK_NAMESPACE) >> BITS_PER_LOCALNAME;
+ //return (0 == id) ? null : m_namespaceNames.indexToString(id);
+ ExtendedType etype = (ExtendedType)m_extendedTypes.elementAt
(ExpandedNameID);
+ return (etype.namespace.equals("") ? null : etype.namespace);
}
/**
@@ -209,9 +254,14 @@
* @param ExpandedNameID an ID that represents an expanded-name.
* @return The id of this namespace.
*/
- public static final int getNamespaceID(int ExpandedNameID)
+ public /*static*/ final int getNamespaceID(int ExpandedNameID)
{
- return (ExpandedNameID & MASK_NAMESPACE) >> BITS_PER_LOCALNAME;
+ //return (ExpandedNameID & MASK_NAMESPACE) >> BITS_PER_LOCALNAME;
+ ExtendedType etype = (ExtendedType)m_extendedTypes.elementAt
(ExpandedNameID);
+ if (etype.namespace.equals(""))
+ return 0;
+ else
+ return ExpandedNameID;
}
/**
@@ -220,9 +270,29 @@
* @param ExpandedNameID an ID that represents an expanded-name.
* @return The id of this local name.
*/
- public static final short getType(int ExpandedNameID)
+ public final short getType(int ExpandedNameID)
{
- return (short)(ExpandedNameID >> ROTAMOUNT_TYPE);
+ //return (short)(ExpandedNameID >> ROTAMOUNT_TYPE);
+ ExtendedType etype = (ExtendedType)m_extendedTypes.elementAt
(ExpandedNameID);
+ return (short)etype.nodetype;
+ }
+
+
+ /**
+ * Private class representing an extended type object
+ */
+ private class ExtendedType
+ {
+ private int nodetype;
+ private String namespace;
+ private String localName;
+
+ private ExtendedType (int nodetype, String namespace, String localName)
+ {
+ this.nodetype = nodetype;
+ this.namespace = namespace;
+ this.localName = localName;
+ }
}
}
No revision
No revision
1.27.10.1 +1 -1
xml-xalan/java/src/org/apache/xml/dtm/ref/dom2dtm/DOM2DTM.java
Index: DOM2DTM.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/dom2dtm/DOM2DTM.java,v
retrieving revision 1.27
retrieving revision 1.27.10.1
diff -u -r1.27 -r1.27.10.1
--- DOM2DTM.java 18 Dec 2001 21:55:33 -0000 1.27
+++ DOM2DTM.java 29 Apr 2002 17:49:32 -0000 1.27.10.1
@@ -1232,7 +1232,7 @@
// time, and was wrong anyway since it wasn't coverting handle to
// identity. Inlined it.
int type = _exptype(makeNodeIdentity(nodeHandle));
- type=(NULL != type) ? ExpandedNameTable.getType(type) : NULL;
+ type=(NULL != type) ? getNodeType(nodeHandle) : NULL;
if(TEXT_NODE!=type && CDATA_SECTION_NODE!=type)
return getNode(nodeHandle).getNodeValue();
No revision
No revision
1.27.6.2 +2 -6
xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm/SAX2DTM.java
Index: SAX2DTM.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm/SAX2DTM.java,v
retrieving revision 1.27.6.1
retrieving revision 1.27.6.2
diff -u -r1.27.6.1 -r1.27.6.2
--- SAX2DTM.java 12 Apr 2002 18:26:19 -0000 1.27.6.1
+++ SAX2DTM.java 29 Apr 2002 17:49:32 -0000 1.27.6.2
@@ -584,10 +584,7 @@
{
int expandedTypeID = getExpandedTypeID(nodeHandle);
- // If just testing nonzero, no need to shift...
- //int namespaceID = (expandedTypeID & ExpandedNameTable.MASK_NAMESPACE)
- // >> ExpandedNameTable.BITS_PER_LOCALNAME;
- int namespaceID = (expandedTypeID & ExpandedNameTable.MASK_NAMESPACE);
+ int namespaceID = m_expandedNameTable.getNamespaceID(expandedTypeID);
if (0 == namespaceID)
{
@@ -635,8 +632,7 @@
{
int expandedTypeID = getExpandedTypeID(nodeHandle);
- int namespaceID = (expandedTypeID & ExpandedNameTable.MASK_NAMESPACE)
- >> ExpandedNameTable.BITS_PER_LOCALNAME;
+ int namespaceID = m_expandedNameTable.getNamespaceID(expandedTypeID);
if (0 == namespaceID)
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]