| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.xml.dtm.DTMManager
org.apache.xml.dtm.ref.DTMManagerDefault
public class DTMManagerDefault
The default implementation for the DTMManager.
 %REVIEW% There is currently a reentrancy issue, since the finalizer
 for XRTreeFrag (which runs in the GC thread) wants to call
 DTMManager.release(), and may do so at the same time that the main
 transformation thread is accessing the manager. Our current solution is
 to make most of the manager's methods 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.
| Field Summary | |
|---|---|
| private static boolean | DEBUGSet this to true if you want a basic diagnostics. | 
| private static boolean | DUMPTREESet this to true if you want a dump of the DTM after creation. | 
| protected  org.xml.sax.helpers.DefaultHandler | m_defaultHandlerThe default implementation of ContentHandler, DTDHandler and ErrorHandler. | 
| (package private)  int[] | m_dtm_offsetsMap from DTM identifier numbers to offsets. | 
| protected  DTM[] | m_dtmsMap from DTM identifier numbers to DTM objects that this manager manages. | 
| private  ExpandedNameTable | m_expandedNameTableThe default table for exandedNameID lookups. | 
| protected  XMLReaderManager | m_readerManagerThe cache for XMLReader objects to be used if the user did not supply an XMLReader for a SAXSource or supplied a StreamSource. | 
| Fields inherited from class org.apache.xml.dtm.DTMManager | 
|---|
| IDENT_DTM_DEFAULT, IDENT_DTM_NODE_BITS, IDENT_MAX_DTMS, IDENT_NODE_DEFAULT, m_incremental, m_source_location, m_xsf | 
| Constructor Summary | |
|---|---|
| DTMManagerDefault()Constructor DTMManagerDefault | |
| Method Summary | |
|---|---|
|  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(java.lang.Object xpathCompiler,
                                   int pos)NEEDSDOC Method createDTMIterator NEEDSDOC @param xpathCompiler NEEDSDOC @param pos NEEDSDOC (createDTMIterator) @return | 
|  DTMIterator | createDTMIterator(java.lang.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(javax.xml.transform.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(org.w3c.dom.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. | 
|  org.xml.sax.XMLReader | getXMLReader(javax.xml.transform.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(org.xml.sax.XMLReader reader)Indicates that the XMLReader object is no longer in use for the transform. | 
| Methods inherited from class org.apache.xml.dtm.DTMManager | 
|---|
| getDTMIdentityMask, getIncremental, getNodeIdentityMask, getSource_location, getXMLStringFactory, newInstance, setIncremental, setSource_location, setXMLStringFactory | 
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
|---|
private static final boolean DUMPTREE
private static final boolean DEBUG
protected DTM[] m_dtms
int[] m_dtm_offsets
protected XMLReaderManager m_readerManager
protected org.xml.sax.helpers.DefaultHandler m_defaultHandler
private ExpandedNameTable m_expandedNameTable
| Constructor Detail | 
|---|
public DTMManagerDefault()
| Method Detail | 
|---|
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 DTM
public 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(javax.xml.transform.Source source,
                  boolean unique,
                  DTMWSFilter whiteSpaceFilter,
                  boolean incremental,
                  boolean doIndexing)
getDTM in class DTMManagersource - 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(org.w3c.dom.Node node)
getDTMHandleFromNode in class DTMManagernode - Non-null reference to a DOM node.
public org.xml.sax.XMLReader getXMLReader(javax.xml.transform.Source inputSource)
inputSource - The value returned from the URIResolver.
public void releaseXMLReader(org.xml.sax.XMLReader reader)
reader - The XMLReader to be released.public DTM getDTM(int nodeHandle)
getDTM in class DTMManagernodeHandle - DTM Handle indicating which node to retrieve
public int getDTMIdentity(DTM dtm)
getDTMIdentity in class DTMManagerdtm - The DTM which (hopefully) contains this node.
public boolean release(DTM dtm,
                       boolean shouldHardDelete)
release in class DTMManagerdtm - 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 DTMManagerwhatToShow - 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(java.lang.String xpathString,
                                     PrefixResolver presolver)
createDTMIterator in class DTMManagerxpathString - 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 DTMManagernode - The node handle that the DTMIterator will iterate to.
DTMIterator.
public DTMIterator createDTMIterator(java.lang.Object xpathCompiler,
                                     int pos)
createDTMIterator in class DTMManagerxpathCompiler - ??? 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)
| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||