org.apache.xpath.objects

Class XObject

Implemented Interfaces:
Cloneable, Serializable, ExpressionNode, SourceLocator, XPathVisitable
Known Direct Subclasses:
NodeSequence, XBoolean, XNumber, XRTreeFrag, XString, XUnresolvedVariable, XUnresolvedVariableSimple

public class XObject
extends Expression
implements Serializable, Cloneable

This class represents an XPath object, and is capable of converting the object to various types, such as a string. This class acts as the base class to other XPath type objects, such as XString, and provides polymorphic casting capabilities.

See Also:
Serialized Form

Nested Class Summary

Field Summary

static int
CLASS_BOOLEAN
Constant for BOOLEAN object type
static int
CLASS_NODESET
Constant for NODESET object type
static int
CLASS_NULL
Constant for NULL object type
static int
CLASS_NUMBER
Constant for NUMBER object type
static int
CLASS_RTREEFRAG
Constant for RESULT TREE FRAGMENT object type
static int
CLASS_STRING
Constant for STRING object type
static int
CLASS_UNKNOWN
Constant for UNKNOWN object type
static int
CLASS_UNRESOLVEDVARIABLE
Represents an unresolved variable type as an integer.

Constructor Summary

XObject()
Create an XObject.
XObject(Object obj)
Create an XObject.

Method Summary

void
allowDetachToRelease(boolean allowRelease)
Specify if it's OK for detach to release the iterator for reuse.
void
appendToFsb(FastStringBuffer fsb)
Cast result object to a string.
boolean
bool()
Cast result object to a boolean.
boolean
boolWithSideEffects()
Cast result object to a boolean, but allow side effects, such as the incrementing of an iterator.
void
callVisitors(ExpressionOwner owner, XPathVisitor visitor)
Object
castToType(int t, XPathContext support)
Cast object to type t.
static XObject
create(Object val)
Create the right XObject based on the type of the object passed.
static XObject
create(Object val, XPathContext xctxt)
Create the right XObject based on the type of the object passed.
boolean
deepEquals(Expression expr)
void
destruct()
Forces the object to release it's resources.
void
detach()
Detaches the DTMIterator from the set which it iterated over, releasing any computational resources and placing the iterator in the INVALID state.
void
dispatchCharactersEvents(ContentHandler ch)
Directly call the characters method on the passed ContentHandler for the string-value.
boolean
equals(XObject obj2)
Tell if two objects are functionally equal.
XObject
execute(XPathContext xctxt)
For support of literal objects in xpaths.
void
fixupVariables(java.util.Vector vars, int globalsSize)
XObjects should not normally need to fix up variables.
XObject
getFresh()
Get a fresh copy of the object.
int
getType()
Tell what kind of class this is.
String
getTypeString()
Given a request type, return the equivalent string.
boolean
greaterThan(XObject obj2)
Tell if one object is greater than the other.
boolean
greaterThanOrEqual(XObject obj2)
Tell if one object is greater than or equal to the other.
DTMIterator
iter()
Cast result object to a nodelist.
boolean
lessThan(XObject obj2)
Tell if one object is less than the other.
boolean
lessThanOrEqual(XObject obj2)
Tell if one object is less than or equal to the other.
NodeSetDTM
mutableNodeset()
Cast result object to a nodelist.
NodeList
nodelist()
Cast result object to a nodelist.
NodeIterator
nodeset()
Cast result object to a nodelist.
boolean
notEquals(XObject obj2)
Tell if two objects are functionally not equal.
double
num()
Cast result object to a number.
double
numWithSideEffects()
Cast result object to a number, but allow side effects, such as the incrementing of an iterator.
Object
object()
Return a java object that's closest to the representation that should be handed to an extension.
void
reset()
Reset for fresh reuse.
int
rtf()
For functions to override.
int
rtf(XPathContext support)
Cast result object to a result tree fragment.
DocumentFragment
rtree()
For functions to override.
DocumentFragment
rtree(XPathContext support)
Cast result object to a result tree fragment.
String
str()
Cast result object to a string.
String
toString()
Return the string representation of the object
XMLString
xstr()
Cast result object to a string.

Methods inherited from class org.apache.xpath.Expression

asIterator, asIteratorRaw, asNode, assertion, bool, canTraverseOutsideSubtree, deepEquals, error, execute, execute, execute, execute, executeCharsToContentHandler, exprAddChild, exprGetChild, exprGetNumChildren, exprGetParent, exprSetParent, fixupVariables, getColumnNumber, getExpressionOwner, getLineNumber, getPublicId, getSystemId, isNodesetExpr, isStableNumber, num, warn, xstr

Field Details

CLASS_BOOLEAN

public static final int CLASS_BOOLEAN
Constant for BOOLEAN object type

Field Value:
1


CLASS_NODESET

public static final int CLASS_NODESET
Constant for NODESET object type

Field Value:
4


CLASS_NULL

public static final int CLASS_NULL
Constant for NULL object type

Field Value:
-1


CLASS_NUMBER

public static final int CLASS_NUMBER
Constant for NUMBER object type

Field Value:
2


CLASS_RTREEFRAG

public static final int CLASS_RTREEFRAG
Constant for RESULT TREE FRAGMENT object type

Field Value:
5


CLASS_STRING

public static final int CLASS_STRING
Constant for STRING object type

Field Value:
3


CLASS_UNKNOWN

public static final int CLASS_UNKNOWN
Constant for UNKNOWN object type

Field Value:
0


CLASS_UNRESOLVEDVARIABLE

public static final int CLASS_UNRESOLVEDVARIABLE
Represents an unresolved variable type as an integer.

Field Value:
600

Constructor Details

XObject

public XObject()
Create an XObject.


XObject

public XObject(Object obj)
Create an XObject.

Parameters:
obj - Can be any object, should be a specific type for derived classes, or null.

Method Details

allowDetachToRelease

public void allowDetachToRelease(boolean allowRelease)
Specify if it's OK for detach to release the iterator for reuse. This function should be called with a value of false for objects that are stored in variables. Calling this with a value of false on a XNodeSet will cause the nodeset to be cached.

Parameters:
allowRelease - true if it is OK for detach to release this iterator for pooling.


appendToFsb

public void appendToFsb(FastStringBuffer fsb)
Cast result object to a string. NEEDSDOC @param fsb


bool

public boolean bool()
            throws TransformerException
Cast result object to a boolean. Always issues an error.

Returns:
false

Throws:
TransformerException -


boolWithSideEffects

public boolean boolWithSideEffects()
            throws TransformerException
Cast result object to a boolean, but allow side effects, such as the incrementing of an iterator.

Returns:
True if there is a next node in the nodeset


callVisitors

public void callVisitors(ExpressionOwner owner,
                         XPathVisitor visitor)
Specified by:
callVisitors in interface XPathVisitable

See Also:
XPathVisitable.callVisitors(ExpressionOwner, XPathVisitor)


castToType

public Object castToType(int t,
                         XPathContext support)
            throws TransformerException
Cast object to type t.

Parameters:
t - Type of object to cast this to
support - XPath context to use for the conversion

Returns:
This object as the given type t

Throws:
TransformerException -


create

public static XObject create(Object val)
Create the right XObject based on the type of the object passed. This function can not make an XObject that exposes DOM Nodes, NodeLists, and NodeIterators to the XSLT stylesheet as node-sets.

Parameters:
val - The java object which this object will wrap.

Returns:
the right XObject based on the type of the object passed.


create

public static XObject create(Object val,
                             XPathContext xctxt)
Create the right XObject based on the type of the object passed. This function can make an XObject that exposes DOM Nodes, NodeLists, and NodeIterators to the XSLT stylesheet as node-sets.

Parameters:
val - The java object which this object will wrap.
xctxt - The XPath context.

Returns:
the right XObject based on the type of the object passed.


deepEquals

public boolean deepEquals(Expression expr)
Overrides:
deepEquals in interface Expression

See Also:
Expression.deepEquals(Expression)


destruct

public void destruct()
Forces the object to release it's resources. This is more harsh than detach().


detach

public void detach()
Detaches the DTMIterator from the set which it iterated over, releasing any computational resources and placing the iterator in the INVALID state. After detach has been invoked, calls to nextNode or previousNode will raise a runtime exception.


dispatchCharactersEvents

public void dispatchCharactersEvents(ContentHandler ch)
            throws SAXException
Directly call the characters method on the passed ContentHandler for the string-value. Multiple calls to the ContentHandler's characters methods may well occur for a single call to this method.

Parameters:
ch - A non-null reference to a ContentHandler.

Throws:
SAXException -


equals

public boolean equals(XObject obj2)
Tell if two objects are functionally equal.

Parameters:
obj2 - Object to compare this to

Returns:
True if this object is equal to the given object


execute

public XObject execute(XPathContext xctxt)
            throws TransformerException
For support of literal objects in xpaths.
Overrides:
execute in interface Expression

Parameters:
xctxt - The XPath execution context.

Returns:
This object.

Throws:
TransformerException -


fixupVariables

public void fixupVariables(java.util.Vector vars,
                           int globalsSize)
XObjects should not normally need to fix up variables.
Overrides:
fixupVariables in interface Expression


getFresh

public XObject getFresh()
Get a fresh copy of the object. For use with variables.

Returns:
This object, unless overridden by subclass.


getType

public int getType()
Tell what kind of class this is.

Returns:
CLASS_UNKNOWN


getTypeString

public String getTypeString()
Given a request type, return the equivalent string. For diagnostic purposes.

Returns:
type string "#UNKNOWN" + object class name


greaterThan

public boolean greaterThan(XObject obj2)
            throws TransformerException
Tell if one object is greater than the other.

Parameters:
obj2 - Object to compare this to

Returns:
True if this object is greater than the given object

Throws:
TransformerException -


greaterThanOrEqual

public boolean greaterThanOrEqual(XObject obj2)
            throws TransformerException
Tell if one object is greater than or equal to the other.

Parameters:
obj2 - Object to compare this to

Returns:
True if this object is greater than or equal to the given object

Throws:
TransformerException -


iter

public DTMIterator iter()
            throws TransformerException
Cast result object to a nodelist. Always issues an error.

Returns:
null

Throws:
TransformerException -


lessThan

public boolean lessThan(XObject obj2)
            throws TransformerException
Tell if one object is less than the other.

Parameters:
obj2 - Object to compare this to

Returns:
True if this object is less than the given object

Throws:
TransformerException -


lessThanOrEqual

public boolean lessThanOrEqual(XObject obj2)
            throws TransformerException
Tell if one object is less than or equal to the other.

Parameters:
obj2 - Object to compare this to

Returns:
True if this object is less than or equal to the given object

Throws:
TransformerException -


mutableNodeset

public NodeSetDTM mutableNodeset()
            throws TransformerException
Cast result object to a nodelist. Always issues an error.

Returns:
The object as a NodeSetDTM.

Throws:
TransformerException -


nodelist

public NodeList nodelist()
            throws TransformerException
Cast result object to a nodelist. Always issues an error.

Returns:
null

Throws:
TransformerException -


nodeset

public NodeIterator nodeset()
            throws TransformerException
Cast result object to a nodelist. Always issues an error.

Returns:
null

Throws:
TransformerException -


notEquals

public boolean notEquals(XObject obj2)
            throws TransformerException
Tell if two objects are functionally not equal.

Parameters:
obj2 - Object to compare this to

Returns:
True if this object is not equal to the given object

Throws:
TransformerException -


num

public double num()
            throws TransformerException
Cast result object to a number. Always issues an error.

Returns:
0.0

Throws:
TransformerException -


numWithSideEffects

public double numWithSideEffects()
            throws TransformerException
Cast result object to a number, but allow side effects, such as the incrementing of an iterator.

Returns:
numeric value of the string conversion from the next node in the NodeSetDTM, or NAN if no node was found


object

public Object object()
Return a java object that's closest to the representation that should be handed to an extension.

Returns:
The object that this class wraps


reset

public void reset()
Reset for fresh reuse.


rtf

public int rtf()
For functions to override.

Returns:
null


rtf

public int rtf(XPathContext support)
Cast result object to a result tree fragment.

Parameters:
support - XPath context to use for the conversion

Returns:
the objec as a result tree fragment.


rtree

public DocumentFragment rtree()
For functions to override.

Returns:
null


rtree

public DocumentFragment rtree(XPathContext support)
Cast result object to a result tree fragment.

Parameters:
support - XPath context to use for the conversion

Returns:
the objec as a result tree fragment.


str

public String str()
Cast result object to a string.

Returns:
The object as a string


toString

public String toString()
Return the string representation of the object

Returns:
the string representation of the object


xstr

public XMLString xstr()
Cast result object to a string.

Returns:
The string this wraps or the empty string if null


Copyright B) 2004 Apache XML Project. All Rights Reserved.