Slide 46
Slide 46 text
public class Route implements Function> {
private final Function> handler;
private final String pattern;
@Override
public CompletableFuture apply(Request request) {
Optional routeMatch = matchFor(request);
if (!routeMatch.isPresent()) {
throw new IllegalArgumentException("route doesn't match");
} else {
return handler.apply(requestWithPathParams(request, routeMatch.get()));
}
}
public boolean matches(Request request) {
return matchFor(request).isPresent();
}
}
public Route createRoute(String pattern, Resource resource, Node decisionTree) {
return new Route(pattern, request -> decisionTree.apply(resource, request));
}