Skip to content

Instantly share code, notes, and snippets.

@jirkapenzes
Last active August 29, 2015 14:28
Show Gist options
  • Save jirkapenzes/5417892ba16946e410d8 to your computer and use it in GitHub Desktop.
Save jirkapenzes/5417892ba16946e410d8 to your computer and use it in GitHub Desktop.
private Map<String, Set<Rule>> ruleSets;
@Override
public Rule findRule(String ruleSetName, String route, String method) {
Set<Rule> rules = ruleSets.get(ruleSetName);
if (rules == null)
rules = new HashSet<>();
Optional<Rule> detectedRule = rules.stream()
.filter(rule -> RouteMatcher.match(rule.getRoute(), route)
&& rule.getMethod().equals(method))
.findFirst();
return detectedRule.isPresent() ? detectedRule.get() : new DefaultRule();
}
@novoj
Copy link

novoj commented Aug 24, 2015

Nějak nevidím žádné for loopy :) ... takže to se streamy jde.
Mohl bys to ještě zkrátit na one-liner:

private Map<String, Set<Rule>> ruleSets;

@Override
public Rule findRule(String ruleSetName, String route, String method) {
    return ruleSets.getOrDefault(ruleSetName, new HashSet<>())
                   .stream()
                   .filter(rule -> RouteMatcher.match(rule.getRoute(), route) && rule.getMethod().equals(method))
                   .findFirst()
                   .orElse(new DefaultRule());
}

@jirkapenzes
Copy link
Author

Pěkné, díky! 👍 To jsem potřeboval

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment