in owners-common/src/main/java/com/googlesource/gerrit/owners/common/ConfigurationParser.java [89:124]
private Optional<Matcher> toMatcher(JsonNode node) {
Set<Id> owners =
getNode(node, "owners")
.map(ConfigurationParser::extractAsText)
.orElse(Stream.empty())
.flatMap(o -> accounts.find(o).stream())
.collect(Collectors.toSet());
Set<Id> reviewers =
getNode(node, "reviewers")
.map(ConfigurationParser::extractAsText)
.orElse(Stream.empty())
.flatMap(o -> accounts.find(o).stream())
.collect(Collectors.toSet());
Optional<Matcher> suffixMatcher =
getText(node, "suffix").map(el -> new SuffixMatcher(el, owners, reviewers));
Optional<Matcher> regexMatcher =
getText(node, "regex").map(el -> new RegExMatcher(el, owners, reviewers));
Optional<Matcher> partialRegexMatcher =
getText(node, "partial_regex").map(el -> new PartialRegExMatcher(el, owners, reviewers));
Optional<Matcher> exactMatcher =
getText(node, "exact").map(el -> new ExactMatcher(el, owners, reviewers));
return Optional.ofNullable(
suffixMatcher.orElseGet(
() ->
regexMatcher.orElseGet(
() ->
partialRegexMatcher.orElseGet(
() ->
exactMatcher.orElseGet(
() -> {
log.warn("Ignoring invalid element " + node.toString());
return null;
})))));
}