public class DTMManagerDefault extends DTMManager
synchronized
.
Early tests suggest that doing so is not causing a significant
performance hit in Xalan. However, it should be noted that there
is a possible alternative solution: rewrite release() so it merely
posts a request for release onto a threadsafe queue, and explicitly
process that queue on an infrequent basis during main-thread
activity (eg, when getDTM() is invoked). The downside of that solution
would be a greater delay before the DTM's storage is actually released
for reuse.Modifier and Type | Field and Description |
---|---|
protected org.xml.sax.helpers.DefaultHandler |
m_defaultHandler
The default implementation of ContentHandler, DTDHandler and ErrorHandler.
|
protected DTM[] |
m_dtms
Map from DTM identifier numbers to DTM objects that this manager manages.
|
protected XMLReaderManager |
m_readerManager
The cache for XMLReader objects to be used if the user did not
supply an XMLReader for a SAXSource or supplied a StreamSource.
|
IDENT_DTM_DEFAULT, IDENT_DTM_NODE_BITS, IDENT_MAX_DTMS, IDENT_NODE_DEFAULT, m_incremental, m_source_location, m_xsf
Constructor and Description |
---|
DTMManagerDefault()
Constructor DTMManagerDefault
|
Modifier and Type | Method and Description |
---|---|
void |
addDTM(DTM dtm,
int id)
Add a DTM to the DTM table.
|
void |
addDTM(DTM dtm,
int id,
int offset)
Add a DTM to the DTM table.
|
DTM |
createDocumentFragment()
Method createDocumentFragment
NEEDSDOC (createDocumentFragment) @return
|
DTMIterator |
createDTMIterator(int node)
NEEDSDOC Method createDTMIterator
NEEDSDOC @param node
NEEDSDOC (createDTMIterator) @return
|
DTMIterator |
createDTMIterator(int whatToShow,
DTMFilter filter,
boolean entityReferenceExpansion)
NEEDSDOC Method createDTMIterator
NEEDSDOC @param whatToShow
NEEDSDOC @param filter
NEEDSDOC @param entityReferenceExpansion
NEEDSDOC (createDTMIterator) @return
|
DTMIterator |
createDTMIterator(Object xpathCompiler,
int pos)
NEEDSDOC Method createDTMIterator
NEEDSDOC @param xpathCompiler
NEEDSDOC @param pos
NEEDSDOC (createDTMIterator) @return
|
DTMIterator |
createDTMIterator(String xpathString,
PrefixResolver presolver)
NEEDSDOC Method createDTMIterator
NEEDSDOC @param xpathString
NEEDSDOC @param presolver
NEEDSDOC (createDTMIterator) @return
|
DTM |
getDTM(int nodeHandle)
Return the DTM object containing a representation of this node.
|
DTM |
getDTM(Source source,
boolean unique,
DTMWSFilter whiteSpaceFilter,
boolean incremental,
boolean doIndexing)
Get an instance of a DTM, loaded with the content from the
specified source.
|
int |
getDTMHandleFromNode(Node node)
Given a W3C DOM node, try and return a DTM handle.
|
int |
getDTMIdentity(DTM dtm)
Given a DTM, find the ID number in the DTM tables which addresses
the start of the document.
|
ExpandedNameTable |
getExpandedNameTable(DTM dtm)
return the expanded name table.
|
int |
getFirstFreeDTMID()
Get the first free DTM ID available.
|
XMLReader |
getXMLReader(Source inputSource)
This method returns the SAX2 parser to use with the InputSource
obtained from this URI.
|
boolean |
release(DTM dtm,
boolean shouldHardDelete)
Release the DTMManager's reference(s) to a DTM, making it unmanaged.
|
void |
releaseXMLReader(XMLReader reader)
Indicates that the XMLReader object is no longer in use for the transform.
|
getDTMIdentityMask, getIncremental, getNodeIdentityMask, getSource_location, getXMLStringFactory, newInstance, setIncremental, setSource_location, setXMLStringFactory
protected DTM[] m_dtms
protected XMLReaderManager m_readerManager
protected org.xml.sax.helpers.DefaultHandler m_defaultHandler
public void addDTM(DTM dtm, int id)
dtm
- Should be a valid reference to a DTM.id
- Integer DTM ID to be bound to this DTMpublic void addDTM(DTM dtm, int id, int offset)
dtm
- Should be a valid reference to a DTM.id
- Integer DTM ID to be bound to this DTM.offset
- Integer addressing offset. The internal DTM Node ID is
obtained by adding this offset to the node-number field of the
public DTM Handle. For the first DTM ID accessing each DTM, this is 0;
for overflow addressing it will be a multiple of 1<public int getFirstFreeDTMID()
public DTM getDTM(Source source, boolean unique, DTMWSFilter whiteSpaceFilter, boolean incremental, boolean doIndexing)
getDTM
in class DTMManager
source
- the specification of the source object.unique
- true if the returned DTM must be unique, probably because it
is going to be mutated.whiteSpaceFilter
- Enables filtering of whitespace nodes, and may
be null.incremental
- true if the DTM should be built incrementally, if
possible.doIndexing
- true if the caller considers it worth it to use
indexing schemes.public int getDTMHandleFromNode(Node node)
getDTMHandleFromNode
in class DTMManager
node
- Non-null reference to a DOM node.public XMLReader getXMLReader(Source inputSource)
inputSource
- The value returned from the URIResolver.public void releaseXMLReader(XMLReader reader)
reader
- The XMLReader to be released.public DTM getDTM(int nodeHandle)
getDTM
in class DTMManager
nodeHandle
- DTM Handle indicating which node to retrievepublic int getDTMIdentity(DTM dtm)
getDTMIdentity
in class DTMManager
dtm
- The DTM which (hopefully) contains this node.public boolean release(DTM dtm, boolean shouldHardDelete)
release
in class DTMManager
dtm
- the DTM to be released.shouldHardDelete
- If false, this call is a suggestion rather than an
order, and we may not actually release the DTM. This is intended to
support intelligent caching of documents... which is not implemented
in this version of the DTM manager.public DTM createDocumentFragment()
createDocumentFragment
in class DTMManager
public DTMIterator createDTMIterator(int whatToShow, DTMFilter filter, boolean entityReferenceExpansion)
createDTMIterator
in class DTMManager
whatToShow
- This flag specifies which node types may appear in
the logical view of the tree presented by the iterator. See the
description of NodeFilter
for the set of possible
SHOW_
values.These flags can be combined using
OR
.filter
- The NodeFilter
to be used with this
DTMFilter
, or null
to indicate no filter.entityReferenceExpansion
- The value of this flag determines
whether entity reference nodes are expanded.DTMIterator
.public DTMIterator createDTMIterator(String xpathString, PrefixResolver presolver)
createDTMIterator
in class DTMManager
xpathString
- Must be a valid string expressing a
UnionExpr.presolver
- An object that can resolve prefixes to namespace URLs.DTMIterator
.public DTMIterator createDTMIterator(int node)
createDTMIterator
in class DTMManager
node
- The node handle that the DTMIterator will iterate to.DTMIterator
.public DTMIterator createDTMIterator(Object xpathCompiler, int pos)
createDTMIterator
in class DTMManager
xpathCompiler
- ??? Somehow we need to pass in a subpart of the
expression. I hate to do this with strings, since the larger expression
has already been parsed.pos
- The position in the expression.DTMIterator
.public ExpandedNameTable getExpandedNameTable(DTM dtm)
Copyright © 2018 JBoss by Red Hat. All rights reserved.