Class AbstractNode

  • All Implemented Interfaces:
    javax.jcr.Item, javax.jcr.Node

    public abstract class AbstractNode
    extends AbstractItem
    implements javax.jcr.Node
    Abstract base class for implementing the JCR Node interface.

    Item methods without a default implementation:

    • Item.accept(javax.jcr.ItemVisitor)
    • Item.getName()
    • Item.getParent()
    • Item.getSession()
    • Item.isModified()
    • Item.isNew()
    • Item.isSame(Item)
    • Item.refresh(boolean)
    • Item.remove()
    • Item.save()

    Node methods without a default implementation:

    • Node.addMixin(String)
    • Node.addNode(String)
    • Node.addNode(String, String)
    • Node.canAddMixin(String)
    • Node.cancelMerge(Version)
    • Node.checkin()
    • Node.checkout()
    • Node.doneMerge(Version)
    • Node.getBaseVersion()
    • Node.getCorrespondingNodePath(String)
    • Node.getDefinition()
    • Node.getIndex()
    • Node.getLock()
    • Node.getNode(String)
    • Node.getNodes()
    • Node.getNodes(String)
    • Node.getPrimaryItem()
    • Node.getProperties()
    • Node.getProperties(String)
    • Node.getReferences()
    • Node.lock(boolean, boolean)
    • Node.merge(String, boolean)
    • Node.orderBefore(String, String)
    • Node.removeMixin(String)
    • Node.restore(Version, String, boolean)
    • Node.setProperty(String, Value)
    • Node.setProperty(String, Value[])
    • Node.unlock()
    • Node.update(String)
    • Field Summary

      • Fields inherited from interface javax.jcr.Node

        JCR_CHILD_NODE_DEFINITION, JCR_CONTENT, JCR_FROZEN_NODE, JCR_PROPERTY_DEFINITION, JCR_ROOT_VERSION, JCR_VERSION_LABELS
    • Constructor Summary

      Constructors 
      Constructor Description
      AbstractNode()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void accept​(javax.jcr.ItemVisitor visitor)
      Accepts the given item visitor.
      javax.jcr.nodetype.NodeType[] getMixinNodeTypes()
      Returns the declared mixin node types of this node.
      java.lang.String getPath()
      Returns the path of this node.
      javax.jcr.nodetype.NodeType getPrimaryNodeType()
      Returns the primary node type of this node.
      javax.jcr.Property getProperty​(java.lang.String relPath)
      Returns the property at the given relative path from this node.
      java.lang.String getUUID()
      Returns the UUID of this node.
      javax.jcr.version.VersionHistory getVersionHistory()
      Returns the version history of this node.
      boolean hasNode​(java.lang.String relPath)
      Checks whether a node at the given relative path exists.
      boolean hasNodes()
      Checks if this node has one or more properties.
      boolean hasProperties()
      Checks if this node has one or more properties.
      boolean hasProperty​(java.lang.String relPath)
      Checks whether a property at the given relative path exists.
      boolean holdsLock()
      Checks if this node holds a lock.
      boolean isCheckedOut()
      Checks whether this node is checked out.
      boolean isLocked()
      Checks if this node is locked.
      boolean isNode()
      Returns true.
      boolean isNodeType​(java.lang.String name)
      Checks whether this node is of the given type.
      void restore​(java.lang.String versionName, boolean removeExisting)
      Restores this node to the version with the given name.
      void restore​(javax.jcr.version.Version version, boolean removeExisting)
      Restores this node to the given version.
      void restoreByLabel​(java.lang.String versionLabel, boolean removeExisting)
      Restores this node to the version with the given label.
      javax.jcr.Property setProperty​(java.lang.String name, boolean value)
      Sets the value of the named property.
      javax.jcr.Property setProperty​(java.lang.String name, double value)
      Sets the value of the named property.
      javax.jcr.Property setProperty​(java.lang.String name, long value)
      Sets the value of the named property.
      javax.jcr.Property setProperty​(java.lang.String name, java.io.InputStream value)
      Sets the value of the named property.
      javax.jcr.Property setProperty​(java.lang.String name, java.lang.String value)
      Sets the value of the named property.
      javax.jcr.Property setProperty​(java.lang.String name, java.lang.String[] strings)
      Sets the value of the named property.
      javax.jcr.Property setProperty​(java.lang.String name, java.lang.String[] strings, int type)
      Sets the value of the named property.
      javax.jcr.Property setProperty​(java.lang.String name, java.lang.String value, int type)
      Sets the value of the named property.
      javax.jcr.Property setProperty​(java.lang.String name, java.util.Calendar value)
      Sets the value of the named property.
      javax.jcr.Property setProperty​(java.lang.String name, javax.jcr.Node value)
      Sets the value of the named property.
      javax.jcr.Property setProperty​(java.lang.String name, javax.jcr.Value[] values, int type)
      Sets the value of the named property.
      javax.jcr.Property setProperty​(java.lang.String name, javax.jcr.Value value, int type)
      Sets the value of the named property.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface javax.jcr.Item

        getAncestor, getDepth, getName, getParent, getSession, isModified, isNew, isSame, refresh, remove, save
      • Methods inherited from interface javax.jcr.Node

        addMixin, addNode, addNode, canAddMixin, cancelMerge, checkin, checkout, doneMerge, followLifecycleTransition, getAllowedLifecycleTransistions, getBaseVersion, getCorrespondingNodePath, getDefinition, getIdentifier, getIndex, getLock, getNode, getNodes, getNodes, getNodes, getPrimaryItem, getProperties, getProperties, getProperties, getReferences, getReferences, getSharedSet, getWeakReferences, getWeakReferences, lock, merge, orderBefore, removeMixin, removeShare, removeSharedSet, restore, setPrimaryType, setProperty, setProperty, setProperty, setProperty, unlock, update
    • Constructor Detail

      • AbstractNode

        public AbstractNode()
    • Method Detail

      • accept

        public void accept​(javax.jcr.ItemVisitor visitor)
                    throws javax.jcr.RepositoryException
        Accepts the given item visitor.

        The default implementation calls ItemVisitor.visit(Node) on the given visitor with this node as the argument.

        Specified by:
        accept in interface javax.jcr.Item
        Parameters:
        visitor - item visitor
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • getPath

        public java.lang.String getPath()
                                 throws javax.jcr.RepositoryException
        Returns the path of this node.

        The default implementation recursively calls this method on the parent node and appends the name and optionally the index of this node to construct the full path. Returns "/" if the parent node is not available (i.e. this is the root node).

        Specified by:
        getPath in interface javax.jcr.Item
        Returns:
        node path
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • isNode

        public boolean isNode()
        Returns true.
        Specified by:
        isNode in interface javax.jcr.Item
        Returns:
        true
      • getMixinNodeTypes

        public javax.jcr.nodetype.NodeType[] getMixinNodeTypes()
                                                        throws javax.jcr.RepositoryException
        Returns the declared mixin node types of this node.

        The default implementation uses the values of the jcr:mixinTypes property to look up the mixin node types from the NodeTypeManager of the current workspace.

        Specified by:
        getMixinNodeTypes in interface javax.jcr.Node
        Returns:
        mixin node types
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • getPrimaryNodeType

        public javax.jcr.nodetype.NodeType getPrimaryNodeType()
                                                       throws javax.jcr.RepositoryException
        Returns the primary node type of this node.

        The default implementation uses the value of the jcr:primaryType property to look up the primary node type from the NodeTypeManager of the current workspace.

        Specified by:
        getPrimaryNodeType in interface javax.jcr.Node
        Returns:
        primary node type
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • getProperty

        public javax.jcr.Property getProperty​(java.lang.String relPath)
                                       throws javax.jcr.PathNotFoundException,
                                              javax.jcr.RepositoryException
        Returns the property at the given relative path from this node.

        The default implementation looks up the parent node of the given relative path and iterates through the properties of that node to find and return the identified property.

        Specified by:
        getProperty in interface javax.jcr.Node
        Parameters:
        relPath - relative path of the property
        Returns:
        property
        Throws:
        javax.jcr.PathNotFoundException - if the property is not found
        javax.jcr.RepositoryException - if an error occurs
      • getUUID

        public java.lang.String getUUID()
                                 throws javax.jcr.UnsupportedRepositoryOperationException,
                                        javax.jcr.RepositoryException
        Returns the UUID of this node.

        The default implementation checks if this node is referenceable (i.e. of type mix:referenceable) and returns the contents of the jcr:uuid property if it is.

        Specified by:
        getUUID in interface javax.jcr.Node
        Returns:
        node UUID
        Throws:
        javax.jcr.UnsupportedRepositoryOperationException - if this node is not referenceable
        javax.jcr.RepositoryException - if an error occurs
      • getVersionHistory

        public javax.jcr.version.VersionHistory getVersionHistory()
                                                           throws javax.jcr.RepositoryException
        Returns the version history of this node.

        The default implementation returns the containing version history of the base version of this node.

        Specified by:
        getVersionHistory in interface javax.jcr.Node
        Returns:
        version history
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • hasNode

        public boolean hasNode​(java.lang.String relPath)
                        throws javax.jcr.RepositoryException
        Checks whether a node at the given relative path exists.

        The default implementation looks up the node using Node.getNode(String) and returns true if a PathNotFoundException is not thrown.

        Specified by:
        hasNode in interface javax.jcr.Node
        Parameters:
        relPath - relative path
        Returns:
        true if a node exists at the given path, false otherwise
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • hasNodes

        public boolean hasNodes()
                         throws javax.jcr.RepositoryException
        Checks if this node has one or more properties.

        The default implementation calls Node.getNodes() and returns true iff returned iterator has at least one element.

        Specified by:
        hasNodes in interface javax.jcr.Node
        Returns:
        true if this node has child nodes, false otherwise
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • hasProperties

        public boolean hasProperties()
                              throws javax.jcr.RepositoryException
        Checks if this node has one or more properties.

        The default implementation calls Node.getProperties() and returns true iff returned iterator has at least one element.

        Note that in normal circumstances (i.e. no weird access controls) this method will always return true since all nodes always have at least the jcr:primaryType property.

        Specified by:
        hasProperties in interface javax.jcr.Node
        Returns:
        true if this node has properties, false otherwise
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • hasProperty

        public boolean hasProperty​(java.lang.String relPath)
                            throws javax.jcr.RepositoryException
        Checks whether a property at the given relative path exists.

        The default implementation looks up the property using Node.getProperty(String) and returns true if a PathNotFoundException is not thrown.

        Specified by:
        hasProperty in interface javax.jcr.Node
        Parameters:
        relPath - relative path
        Returns:
        true if a property exists at the given path, false otherwise
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • holdsLock

        public boolean holdsLock()
                          throws javax.jcr.RepositoryException
        Checks if this node holds a lock.

        The default implementation calls Node.getLock() and returns true iff the holding node of the lock is the same as this node.

        Specified by:
        holdsLock in interface javax.jcr.Node
        Returns:
        true if this node holds a lock, false otherwise
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • isCheckedOut

        public boolean isCheckedOut()
                             throws javax.jcr.RepositoryException
        Checks whether this node is checked out.

        The default implementation checks the jcr:isCheckedOut property if this node is versionable, and recursively calls this method on the parent node if this node is not versionable. A non-versionable root node always returns true from this method.

        Specified by:
        isCheckedOut in interface javax.jcr.Node
        Returns:
        true if this node is checked out, false otherwise
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • isLocked

        public boolean isLocked()
                         throws javax.jcr.RepositoryException
        Checks if this node is locked.

        The default implementation calls Node.getLock() and returns true iff a LockException is not thrown.

        Specified by:
        isLocked in interface javax.jcr.Node
        Returns:
        true if this node is locked, false otherwise
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • isNodeType

        public boolean isNodeType​(java.lang.String name)
                           throws javax.jcr.RepositoryException
        Checks whether this node is of the given type.

        The default implementation iterates through the primary and mixin types and all the supertypes of this node, returning true if a type with the given name is encountered. Returns false if none of the types matches.

        Specified by:
        isNodeType in interface javax.jcr.Node
        Parameters:
        name - type name
        Returns:
        true if this node is of the given type, false otherwise
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • restore

        public void restore​(java.lang.String versionName,
                            boolean removeExisting)
                     throws javax.jcr.RepositoryException
        Restores this node to the version with the given name.

        The default implement retrieves the named Version from the associated VersionHistory and forwards the call to the Node.restore(Version, boolean) method.

        Specified by:
        restore in interface javax.jcr.Node
        Parameters:
        versionName - version name
        removeExisting - passed through
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • restore

        public void restore​(javax.jcr.version.Version version,
                            boolean removeExisting)
                     throws javax.jcr.RepositoryException
        Restores this node to the given version.

        The default implementation forwards the call to the Node.restore(Version, String, boolean) method using the relative path ".".

        Specified by:
        restore in interface javax.jcr.Node
        Parameters:
        version - passed through
        removeExisting - passed through
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • restoreByLabel

        public void restoreByLabel​(java.lang.String versionLabel,
                                   boolean removeExisting)
                            throws javax.jcr.RepositoryException
        Restores this node to the version with the given label.

        The default implement retrieves the labeled Version from the associated VersionHistory and forwards the call to the Node.restore(Version, boolean) method.

        Specified by:
        restoreByLabel in interface javax.jcr.Node
        Parameters:
        versionLabel - version label
        removeExisting - passed through
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • setProperty

        public javax.jcr.Property setProperty​(java.lang.String name,
                                              java.lang.String[] strings)
                                       throws javax.jcr.RepositoryException
        Sets the value of the named property.

        The default implementation uses the ValueFactory of the current Session to create a Value instances from the given string values and forwards the call to the Node.setProperty(String, Value[]) method.

        Specified by:
        setProperty in interface javax.jcr.Node
        Parameters:
        name - property name
        strings - string values
        Returns:
        modified property
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • setProperty

        public javax.jcr.Property setProperty​(java.lang.String name,
                                              java.lang.String value)
                                       throws javax.jcr.RepositoryException
        Sets the value of the named property.

        The default implementation uses the ValueFactory of the current Session to create a Value instance from the given string value and forwards the call to the Node.setProperty(String, Value) method.

        Specified by:
        setProperty in interface javax.jcr.Node
        Parameters:
        name - property name
        value - string value
        Returns:
        modified property
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • setProperty

        public javax.jcr.Property setProperty​(java.lang.String name,
                                              java.io.InputStream value)
                                       throws javax.jcr.RepositoryException
        Sets the value of the named property.

        The default implementation uses the ValueFactory of the current Session to create a Value instance from the given binary value and forwards the call to the Node.setProperty(String, Value) method.

        Specified by:
        setProperty in interface javax.jcr.Node
        Parameters:
        name - property name
        value - binary value
        Returns:
        modified property
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • setProperty

        public javax.jcr.Property setProperty​(java.lang.String name,
                                              boolean value)
                                       throws javax.jcr.RepositoryException
        Sets the value of the named property.

        The default implementation uses the ValueFactory of the current Session to create a Value instance from the given boolean value and forwards the call to the Node.setProperty(String, Value) method.

        Specified by:
        setProperty in interface javax.jcr.Node
        Parameters:
        name - property name
        value - boolean value
        Returns:
        modified property
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • setProperty

        public javax.jcr.Property setProperty​(java.lang.String name,
                                              double value)
                                       throws javax.jcr.RepositoryException
        Sets the value of the named property.

        The default implementation uses the ValueFactory of the current Session to create a Value instance from the given double value and forwards the call to the Node.setProperty(String, Value) method.

        Specified by:
        setProperty in interface javax.jcr.Node
        Parameters:
        name - property name
        value - double value
        Returns:
        modified property
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • setProperty

        public javax.jcr.Property setProperty​(java.lang.String name,
                                              long value)
                                       throws javax.jcr.RepositoryException
        Sets the value of the named property.

        The default implementation uses the ValueFactory of the current Session to create a Value instance from the given long value and forwards the call to the Node.setProperty(String, Value) method.

        Specified by:
        setProperty in interface javax.jcr.Node
        Parameters:
        name - property name
        value - long value
        Returns:
        modified property
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • setProperty

        public javax.jcr.Property setProperty​(java.lang.String name,
                                              java.util.Calendar value)
                                       throws javax.jcr.RepositoryException
        Sets the value of the named property.

        The default implementation uses the ValueFactory of the current Session to create a Value instance from the given date value and forwards the call to the Node.setProperty(String, Value) method.

        Specified by:
        setProperty in interface javax.jcr.Node
        Parameters:
        name - property name
        value - date value
        Returns:
        modified property
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • setProperty

        public javax.jcr.Property setProperty​(java.lang.String name,
                                              javax.jcr.Node value)
                                       throws javax.jcr.RepositoryException
        Sets the value of the named property.

        The default implementation uses the ValueFactory of the current Session to create a Value instance from the given reference value and forwards the call to the Node.setProperty(String, Value) method.

        Specified by:
        setProperty in interface javax.jcr.Node
        Parameters:
        name - property name
        value - reference value
        Returns:
        modified property
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • setProperty

        public javax.jcr.Property setProperty​(java.lang.String name,
                                              javax.jcr.Value value,
                                              int type)
                                       throws javax.jcr.RepositoryException
        Sets the value of the named property.

        The default implementation uses the ValueFactory of the current Session to convert the given value to the given type and forwards the call to the Node.setProperty(String, Value) method.

        Specified by:
        setProperty in interface javax.jcr.Node
        Parameters:
        name - property name
        value - property value
        type - property type
        Returns:
        modified property
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • setProperty

        public javax.jcr.Property setProperty​(java.lang.String name,
                                              javax.jcr.Value[] values,
                                              int type)
                                       throws javax.jcr.RepositoryException
        Sets the value of the named property.

        The default implementation uses the ValueFactory of the current Session to convert the given values to the given type and forwards the call to the Node.setProperty(String, Value[]) method.

        Specified by:
        setProperty in interface javax.jcr.Node
        Parameters:
        name - property name
        values - property values
        type - property type
        Returns:
        modified property
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • setProperty

        public javax.jcr.Property setProperty​(java.lang.String name,
                                              java.lang.String[] strings,
                                              int type)
                                       throws javax.jcr.RepositoryException
        Sets the value of the named property.

        The default implementation uses the ValueFactory of the current Session to create Value instances of the given type from the given string values and forwards the call to the Node.setProperty(String, Value[]) method.

        Specified by:
        setProperty in interface javax.jcr.Node
        Parameters:
        name - property name
        strings - string values
        type - property type
        Returns:
        modified property
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • setProperty

        public javax.jcr.Property setProperty​(java.lang.String name,
                                              java.lang.String value,
                                              int type)
                                       throws javax.jcr.RepositoryException
        Sets the value of the named property.

        The default implementation uses the ValueFactory of the current Session to create a Value instance of the given type from the given string value and forwards the call to the Node.setProperty(String, Value) method.

        Specified by:
        setProperty in interface javax.jcr.Node
        Parameters:
        name - property name
        value - string value
        type - property type
        Returns:
        modified property
        Throws:
        javax.jcr.RepositoryException - if an error occurs