Package org.apache.sling.api.resource.path

# Class Path

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`
`GLOB_PREFIX`
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`
`equals(Object obj)`
`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(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.
`String`
`toString()`

### 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:
  - Constant Field Values

## 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:
  - `isPattern()`

### 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()`

### 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`