Class NullElementPointer
- java.lang.Object
-
- org.apache.commons.jxpath.ri.model.NodePointer
-
- org.apache.commons.jxpath.ri.model.beans.CollectionPointer
-
- org.apache.commons.jxpath.ri.model.beans.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
-
-
Field Summary
Fields Modifier and Type Field Description private static long
serialVersionUID
-
Fields inherited from class org.apache.commons.jxpath.ri.model.NodePointer
index, locale, parent, UNKNOWN_NAMESPACE, WHOLE_COLLECTION
-
-
Constructor Summary
Constructors Constructor Description NullElementPointer(NodePointer parent, int index)
Create a new NullElementPointer.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
asPath()
Returns an XPath that maps to this Pointer.NodePointer
createPath(JXPathContext context)
Called by a child pointer when it needs to create a parent object.NodePointer
createPath(JXPathContext context, java.lang.Object value)
Called directly by JXPathContext.boolean
equals(java.lang.Object object)
java.lang.Object
getBaseValue()
Returns the value represented by the pointer before indexing.java.lang.Object
getImmediateNode()
Returns the object the pointer points to; does not convert it to a "canonical" type.int
getLength()
If the pointer represents a collection (or collection element), returns the length of the collection.QName
getName()
Returns the name of this node.PropertyPointer
getPropertyPointer()
Get the property pointer for this.NodePointer
getValuePointer()
If this pointer manages a transparent container, like a variable, this method returns the pointer to the contents.int
hashCode()
boolean
isActual()
An actual pointer points to an existing part of an object graph, even if it is null.boolean
isCollection()
Returnstrue
if the value of the pointer is an array or a Collection.boolean
isContainer()
If true, this node is auxiliary and can only be used as an intermediate in the chain of pointers.boolean
isLeaf()
If true, this node does not have childrenvoid
setValue(java.lang.Object value)
Converts the value to the required type and changes the corresponding object to that value.-
Methods inherited from class org.apache.commons.jxpath.ri.model.beans.CollectionPointer
attributeIterator, childIterator, compareChildNodePointers, createChild, createChild, namespaceIterator, namespacePointer, setIndex, testNode
-
Methods inherited from class org.apache.commons.jxpath.ri.model.NodePointer
clone, compareTo, createAttribute, escape, getAbstractFactory, getDefaultNamespaceURI, getImmediateParentPointer, getImmediateValuePointer, getIndex, getLocale, getNamespaceResolver, getNamespaceURI, getNamespaceURI, getNode, getNodeSetByKey, getNodeValue, getParent, getPointerByID, getPointerByKey, getRootNode, getValue, isAttribute, isDefaultNamespace, isLanguage, isNode, isRoot, newChildNodePointer, newNodePointer, printPointerChain, remove, setAttribute, setNamespaceResolver, toString
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
NullElementPointer
public NullElementPointer(NodePointer parent, int index)
Create a new NullElementPointer.- Parameters:
parent
- parent pointerindex
- int
-
-
Method Detail
-
getName
public QName getName()
Description copied from class:NodePointer
Returns the name of this node. Can be null.- Overrides:
getName
in classCollectionPointer
- Returns:
- QName
-
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 classCollectionPointer
- 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 classCollectionPointer
- Returns:
- Object node
-
isLeaf
public boolean isLeaf()
Description copied from class:NodePointer
If true, this node does not have children- Overrides:
isLeaf
in classCollectionPointer
- Returns:
- boolean
-
isCollection
public boolean isCollection()
Description copied from class:NodePointer
Returnstrue
if the value of the pointer is an array or a Collection.- Overrides:
isCollection
in classCollectionPointer
- 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 overridegetValuePointer()
directly. Override thegetImmediateValuePointer()
method instead. ThegetValuePointer()
method is callsgetImmediateValuePointer()
and, if the result is notthis
, invokesgetValuePointer()
recursively. The idea here is to open all nested containers. Let's say we have a container within a container within a container. ThegetValuePointer()
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 classCollectionPointer
- 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 interfacePointer
- Overrides:
setValue
in classCollectionPointer
- 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 classNodePointer
- 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 classCollectionPointer
- 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 classCollectionPointer
- 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 classCollectionPointer
- Parameters:
context
- the owning JXPathContextvalue
- the new value to set- Returns:
- created NodePointer
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classCollectionPointer
-
equals
public boolean equals(java.lang.Object object)
- Overrides:
equals
in classCollectionPointer
-
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 classCollectionPointer
- 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 interfacePointer
- Overrides:
asPath
in classCollectionPointer
- Returns:
- String xpath expression
-
-