/** * Build the default rule set. * @param rules * The complete rule set. * @return * The rule set for any key that doesn't match a specific rule set. */ static Set<RequestLimitRule> buildDefaultRuleSet(Set<RequestLimitRule> rules) { return rules.stream() .filter( rule -> rule.getKeys() == null ) .collect(Collectors.toSet()); }
/** * Build the rule map. * @param rules * The complete rule set. * @return * A map of rule set by key. */ static Map<String,Set<RequestLimitRule>> buildRuleMap(Set<RequestLimitRule> rules) { Map<String, Set<RequestLimitRule>> ruleMap = new HashMap<>(); for (RequestLimitRule rule : rules) { if (rule.getKeys() == null) { continue; } for (String key : rule.getKeys()) { ruleMap.computeIfAbsent(key, k -> new HashSet<>()).add(rule); } } return ruleMap; }