org.apache.xpath

Class SourceTreeManager

public class SourceTreeManager extends Object

This class bottlenecks all management of source trees. The methods in this class should allow easy garbage collection of source trees (not yet!), and should centralize parsing for those source trees.
Method Summary
StringfindURIFromDoc(int owner)
Given a document, find the URL associated with that document.
intgetNode(Source source)
Given a Source object, find the node associated with it.
intgetSourceTree(String base, String urlString, SourceLocator locator, XPathContext xctxt)
Get the source tree from the a base URL and a URL string.
intgetSourceTree(Source source, SourceLocator locator, XPathContext xctxt)
Get the source tree from the input source.
URIResolvergetURIResolver()
Get the object that will be used to resolve URIs used in document(), etc.
static XMLReadergetXMLReader(Source inputSource, SourceLocator locator)
This method returns the SAX2 parser to use with the InputSource obtained from this URI.
intparseToNode(Source source, SourceLocator locator, XPathContext xctxt)
Try to create a DOM source tree from the input source.
voidputDocumentInCache(int n, Source source)
Put the source tree root node in the document cache.
voidremoveDocumentFromCache(int n)
JJK: Support
voidreset()
Reset the list of SourceTree objects that this manager manages.
SourceresolveURI(String base, String urlString, SourceLocator locator)
This will be called by the processor when it encounters an xsl:include, xsl:import, or document() function.
voidsetURIResolver(URIResolver resolver)
Set an object that will be used to resolve URIs used in document(), etc.

Method Detail

findURIFromDoc

public String findURIFromDoc(int owner)
Given a document, find the URL associated with that document.

Parameters: owner Document that was previously processed by this liaison.

Returns: The base URI of the owner argument.

getNode

public int getNode(Source source)
Given a Source object, find the node associated with it.

Parameters: source The Source object to act as the key.

Returns: The node that is associated with the Source, or null if not found.

getSourceTree

public int getSourceTree(String base, String urlString, SourceLocator locator, XPathContext xctxt)
Get the source tree from the a base URL and a URL string.

Parameters: base The base URI to use if the urlString is relative. urlString An absolute or relative URL string. locator The location of the caller, for diagnostic purposes.

Returns: should be a non-null reference to the node identified by the base and urlString.

Throws: TransformerException If the URL can not resolve to a node.

getSourceTree

public int getSourceTree(Source source, SourceLocator locator, XPathContext xctxt)
Get the source tree from the input source.

Parameters: source The Source object that should identify the desired node. locator The location of the caller, for diagnostic purposes.

Returns: non-null reference to a node.

Throws: TransformerException if the Source argument can't be resolved to a node.

getURIResolver

public URIResolver getURIResolver()
Get the object that will be used to resolve URIs used in document(), etc.

Returns: An object that implements the URIResolver interface, or null.

getXMLReader

public static XMLReader getXMLReader(Source inputSource, SourceLocator locator)
This method returns the SAX2 parser to use with the InputSource obtained from this URI. It may return null if any SAX2-conformant XML parser can be used, or if getInputSource() will also return null. The parser must be free for use (i.e. not currently in use for another parse().

Parameters: inputSource The value returned from the URIResolver. locator The location of the original caller, for diagnostic purposes.

Returns: a SAX2 XMLReader to use to resolve the inputSource argument.

Throws: TransformerException if the reader can not be created.

parseToNode

public int parseToNode(Source source, SourceLocator locator, XPathContext xctxt)
Try to create a DOM source tree from the input source.

Parameters: source The Source object that identifies the source node. locator The location of the caller, for diagnostic purposes.

Returns: non-null reference to node identified by the source argument.

Throws: TransformerException if the source argument can not be resolved to a source node.

putDocumentInCache

public void putDocumentInCache(int n, Source source)
Put the source tree root node in the document cache. TODO: This function needs to be a LOT more sophisticated.

Parameters: n The node to cache. source The Source object to cache.

removeDocumentFromCache

public void removeDocumentFromCache(int n)
JJK: Support kluge in ElemForEach. TODO: This function is highly dangerous. Cache management must be improved.

Parameters: n The node to remove.

reset

public void reset()
Reset the list of SourceTree objects that this manager manages.

resolveURI

public Source resolveURI(String base, String urlString, SourceLocator locator)
This will be called by the processor when it encounters an xsl:include, xsl:import, or document() function.

Parameters: base The base URI that should be used. urlString Value from an xsl:import or xsl:include's href attribute, or a URI specified in the document() function.

Returns: a Source that can be used to process the resource.

Throws: IOException TransformerException

setURIResolver

public void setURIResolver(URIResolver resolver)
Set an object that will be used to resolve URIs used in document(), etc.

Parameters: resolver An object that implements the URIResolver interface, or null.

Copyright © 2005 Apache XML Project. All Rights Reserved.