private Optional toMatcher()

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;
                                    })))));
  }