diff options
Diffstat (limited to 'java/com/google/gerrit/server/project/RefPatternMatcher.java')
-rw-r--r-- | java/com/google/gerrit/server/project/RefPatternMatcher.java | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/java/com/google/gerrit/server/project/RefPatternMatcher.java b/java/com/google/gerrit/server/project/RefPatternMatcher.java index b9076b3db6..be840b5b23 100644 --- a/java/com/google/gerrit/server/project/RefPatternMatcher.java +++ b/java/com/google/gerrit/server/project/RefPatternMatcher.java @@ -22,6 +22,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Streams; import com.google.gerrit.common.data.ParameterizedString; +import com.google.gerrit.entities.AccessSection; import com.google.gerrit.entities.Account; import com.google.gerrit.entities.RefNames; import com.google.gerrit.server.CurrentUser; @@ -32,6 +33,13 @@ import java.util.regex.Pattern; import java.util.stream.Stream; public abstract class RefPatternMatcher { + public static RefPatternMatcher getMatcher(AccessSection section) { + if (section.getNamePattern().isPresent()) { + return new Regexp(section.getNamePattern().get()); + } + return getMatcher(section.getName()); + } + public static RefPatternMatcher getMatcher(String pattern) { if (containsParameters(pattern)) { return new ExpandParameters(pattern); @@ -79,6 +87,10 @@ public abstract class RefPatternMatcher { pattern = Pattern.compile(re); } + Regexp(Pattern re) { + pattern = re; + } + @Override public boolean match(String ref, CurrentUser user) { return pattern.matcher(ref).matches() || (isRE(ref) && pattern.pattern().equals(ref)); |