public Optional firstMatching()

in src/main/java/com/googlesource/gerrit/plugins/quota/AccountLimitsFinder.java [54:76]


  public Optional<RateLimit> firstMatching(AccountLimitsConfig.Type type, IdentifiedUser user) {
    Optional<Map<String, AccountLimitsConfig.RateLimit>> limits = getRatelimits(type);
    if (limits.isPresent()) {
      GroupMembership memberShip = user.getEffectiveGroups();
      for (String groupName : limits.get().keySet()) {
        try {
          GroupResource group =
              groupsCollection.parse(TopLevelResource.INSTANCE, IdString.fromDecoded(groupName));
          Optional<GroupDescription.Internal> maybeInternalGroup = group.asInternalGroup();
          if (!maybeInternalGroup.isPresent()) {
            log.debug("Ignoring limits for non-internal group ''{}'' in quota.config", groupName);
          } else if (memberShip.contains(maybeInternalGroup.get().getGroupUUID())) {
            return Optional.ofNullable(limits.get().get(groupName));
          }
        } catch (ResourceNotFoundException e) {
          log.debug("Ignoring limits for unknown group ''{}'' in quota.config", groupName);
        } catch (AuthException e) {
          log.debug("Ignoring limits for non-visible group ''{}'' in quota.config", groupName);
        }
      }
    }
    return Optional.empty();
  }