Package org.sonar.api.utils
Class WildcardPattern
- java.lang.Object
-
- org.sonar.api.utils.WildcardPattern
-
@ThreadSafe public class WildcardPattern extends java.lang.Object
Implementation of Ant-style matching patterns. Contrary to other implementations (like AntPathMatcher from Spring Framework) it is based onJava Regular Expressions
. To increase performance it holds an internal cache of all processed patterns.Following rules are applied:
- ? matches single character
- * matches zero or more characters
- ** matches zero or more 'directories'
Some examples of patterns:
org/T?st.java
- matchesorg/Test.java
and alsoorg/Tost.java
org/*.java
- matches all.java
files in theorg
directory, e.g.org/Foo.java
ororg/Bar.java
org/**
- matches all files underneath theorg
directory, e.g.org/Foo.java
ororg/foo/bar.jsp
org/**/Test.java
- matches allTest.java
files underneath theorg
directory, e.g.org/Test.java
ororg/foo/Test.java
ororg/foo/bar/Test.java
org/**/*.java
- matches all.java
files underneath theorg
directory, e.g.org/Foo.java
ororg/foo/Bar.java
ororg/foo/bar/Baz.java
Another implementation, which is also based on Java Regular Expressions, can be found in FileUtil from IntelliJ OpenAPI.
- Since:
- 1.10
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
WildcardPattern(java.lang.String pattern, java.lang.String directorySeparator)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static WildcardPattern
create(java.lang.String pattern)
Creates pattern with "/" as a directory separator.static WildcardPattern[]
create(java.lang.String[] patterns)
Creates array of patterns with "/" as a directory separator.static WildcardPattern
create(java.lang.String pattern, java.lang.String directorySeparator)
Creates pattern with specified separator for directories.boolean
match(java.lang.String value)
Returns true if specified value matches this pattern.static boolean
match(WildcardPattern[] patterns, java.lang.String value)
Returns true if specified value matches one of specified patterns.java.lang.String
toString()
Returns string representation of this pattern.
-
-
-
Method Detail
-
toString
public java.lang.String toString()
Returns string representation of this pattern.- Overrides:
toString
in classjava.lang.Object
- Since:
- 2.5
-
match
public boolean match(java.lang.String value)
Returns true if specified value matches this pattern.
-
match
public static boolean match(WildcardPattern[] patterns, java.lang.String value)
Returns true if specified value matches one of specified patterns.- Since:
- 2.4
-
create
public static WildcardPattern create(java.lang.String pattern)
Creates pattern with "/" as a directory separator.- See Also:
create(String, String)
-
create
public static WildcardPattern[] create(@Nullable java.lang.String[] patterns)
Creates array of patterns with "/" as a directory separator.- See Also:
create(String, String)
-
create
public static WildcardPattern create(java.lang.String pattern, java.lang.String directorySeparator)
Creates pattern with specified separator for directories.This is used to match Java-classes, i.e.
org.foo.Bar
againstorg/**
. However usage of character other than "/" as a directory separator is misleading and should be avoided, so methodcreate(String)
is preferred over this one.Also note that no matter whether forward or backward slashes were used in the
antPattern
the returned pattern will usedirectorySeparator
. Thus to match Windows-style path "dir\file.ext" against pattern "dir/file.ext" normalization should be performed.
-
-