Class NullElementPointer

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.lang.Comparable, Pointer

    public class NullElementPointer
    extends CollectionPointer
    Used when there is a need to construct a Pointer for a collection element that does not exist. For example, if the path is "foo[3]", but the collection "foo" only has one element or is empty or is null, the NullElementPointer can be used to capture this situation without putting a regular NodePointer into an invalid state. Just create a NullElementPointer with index 2 (= 3 - 1) and a "foo" pointer as the parent.
    Version:
    $Revision: 652884 $ $Date: 2008-05-02 15:02:00 -0500 (Fri, 02 May 2008) $
    Author:
    Dmitri Plotnikov
    See Also:
    Serialized Form
    • Constructor Detail

      • NullElementPointer

        public NullElementPointer​(NodePointer parent,
                                  int index)
        Create a new NullElementPointer.
        Parameters:
        parent - parent pointer
        index - int
    • Method Detail

      • getBaseValue

        public java.lang.Object getBaseValue()
        Description copied from class: NodePointer
        Returns the value represented by the pointer before indexing. So, if the node represents an element of a collection, this method returns the collection itself.
        Overrides:
        getBaseValue in class CollectionPointer
        Returns:
        Object value
      • getImmediateNode

        public java.lang.Object getImmediateNode()
        Description copied from class: NodePointer
        Returns the object the pointer points to; does not convert it to a "canonical" type.
        Overrides:
        getImmediateNode in class CollectionPointer
        Returns:
        Object node
      • isLeaf

        public boolean isLeaf()
        Description copied from class: NodePointer
        If true, this node does not have children
        Overrides:
        isLeaf in class CollectionPointer
        Returns:
        boolean
      • isCollection

        public boolean isCollection()
        Description copied from class: NodePointer
        Returns true if the value of the pointer is an array or a Collection.
        Overrides:
        isCollection in class CollectionPointer
        Returns:
        boolean
      • getPropertyPointer

        public PropertyPointer getPropertyPointer()
        Get the property pointer for this.
        Returns:
        PropertyPointer
      • getValuePointer

        public NodePointer getValuePointer()
        Description copied from class: NodePointer
        If this pointer manages a transparent container, like a variable, this method returns the pointer to the contents. Only an auxiliary (non-node) pointer can (and should) return a value pointer other than itself. Note that you probably don't want to override getValuePointer() directly. Override the getImmediateValuePointer() method instead. The getValuePointer() method is calls getImmediateValuePointer() and, if the result is not this, invokes getValuePointer() recursively. The idea here is to open all nested containers. Let's say we have a container within a container within a container. The getValuePointer() method should then open all those containers and return the pointer to the ultimate contents. It does so with the above recursion.
        Overrides:
        getValuePointer in class CollectionPointer
        Returns:
        NodePointer
      • setValue

        public void setValue​(java.lang.Object value)
        Description copied from class: NodePointer
        Converts the value to the required type and changes the corresponding object to that value.
        Specified by:
        setValue in interface Pointer
        Overrides:
        setValue in class CollectionPointer
        Parameters:
        value - the value to set
      • isActual

        public boolean isActual()
        Description copied from class: NodePointer
        An actual pointer points to an existing part of an object graph, even if it is null. A non-actual pointer represents a part that does not exist at all. For instance consider the pointer "/address/street". If both address and street are not null, the pointer is actual. If address is not null, but street is null, the pointer is still actual. If address is null, the pointer is not actual. (In JavaBeans) if address is not a property of the root bean, a Pointer for this path cannot be obtained at all - actual or otherwise.
        Overrides:
        isActual in class NodePointer
        Returns:
        boolean
      • isContainer

        public boolean isContainer()
        Description copied from class: NodePointer
        If true, this node is auxiliary and can only be used as an intermediate in the chain of pointers.
        Overrides:
        isContainer in class CollectionPointer
        Returns:
        boolean
      • createPath

        public NodePointer createPath​(JXPathContext context)
        Description copied from class: NodePointer
        Called by a child pointer when it needs to create a parent object. Must create an object described by this pointer and return a new pointer that properly describes the new object.
        Overrides:
        createPath in class CollectionPointer
        Parameters:
        context - the owning JXPathContext
        Returns:
        created NodePointer
      • createPath

        public NodePointer createPath​(JXPathContext context,
                                      java.lang.Object value)
        Description copied from class: NodePointer
        Called directly by JXPathContext. Must create path and set value.
        Overrides:
        createPath in class CollectionPointer
        Parameters:
        context - the owning JXPathContext
        value - the new value to set
        Returns:
        created NodePointer
      • getLength

        public int getLength()
        Description copied from class: NodePointer
        If the pointer represents a collection (or collection element), returns the length of the collection. Otherwise returns 1 (even if the value is null).
        Overrides:
        getLength in class CollectionPointer
        Returns:
        int
      • asPath

        public java.lang.String asPath()
        Description copied from class: NodePointer
        Returns an XPath that maps to this Pointer.
        Specified by:
        asPath in interface Pointer
        Overrides:
        asPath in class CollectionPointer
        Returns:
        String xpath expression