java.lang.Object
org.loboevolution.apache.xpath.Expression
org.loboevolution.apache.xpath.objects.XObject
All Implemented Interfaces:
SourceLocator, ExpressionNode, XPathVisitable
Direct Known Subclasses:
NodeSequence, XBoolean, XNumber, XString

public class XObject extends Expression
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.
  • Field Details

    • m_obj

      protected Object m_obj
      The java object which this object wraps.
    • CLASS_NULL

      public static final int CLASS_NULL
      Constant for NULL object type
      See Also:
    • CLASS_UNKNOWN

      public static final int CLASS_UNKNOWN
      Constant for UNKNOWN object type
      See Also:
    • CLASS_BOOLEAN

      public static final int CLASS_BOOLEAN
      Constant for BOOLEAN object type
      See Also:
    • CLASS_NUMBER

      public static final int CLASS_NUMBER
      Constant for NUMBER object type
      See Also:
    • CLASS_STRING

      public static final int CLASS_STRING
      Constant for STRING object type
      See Also:
    • CLASS_NODESET

      public static final int CLASS_NODESET
      Constant for NODESET object type
      See Also:
    • CLASS_RTREEFRAG

      public static final int CLASS_RTREEFRAG
      Constant for RESULT TREE FRAGMENT object type
      See Also:
  • 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

    • setObject

      protected void setObject(Object obj)
    • execute

      public XObject execute(XPathContext xctxt) throws TransformerException
      Execute an expression in the XPath runtime context, and return the result of the expression.
      Specified by:
      execute in class Expression
      Parameters:
      xctxt - The XPath runtime context.
      Returns:
      The result of the expression in the form of a XObject.
      Throws:
      TransformerException - if a runtime exception occurs.
    • 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.
    • 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.
    • 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
    • num

      public double num() throws TransformerException
      Cast result object to a number. Always issues an error.
      Returns:
      0.0
      Throws:
      TransformerException - in case of error in case of error
    • 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
      Throws:
      TransformerException
    • bool

      public boolean bool() throws TransformerException
      Cast result object to a boolean. Always issues an error.
      Returns:
      false
      Throws:
      TransformerException - in case of error in case of error
    • 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
      Throws:
      TransformerException
    • xstr

      public XString xstr()
      Cast result object to a string.
      Returns:
      The string this wraps or the empty string if null
    • str

      public String str()
      Cast result object to a string.
      Returns:
      The object as a string
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • 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
    • iter

      public DTMIterator iter() throws TransformerException
      Cast result object to a nodelist. Always issues an error.
      Returns:
      null
      Throws:
      TransformerException - in case of error in case of error
    • nodeset

      public NodeIterator nodeset() throws TransformerException
      Cast result object to a nodelist. Always issues an error.
      Returns:
      null
      Throws:
      TransformerException - in case of error in case of error
    • nodelist

      public NodeList nodelist() throws TransformerException
      Cast result object to a nodelist. Always issues an error.
      Returns:
      null
      Throws:
      TransformerException - in case of error in case of error
    • mutableNodeset

      public NodeSetDTM mutableNodeset() throws TransformerException
      Cast result object to a nodelist. Always issues an error.
      Returns:
      The object as a NodeSetDTM.
      Throws:
      TransformerException - in case of error in case of error
    • 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 - in case of error in case of error
    • 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 - in case of error
    • 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 - in case of error
    • 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 - in case of error
    • 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
    • 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 - in case of error
    • error

      protected void error(String msg) throws TransformerException
      Tell the user of an error, and probably throw an exception.
      Parameters:
      msg - Error message to issue
      Throws:
      TransformerException - in case of error
    • error

      protected void error(String msg, Object[] args) throws TransformerException
      Tell the user of an error, and probably throw an exception.
      Parameters:
      msg - Error message to issue
      args - Arguments to use in the message
      Throws:
      TransformerException - in case of error
    • callVisitors

      public void callVisitors(XPathVisitor visitor)
      This will traverse the hierarchy, calling the visitor for each member. If the called visitor method returns false, the subtree should not be called.
      Parameters:
      visitor - The visitor whose appropriate method will be called.
    • deepEquals

      public boolean deepEquals(Expression expr)
      Compare this object with another object and see if they are equal, include the sub heararchy.
      Specified by:
      deepEquals in class Expression
      Parameters:
      expr - Another expression object.
      Returns:
      true if this objects class and the expr object's class are the same, and the data contained within both objects are considered equal.