Class Path

  • All Implemented Interfaces:
    java.lang.Comparable<Path>

    public class Path
    extends java.lang.Object
    implements java.lang.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 java.lang.String GLOB_PREFIX
      The prefix to be used for glob patterns
    • Constructor Summary

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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int compareTo​(@NotNull Path o)  
      boolean equals​(java.lang.Object obj)  
      java.lang.String getPath()
      Return the path if this Path object holds a path, returns the pattern otherwise.
      int hashCode()  
      boolean isPattern()
      Returns {code true} if this Path object is holding a pattern
      boolean matches​(java.lang.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.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • GLOB_PREFIX

        public static final java.lang.String GLOB_PREFIX
        The prefix to be used for glob patterns
        Since:
        1.2.0 (Sling API Bundle 2.15.0)
        See Also:
        Constant Field Values
    • Constructor Detail

      • Path

        public Path​(@NotNull
                    @NotNull java.lang.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:
        java.lang.NullPointerException - If otherPath is null
        java.lang.IllegalArgumentException - If the provided path is not absolute, or if the glob pattern does not start with a slash.
    • Method Detail

      • matches

        public boolean matches​(java.lang.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:
        java.lang.NullPointerException - If otherPath is null
        java.lang.IllegalArgumentException - If the provided path is not absolute, or if the glob pattern does not start with a slash.
        See Also:
        isPattern()
      • getPath

        public java.lang.String getPath()
        Return the path if this Path object holds a path, returns the pattern otherwise.
        Returns:
        The path or pattern.
        See Also:
        isPattern()
      • 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 java.lang.Comparable<Path>
      • hashCode

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

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object