Skip to content

Instantly share code, notes, and snippets.

@billoneil
Created September 7, 2016 13:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save billoneil/08b1648a3b2a849e02c57e133bd6d45c to your computer and use it in GitHub Desktop.
Save billoneil/08b1648a3b2a849e02c57e133bd6d45c to your computer and use it in GitHub Desktop.
import io.undertow.server.HttpHandler;
import io.undertow.server.HttpServerExchange;
import io.undertow.server.RoutingHandler;
import io.undertow.server.handlers.PathHandler;
import io.undertow.server.handlers.ResponseCodeHandler;
import io.undertow.util.Methods;
public class WebHandler implements HttpHandler {
private final RoutingHandler routing = new RoutingHandler();
private final PathHandler path = new PathHandler();
public WebHandler() {
routing.setFallbackHandler(path);
path.addPrefixPath("/", ResponseCodeHandler.HANDLE_404);
}
@Override
public void handleRequest(HttpServerExchange exchange) throws Exception {
routing.handleRequest(exchange);
}
public synchronized WebHandler setNotFoundHandler(String name, HttpHandler handler) {
path.removePrefixPath("/");
path.addPrefixPath("/", new TimingHttpHandler(handler, name));
return this;
}
public synchronized WebHandler setInvalidMethodHandler(String name, HttpHandler handler) {
routing.setInvalidMethodHandler(new TimingHttpHandler(handler, name));
return this;
}
public synchronized WebHandler addPrefixPath(String prefix, String name, HttpHandler handler) {
path.addPrefixPath(prefix, new TimingHttpHandler(handler, name));
return this;
}
public synchronized WebHandler get(final String template, String name, HttpHandler handler) {
routing.add(Methods.GET, template, new TimingHttpHandler(handler, name));
return this;
}
public synchronized WebHandler post(final String template, String name, HttpHandler handler) {
routing.add(Methods.POST, template, new TimingHttpHandler(handler, name));
return this;
}
public synchronized WebHandler put(final String template, String name, HttpHandler handler) {
routing.add(Methods.PUT, template, new TimingHttpHandler(handler, name));
return this;
}
public synchronized WebHandler delete(final String template, String name, HttpHandler handler) {
routing.add(Methods.DELETE, template, new TimingHttpHandler(handler, name));
return this;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment