java.lang.Object
org.apache.sling.api.resource.path.Path
All Implemented Interfaces:
Comparable<Path>

public class Path extends Object implements Comparable<Path>
Simple helper class for path matching.
Since:
1.0.0 (Sling API Bundle 2.11.0)
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    The prefix to be used for glob patterns
  • Constructor Summary

    Constructors
    Constructor
    Description
    Path(@NotNull String path)
    Create a new path object either from a concrete path or from a glob pattern.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    compareTo(@NotNull Path o)
     
    boolean
     
    Return the path if this Path object holds a path, returns the pattern otherwise.
    int
     
    boolean
    Returns {code true} if this Path object is holding a pattern
    boolean
    matches(String otherPath)
    If this Path object holds a path (and not a pattern), this method checks whether the provided path is equal to this path or a sub path of it.
     

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • GLOB_PREFIX

      public static final String GLOB_PREFIX
      The prefix to be used for glob patterns
      Since:
      1.2.0 (Sling API Bundle 2.15.0)
      See Also:
  • Constructor Details

    • Path

      public Path(@NotNull @NotNull String path)

      Create a new path object either from a concrete path or from a glob pattern.

      A glob pattern must start with the glob: prefix (e.g. glob:**/*.html). The following rules are used to interpret glob patterns:

      • The * character matches zero or more characters of a name component without crossing directory boundaries.
      • The ** characters match zero or more characters crossing directory boundaries.
      Parameters:
      path - The resource path or a glob pattern.
      Throws:
      NullPointerException - If otherPath is null
      IllegalArgumentException - If the provided path is not absolute, or if the glob pattern does not start with a slash.
  • Method Details

    • matches

      public boolean matches(String otherPath)
      If this Path object holds a path (and not a pattern), this method checks whether the provided path is equal to this path or a sub path of it. If a glob pattern is provided as the argument, it performs the same check and respects the provided pattern. This means it returns true if this path is a parent to any potential path matching the provided pattern. For example if this path is /apps/foo and the provided pattern is glob:/apps/foo/bar/*.jsp this method will return true. Same if the provided pattern is glob:/apps&#47;**&#47;hello.html. If this Path object holds a pattern, it checks whether the provided path matches the pattern. If this path object holds a pattern and a pattern is provided as the argument, it returns only true if the pattern is the same. If the provided argument is not an absolute path (e.g. if it is a relative path or a pattern), this method returns false.
      Parameters:
      otherPath - Absolute path to check.
      Returns:
      true If other path is within the sub tree of this path or matches the pattern.
      Throws:
      NullPointerException - If otherPath is null
      IllegalArgumentException - If the provided path is not absolute, or if the glob pattern does not start with a slash.
      See Also:
    • getPath

      public String getPath()
      Return the path if this Path object holds a path, returns the pattern otherwise.
      Returns:
      The path or pattern.
      See Also:
    • isPattern

      public boolean isPattern()
      Returns {code true} if this Path object is holding a pattern
      Returns:
      {code true} for a pattern, false for a path.
      Since:
      1.2.0 (Sling API Bundle 2.15.0)
    • compareTo

      public int compareTo(@NotNull @NotNull Path o)
      Specified by:
      compareTo in interface Comparable<Path>
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object