package io.muoncore.protocol.requestresponse.server; import java.util.ArrayList; import java.util.List; public class DynamicRequestResponseHandlers implements RequestResponseHandlers { private List<RequestResponseServerHandler> handlers = new ArrayList<>(); private RequestResponseServerHandler defaultHandler; public DynamicRequestResponseHandlers(RequestResponseServerHandler defaultHandler) { this.defaultHandler = defaultHandler; } @Override public void addHandler(RequestResponseServerHandler handler) { handlers.add(handler); } @Override public RequestResponseServerHandler findHandler(ServerRequest inbound) { assert inbound != null; return handlers.stream().filter( handler -> { return handler.getPredicate().matcher().test(inbound); }).findFirst().orElse(defaultHandler); } @Override public List<RequestResponseServerHandler> getHandlers() { return handlers; } }