Package org.htmlunit.xpath.xml.dtm.ref
Class ExpandedNameTable
- java.lang.Object
-
- org.htmlunit.xpath.xml.dtm.ref.ExpandedNameTable
-
public class ExpandedNameTable extends java.lang.Object
This is a default implementation of a table that manages mappings from expanded names to expandedNameIDs.%OPT% The performance of the getExpandedTypeID() method is very important to DTM building. To get the best performance out of this class, we implement a simple hash algorithm directly into this class, instead of using the inefficient java.util.Hashtable. The code for the get and put operations are combined in getExpandedTypeID() method to share the same hash calculation code. We only need to implement the rehash() interface which is used to expand the hash table.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
ExpandedNameTable.HashEntry
Inner class which represents a hash table entry.
-
Field Summary
Fields Modifier and Type Field Description static int
ATTRIBUTE
static int
ELEMENT
(package private) ExtendedType
hashET
Workspace for lookup.private int
m_capacity
The capacity of the hash table, i.e.private static ExtendedType[]
m_defaultExtendedTypes
The array to store the default extended types.private ExtendedType[]
m_extendedTypes
Array of extended types for this documentprivate static int
m_initialCapacity
The initial capacity of the hash table.private static int
m_initialSize
The initial size of the m_extendedTypes arrayprivate static float
m_loadFactor
The default load factor of the Hashtable.private int
m_nextType
Next available extended typeprivate ExpandedNameTable.HashEntry[]
m_table
The internal array to store the hash entries.private int
m_threshold
The threshold of the hash table, which is equal to capacity * loadFactor.static int
NAMESPACE
-
Constructor Summary
Constructors Constructor Description ExpandedNameTable()
Create an expanded name table.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getExpandedTypeID(java.lang.String namespace, java.lang.String localName, int type)
Given an expanded name represented by namespace, local name and node type, return an ID.int
getLocalNameID(int expandedNameID)
Given an expanded-name ID, return the local name ID.int
getNamespaceID(int expandedNameID)
Given an expanded-name ID, return the namespace URI ID.short
getType(int expandedNameID)
Given an expanded-name ID, return the local name ID.private void
initExtendedTypes()
Initialize the vector of extended types with the basic DOM node types.private void
rehash()
Increases the capacity of and internally reorganizes the hashtable, in order to accommodate and access its entries more efficiently.
-
-
-
Field Detail
-
m_extendedTypes
private ExtendedType[] m_extendedTypes
Array of extended types for this document
-
m_initialSize
private static final int m_initialSize
The initial size of the m_extendedTypes array- See Also:
- Constant Field Values
-
m_nextType
private int m_nextType
Next available extended type
-
ELEMENT
public static final int ELEMENT
- See Also:
- Constant Field Values
-
ATTRIBUTE
public static final int ATTRIBUTE
- See Also:
- Constant Field Values
-
NAMESPACE
public static final int NAMESPACE
- See Also:
- Constant Field Values
-
hashET
final ExtendedType hashET
Workspace for lookup. NOT THREAD SAFE!
-
m_defaultExtendedTypes
private static final ExtendedType[] m_defaultExtendedTypes
The array to store the default extended types.
-
m_loadFactor
private static final float m_loadFactor
The default load factor of the Hashtable. This is used to calcualte the threshold.- See Also:
- Constant Field Values
-
m_initialCapacity
private static final int m_initialCapacity
The initial capacity of the hash table. Use a bigger number to avoid the cost of expanding the table.- See Also:
- Constant Field Values
-
m_capacity
private int m_capacity
The capacity of the hash table, i.e. the size of the internal HashEntry array.
-
m_threshold
private int m_threshold
The threshold of the hash table, which is equal to capacity * loadFactor. If the number of entries in the hash table is bigger than the threshold, the hash table needs to be expanded.
-
m_table
private ExpandedNameTable.HashEntry[] m_table
The internal array to store the hash entries. Each array member is a slot for a hash bucket.
-
-
Method Detail
-
initExtendedTypes
private void initExtendedTypes()
Initialize the vector of extended types with the basic DOM node types.
-
getExpandedTypeID
public int getExpandedTypeID(java.lang.String namespace, java.lang.String localName, int type)
Given an expanded name represented by namespace, local name and node type, return an ID. If the expanded-name does not exist in the internal tables, the entry will be created, and the ID will be returned. Any additional nodes that are created that have this expanded name will use this ID.- Parameters:
namespace
- The namespacelocalName
- The local nametype
- The node type- Returns:
- the expanded-name id of the node.
-
rehash
private void rehash()
Increases the capacity of and internally reorganizes the hashtable, in order to accommodate and access its entries more efficiently. This method is called when the number of keys in the hashtable exceeds this hashtable's capacity and load factor.
-
getLocalNameID
public final int getLocalNameID(int expandedNameID)
Given an expanded-name ID, return the local name ID.- Parameters:
expandedNameID
- an ID that represents an expanded-name.- Returns:
- The id of this local name.
-
getNamespaceID
public final int getNamespaceID(int expandedNameID)
Given an expanded-name ID, return the namespace URI ID.- Parameters:
expandedNameID
- an ID that represents an expanded-name.- Returns:
- The id of this namespace.
-
getType
public final short getType(int expandedNameID)
Given an expanded-name ID, return the local name ID.- Parameters:
expandedNameID
- an ID that represents an expanded-name.- Returns:
- The id of this local name.
-
-