Author: cziegeler Date: Mon Oct 17 11:18:58 2016 New Revision: 1765240 URL: http://svn.apache.org/viewvc?rev=1765240&view=rev Log: SLING-6161 : Should Path.matches support glob pattern as parameter?
Modified: sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/path/Path.java sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/path/package-info.java sling/trunk/bundles/api/src/test/java/org/apache/sling/api/resource/path/PathTest.java Modified: sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/path/Path.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/path/Path.java?rev=1765240&r1=1765239&r2=1765240&view=diff ============================================================================== --- sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/path/Path.java (original) +++ sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/path/Path.java Mon Oct 17 11:18:58 2016 @@ -69,16 +69,24 @@ public class Path implements Comparable< } /** - * Check whether the provided path is equal to this path or a sub path of it. - * @param otherPath Path to check - * @return {@code true} If other path is within the sub tree of this path. + * If this {@code Path} object holds a path (and not a pattern), this method + * check whether the provided path is equal to this path or a sub path of it. + * If this {@code Path} object holds a pattern, it checks whether the + * provided path matches the pattern. + * If the provided argument is not an absolute path (e.g. if it is a relative + * path or a pattern), this method returns {@code false}. + * + * @param otherPath Absolute path to check. + * @return {@code true} If other path is within the sub tree of this path + * or matches the pattern. + * @see Path#isPattern() */ public boolean matches(final String otherPath) { - Path oPath = new Path(otherPath); if (isPattern) { + final Path oPath = new Path(otherPath); return this.regexPattern.equals(oPath.regexPattern) || this.regexPattern.matcher(otherPath).matches(); } - return this.path.equals(otherPath) || oPath.prefix.startsWith(this.prefix); + return this.path.equals(otherPath) || otherPath.startsWith(this.prefix); } /** @@ -89,6 +97,15 @@ public class Path implements Comparable< return this.path; } + /** + * Returns {code true} if this {@code Path} object is holding a pattern + * @return {code true} for a pattern, {@code false} for a path. + * @since 1.2.0 (Sling API Bundle 2.15.0) + */ + public boolean isPattern() { + return this.isPattern; + } + @Override public int compareTo(@Nonnull final Path o) { return this.getPath().compareTo(o.getPath()); Modified: sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/path/package-info.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/path/package-info.java?rev=1765240&r1=1765239&r2=1765240&view=diff ============================================================================== --- sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/path/package-info.java (original) +++ sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/path/package-info.java Mon Oct 17 11:18:58 2016 @@ -17,7 +17,7 @@ * under the License. */ -@Version("1.1.1") +@Version("1.2.0") package org.apache.sling.api.resource.path; import org.osgi.annotation.versioning.Version; Modified: sling/trunk/bundles/api/src/test/java/org/apache/sling/api/resource/path/PathTest.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/test/java/org/apache/sling/api/resource/path/PathTest.java?rev=1765240&r1=1765239&r2=1765240&view=diff ============================================================================== --- sling/trunk/bundles/api/src/test/java/org/apache/sling/api/resource/path/PathTest.java (original) +++ sling/trunk/bundles/api/src/test/java/org/apache/sling/api/resource/path/PathTest.java Mon Oct 17 11:18:58 2016 @@ -70,8 +70,8 @@ public class PathTest { @Test public void testPatternRootMatching() { final Path path = new Path("/"); - assertTrue(path.matches("glob:/apps/myproject/components/**/*.html")); - assertTrue(path.matches("glob:/apps/**/*.html")); + assertFalse(path.matches("glob:/apps/myproject/components/**/*.html")); + assertFalse(path.matches("glob:/apps/**/*.html")); } @Test public void testPathMatchingTrailingSlash() {