Class NullElementPointer

All Implemented Interfaces:
Serializable, Cloneable, Comparable, Pointer

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.
See Also:
  • Constructor Details

    • NullElementPointer

      public NullElementPointer(NodePointer parent, int index)
      Constructs a new NullElementPointer.
      Parameters:
      parent - parent pointer
      index - int
  • Method Details

    • asPath

      public 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
    • createPath

      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, 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
    • equals

      public boolean equals(Object object)
      Overrides:
      equals in class CollectionPointer
    • getBaseValue

      public Object getBaseValue()
      Description copied from class: NodePointer
      Gets 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

      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
    • 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:
      the length.
    • getName

      public QName getName()
      Description copied from class: NodePointer
      Gets the name of this node. Can be null.
      Overrides:
      getName in class CollectionPointer
      Returns:
      QName The name of this node. Can be null.
    • getPropertyPointer

      Gets the property pointer for this.
      Returns:
      PropertyPointer
    • 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
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class CollectionPointer
    • 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
    • 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
    • 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
    • isLeaf

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

      public void setValue(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