org.modeshape.jcr.value.basic

## Class IdentifierPath

- java.lang.Object
- - org.modeshape.jcr.value.basic.AbstractPath
  - - org.modeshape.jcr.value.basic.IdentifierPath

- All Implemented Interfaces:
    Serializable, Comparable<Path>, Iterable<Path.Segment>, Path, Readable

      @Immutable
      public class IdentifierPath
      extends AbstractPath

  Optimized implementation of `Path` that serves as a JCR identifier path.
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.modeshape.jcr.value.Path

      `Path.Segment`

  - ### Field Summary

    - ### Fields inherited from class org.modeshape.jcr.value.basic.AbstractPath

      `EMPTY_PATH_ITERATOR, SELF_PATH`

    - ### Fields inherited from interface org.modeshape.jcr.value.Path

      `DEFAULT_DECODER, DEFAULT_ENCODER, DEFAULT_INDEX, DELIMITER, DELIMITER_STR, IDENTIFIER_LEADING_TERMINAL, IDENTIFIER_TRAILING_TERMINAL, JSR283_DECODER, JSR283_ENCODER, NO_OP_DECODER, NO_OP_ENCODER, PARENT, PARENT_NAME, PARENT_SEGMENT, ROOT_NAME, ROOT_PATH, SELF, SELF_NAME, SELF_SEGMENT, URL_DECODER, URL_ENCODER`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `IdentifierPath(IdentifierPathSegment idSegment)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `compareTo(Path other)`
    `boolean` | `endsWith(Name nameOfLastSegment)` Determine if the path's `Path.getLastSegment()` has the supplied name and no `SNS index`.
    `boolean` | `endsWith(Name nameOfLastSegment, int snsIndex)` Determine if the path's `Path.getLastSegment()` has the supplied name and `SNS index`.
    `boolean` | `equals(Object obj)`
    `Path` | `getAncestor(int degree)` Return the path to the ancestor of the supplied degree.
    `Path` | `getCanonicalPath()` Get the canonical form of this path.
    `Path` | `getCommonAncestor(Path that)` Find the lowest common ancestor of this path and the supplied path.
    `Path.Segment` | `getLastSegment()` Get the last segment in this path.
    `Path` | `getNormalizedPath()` Get a normalized path with as many ".." segments and all "." resolved.
    `Path` | `getParent()` Return the path to the parent, or this path if it is the `root`.
    `Path.Segment` | `getSegment(int index)` Get the segment at the supplied index.
    `Path.Segment[]` | `getSegmentsArray()` Obtain a copy of the segments in this path.
    `List<Path.Segment>` | `getSegmentsList()` Get an unmodifiable list of the path segments.
    `protected Iterator<Path.Segment>` | `getSegmentsOfParent()` Method used by `AbstractPath.equals(Object)` implementation to quickly get an Iterator over the segments in the parent.
    `String` | `getString()` Get the string form of the object.
    `String` | `getString(NamespaceRegistry namespaceRegistry)` Get the string form of the object, using the supplied namespace registry to convert any namespace URIs to prefixes.
    `String` | `getString(NamespaceRegistry namespaceRegistry, TextEncoder encoder)` Get the encoded string form of the object, using the supplied namespace registry to convert the any namespace URIs to prefixes.
    `String` | `getString(NamespaceRegistry namespaceRegistry, TextEncoder encoder, TextEncoder delimiterEncoder)` Get the encoded string form of the object, using the supplied namespace registry to convert the names' namespace URIs to prefixes and the supplied encoder to encode characters, and using the second delimiter to encode (or convert) the delimiter used between the namespace prefix and the local part of any names.
    `String` | `getString(TextEncoder encoder)` Get the encoded string form of the object, using the supplied encoder to encode characters.
    `boolean` | `hasSameAncestor(Path that)` Determine whether this path and the supplied path have the same immediate ancestor.
    `boolean` | `isAbsolute()` Return whether this path is an absolute path.
    `boolean` | `isAncestorOf(Path descendant)` Determine whether this path is an ancestor of the supplied path.
    `boolean` | `isAtOrAbove(Path other)` Determine whether this path is the `same as` to or a `ancestor of` the supplied path.
    `boolean` | `isAtOrBelow(Path other)` Determine whether this path is the `same as` to or a `descendant of` the supplied path.
    `boolean` | `isDescendantOf(Path ancestor)` Determine whether this path is an descendant of the supplied path.
    `boolean` | `isIdentifier()` Returns whether this path represents an identifier path.
    `boolean` | `isNormalized()` Return whether this path is normalized and contains no unnecessary "." segments and as few ".." segments as possible.
    `boolean` | `isRoot()` Return whether this path represents the root path.
    `boolean` | `isSameAs(Path other)` Determine whether this path represents the same as the supplied path.
    `Iterator<Path.Segment>` | `iterator()`
    `Path` | `relativeToRoot()` Obtain a path that is relative to the root node.
    `Path` | `resolve(Path relativePath)` Get the absolute path by resolving the supplied relative (non-absolute) path against this absolute path.
    `int` | `size()` Return the number of segments in this path.
    `Path` | `subpath(int beginIndex)` Return a new path consisting of the segments starting at `beginIndex` index (inclusive).
    `Path` | `subpath(int beginIndex, int endIndex)` Return a new path consisting of the segments between the `beginIndex` index (inclusive) and the `endIndex` index (exclusive).

    - ### Methods inherited from class org.modeshape.jcr.value.basic.AbstractPath

      `createSegmentsSubList, doGetString, hashCode, isNormalized, pathsFromRoot, relativeTo, resolveAgainst, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### IdentifierPath

          public IdentifierPath(IdentifierPathSegment idSegment)

  - ### Method Detail

    - #### getAncestor

          public Path getAncestor(int degree)

      Description copied from interface: `Path`
      Return the path to the ancestor of the supplied degree. An ancestor of degree `x` is the path that is `x` levels up along the path. For example, `degree = 0` returns this path, while `degree = 1` returns the parent of this path, `degree = 2` returns the grandparent of this path, and so on. Note that the result may be unexpected if this path is not `normalized`, as a non-normalized path contains ".." and "." segments.
      Returns:
        the ancestor of the supplied degree

    - #### getSegmentsOfParent

          protected Iterator<Path.Segment> getSegmentsOfParent()

      Description copied from class: `AbstractPath`
      Method used by `AbstractPath.equals(Object)` implementation to quickly get an Iterator over the segments in the parent.
      Specified by:
        `getSegmentsOfParent` in class `AbstractPath`
      Returns:
        the iterator over the segments; never null, but may not have any elements

    - #### getCanonicalPath

          public Path getCanonicalPath()

      Description copied from interface: `Path`
      Get the canonical form of this path. A canonical path has is `absolute` and `Path.isNormalized()`.
      Specified by:
        `getCanonicalPath` in interface `Path`
      Overrides:
        `getCanonicalPath` in class `AbstractPath`
      Returns:
        the canonical path, or this object if it is already in its canonical form

    - #### getCommonAncestor

          public Path getCommonAncestor(Path that)

      Description copied from interface: `Path`
      Find the lowest common ancestor of this path and the supplied path.
      Specified by:
        `getCommonAncestor` in interface `Path`
      Overrides:
        `getCommonAncestor` in class `AbstractPath`
      Parameters:
        `that` - the other path
      Returns:
        the lowest common ancestor, which may be the root path if there is no other.

    - #### getLastSegment

          public Path.Segment getLastSegment()

      Description copied from interface: `Path`
      Get the last segment in this path.
      Specified by:
        `getLastSegment` in interface `Path`
      Overrides:
        `getLastSegment` in class `AbstractPath`
      Returns:
        the last segment, or null if the path is empty

    - #### endsWith

          public boolean endsWith(Name nameOfLastSegment)

      Description copied from interface: `Path`
      Determine if the path's `Path.getLastSegment()` has the supplied name and no `SNS index`.
      Specified by:
        `endsWith` in interface `Path`
      Overrides:
        `endsWith` in class `AbstractPath`
      Parameters:
        `nameOfLastSegment` - the name
      Returns:
        return true if the supplied name is the name in the path's last segment (and there is no SNS index), or false otherwise

    - #### endsWith

          public boolean endsWith(Name nameOfLastSegment,
                         int snsIndex)

      Description copied from interface: `Path`
      Determine if the path's `Path.getLastSegment()` has the supplied name and `SNS index`.
      Specified by:
        `endsWith` in interface `Path`
      Overrides:
        `endsWith` in class `AbstractPath`
      Parameters:
        `nameOfLastSegment` - the name
        `snsIndex` - the SNS index
      Returns:
        return true if the path's last segment has the supplied name and SNS, or false otherwise

    - #### getNormalizedPath

          public Path getNormalizedPath()

      Description copied from interface: `Path`
      Get a normalized path with as many ".." segments and all "." resolved. The relative path ".", however, will return itself as the normalized path, since it cannot be resolved any further.
      Specified by:
        `getNormalizedPath` in interface `Path`
      Overrides:
        `getNormalizedPath` in class `AbstractPath`
      Returns:
        the normalized path, or this object if this path is already normalized

    - #### relativeToRoot

          public Path relativeToRoot()

      Description copied from interface: `Path`
      Obtain a path that is relative to the root node. This is equivalent to calling `Path.relativeTo(Path)` with the root path.
      Specified by:
        `relativeToRoot` in interface `Path`
      Overrides:
        `relativeToRoot` in class `AbstractPath`
      Returns:
        the relative path from the root node; never null

    - #### getParent

          public Path getParent()

      Description copied from interface: `Path`
      Return the path to the parent, or this path if it is the `root`. This is an efficient operation that does not require copying any data.
      Specified by:
        `getParent` in interface `Path`
      Overrides:
        `getParent` in class `AbstractPath`
      Returns:
        the parent path, or this null if it is already the root

    - #### getSegment

          public Path.Segment getSegment(int index)

      Description copied from interface: `Path`
      Get the segment at the supplied index.
      Specified by:
        `getSegment` in interface `Path`
      Overrides:
        `getSegment` in class `AbstractPath`
      Parameters:
        `index` - the index
      Returns:
        the segment

    - #### getSegmentsArray

          public Path.Segment[] getSegmentsArray()

      Description copied from interface: `Path`
      Obtain a copy of the segments in this path. None of the segments are encoded.
      Specified by:
        `getSegmentsArray` in interface `Path`
      Overrides:
        `getSegmentsArray` in class `AbstractPath`
      Returns:
        the array of segments as a copy

    - #### getSegmentsList

          public List<Path.Segment> getSegmentsList()

      Description copied from interface: `Path`
      Get an unmodifiable list of the path segments.
      Returns:
        the unmodifiable list of path segments; never null

    - #### getString

          public String getString()

      Description copied from interface: `Readable`
      Get the string form of the object. A `default encoder` is used to encode characters.
      Specified by:
        `getString` in interface `Readable`
      Overrides:
        `getString` in class `AbstractPath`
      Returns:
        the encoded string
      See Also:
        `Readable.getString(TextEncoder)`

    - #### getString

          public String getString(TextEncoder encoder)

      Description copied from interface: `Readable`
      Get the encoded string form of the object, using the supplied encoder to encode characters.
      Specified by:
        `getString` in interface `Readable`
      Overrides:
        `getString` in class `AbstractPath`
      Parameters:
        `encoder` - the encoder to use, or null if the `default encoder` should be used
      Returns:
        the encoded string
      See Also:
        `Readable.getString()`

    - #### getString

          public String getString(NamespaceRegistry namespaceRegistry)

      Description copied from interface: `Readable`
      Get the string form of the object, using the supplied namespace registry to convert any namespace URIs to prefixes. A `default encoder` is used to encode characters.
      Specified by:
        `getString` in interface `Readable`
      Overrides:
        `getString` in class `AbstractPath`
      Parameters:
        `namespaceRegistry` - the namespace registry that should be used to obtain the prefix for any namespace URIs
      Returns:
        the encoded string
      See Also:
        `Readable.getString(NamespaceRegistry,TextEncoder)`

    - #### getString

          public String getString(NamespaceRegistry namespaceRegistry,
                         TextEncoder encoder)

      Description copied from interface: `Readable`
      Get the encoded string form of the object, using the supplied namespace registry to convert the any namespace URIs to prefixes.
      Specified by:
        `getString` in interface `Readable`
      Overrides:
        `getString` in class `AbstractPath`
      Parameters:
        `namespaceRegistry` - the namespace registry that should be used to obtain the prefix for the namespace URIs
        `encoder` - the encoder to use, or null if the `default encoder` should be used
      Returns:
        the encoded string
      See Also:
        `Readable.getString(NamespaceRegistry)`

    - #### getString

          public String getString(NamespaceRegistry namespaceRegistry,
                         TextEncoder encoder,
                         TextEncoder delimiterEncoder)

      Description copied from interface: `Readable`
      Get the encoded string form of the object, using the supplied namespace registry to convert the names' namespace URIs to prefixes and the supplied encoder to encode characters, and using the second delimiter to encode (or convert) the delimiter used between the namespace prefix and the local part of any names.
      Specified by:
        `getString` in interface `Readable`
      Overrides:
        `getString` in class `AbstractPath`
      Parameters:
        `namespaceRegistry` - the namespace registry that should be used to obtain the prefix for the namespace URIs in the segment `names`
        `encoder` - the encoder to use for encoding the local part and namespace prefix of any names, or null if the `default encoder` should be used
        `delimiterEncoder` - the encoder to use for encoding the delimiter between the local part and namespace prefix of any names, or null if the standard delimiter should be used
      Returns:
        the encoded string
      See Also:
        `Readable.getString(NamespaceRegistry)`, `Readable.getString(NamespaceRegistry, TextEncoder)`

    - #### hasSameAncestor

          public boolean hasSameAncestor(Path that)

      Description copied from interface: `Path`
      Determine whether this path and the supplied path have the same immediate ancestor. In other words, this method determines whether the node represented by this path is a sibling of the node represented by the supplied path.
      Specified by:
        `hasSameAncestor` in interface `Path`
      Overrides:
        `hasSameAncestor` in class `AbstractPath`
      Parameters:
        `that` - the other path
      Returns:
        true if this path and the supplied path have the same immediate ancestor.

    - #### isAbsolute

          public boolean isAbsolute()

      Description copied from interface: `Path`
      Return whether this path is an absolute path. A path is either relative or `absolute`. An absolute path starts with a "/".
      Returns:
        true if the path is absolute, or false otherwise

    - #### isIdentifier

          public boolean isIdentifier()

      Description copied from interface: `Path`
      Returns whether this path represents an identifier path. An identifier path is absolute, and contains a single `identifier Segment` that contains an identifier in the name.
      Specified by:
        `isIdentifier` in interface `Path`
      Overrides:
        `isIdentifier` in class `AbstractPath`
      Returns:
        true if this path is an identifier path, or false otherwise.

    - #### isNormalized

          public boolean isNormalized()

      Description copied from interface: `Path`
      Return whether this path is normalized and contains no unnecessary "." segments and as few ".." segments as possible. For example, the path "../a" is normalized, while "/a/b/c/../d" is not normalized.
      Returns:
        true if this path is normalized, or false otherwise

    - #### isRoot

          public boolean isRoot()

      Description copied from interface: `Path`
      Return whether this path represents the root path.
      Returns:
        true if this path is the root path, or false otherwise

    - #### isSameAs

          public boolean isSameAs(Path other)

      Description copied from interface: `Path`
      Determine whether this path represents the same as the supplied path. This is equivalent to calling `this.compareTo(other) == 0` .
      Specified by:
        `isSameAs` in interface `Path`
      Overrides:
        `isSameAs` in class `AbstractPath`
      Parameters:
        `other` - the other path to compare with this path; may be null
      Returns:
        true if the paths are equivalent, or false otherwise

    - #### isAncestorOf

          public boolean isAncestorOf(Path descendant)

      Description copied from interface: `Path`
      Determine whether this path is an ancestor of the supplied path. A path is considered an ancestor of another path if the the ancestor path appears in its entirety at the beginning of the descendant path, and where the descendant path contains at least one additional segment.
      Specified by:
        `isAncestorOf` in interface `Path`
      Overrides:
        `isAncestorOf` in class `AbstractPath`
      Parameters:
        `descendant` - the path that may be the descendant; may be null
      Returns:
        true if this path is an ancestor of the supplied path, or false otherwise

    - #### isDescendantOf

          public boolean isDescendantOf(Path ancestor)

      Description copied from interface: `Path`
      Determine whether this path is an descendant of the supplied path. A path is considered a descendant of another path if the the descendant path starts exactly with the entire ancestor path but contains at least one additional segment.
      Specified by:
        `isDescendantOf` in interface `Path`
      Overrides:
        `isDescendantOf` in class `AbstractPath`
      Parameters:
        `ancestor` - the path that may be the ancestor; may be null
      Returns:
        true if this path is an descendant of the supplied path, or false otherwise

    - #### isAtOrAbove

          public boolean isAtOrAbove(Path other)

      Description copied from interface: `Path`
      Determine whether this path is the `same as` to or a `ancestor of` the supplied path. This method is equivalent to (but may be more efficient than) calling `isSame(other) || isAncestor(other)`, and is a convenience method that is identical to calling `other.isAtOrBelow(this)`.
      Specified by:
        `isAtOrAbove` in interface `Path`
      Overrides:
        `isAtOrAbove` in class `AbstractPath`
      Parameters:
        `other` - the other path to compare with this path; may be null
      Returns:
        true if the paths are equivalent or if this path is considered an ancestor of the other path, or false otherwise

    - #### isAtOrBelow

          public boolean isAtOrBelow(Path other)

      Description copied from interface: `Path`
      Determine whether this path is the `same as` to or a `descendant of` the supplied path. This method is equivalent to (but may be more efficient than) calling `isSame(other) || isAncestor(other)`.
      Specified by:
        `isAtOrBelow` in interface `Path`
      Overrides:
        `isAtOrBelow` in class `AbstractPath`
      Parameters:
        `other` - the other path to compare with this path; may be null
      Returns:
        true if the paths are equivalent or if this path is considered a descendant of the other path, or false otherwise

    - #### resolve

          public Path resolve(Path relativePath)

      Description copied from interface: `Path`
      Get the absolute path by resolving the supplied relative (non-absolute) path against this absolute path.
      Specified by:
        `resolve` in interface `Path`
      Overrides:
        `resolve` in class `AbstractPath`
      Parameters:
        `relativePath` - the relative path that is to be resolved against this path
      Returns:
        the absolute and normalized path resolved from this path and the supplied absolute path

    - #### iterator

          public Iterator<Path.Segment> iterator()

      Specified by:
        `iterator` in interface `Iterable<Path.Segment>`
      Overrides:
        `iterator` in class `AbstractPath`

    - #### size

          public int size()

      Description copied from interface: `Path`
      Return the number of segments in this path.
      Returns:
        the number of path segments

    - #### subpath

          public Path subpath(int beginIndex)

      Description copied from interface: `Path`
      Return a new path consisting of the segments starting at `beginIndex` index (inclusive). This is equivalent to calling `path.subpath(beginIndex,path.size()-1)`.
      Specified by:
        `subpath` in interface `Path`
      Overrides:
        `subpath` in class `AbstractPath`
      Parameters:
        `beginIndex` - the beginning index, inclusive.
      Returns:
        the specified subpath

    - #### subpath

          public Path subpath(int beginIndex,
                     int endIndex)

      Description copied from interface: `Path`
      Return a new path consisting of the segments between the `beginIndex` index (inclusive) and the `endIndex` index (exclusive).
      Specified by:
        `subpath` in interface `Path`
      Overrides:
        `subpath` in class `AbstractPath`
      Parameters:
        `beginIndex` - the beginning index, inclusive.
        `endIndex` - the ending index, exclusive.
      Returns:
        the specified subpath

    - #### compareTo

          public int compareTo(Path other)

      Specified by:
        `compareTo` in interface `Comparable<Path>`
      Overrides:
        `compareTo` in class `AbstractPath`

    - #### equals

          public boolean equals(Object obj)

      Overrides:
        `equals` in class `AbstractPath`

Copyright © 2008-2014 JBoss, a division of Red Hat. All Rights Reserved.