1
18
19 package io.undertow.server.handlers;
20
21 import io.undertow.predicate.Predicate;
22 import io.undertow.server.HttpHandler;
23 import io.undertow.server.HttpServerExchange;
24
25
28 public class PredicateHandler implements HttpHandler {
29
30 private volatile Predicate predicate;
31 private volatile HttpHandler trueHandler;
32 private volatile HttpHandler falseHandler;
33
34 public PredicateHandler(final Predicate predicate, final HttpHandler trueHandler, final HttpHandler falseHandler) {
35 this.predicate = predicate;
36 this.trueHandler = trueHandler;
37 this.falseHandler = falseHandler;
38 }
39
40 @Override
41 public void handleRequest(final HttpServerExchange exchange) throws Exception {
42 HttpHandler next = predicate.resolve(exchange) ? trueHandler : falseHandler;
43 next.handleRequest(exchange);
44 }
45
46 public Predicate getPredicate() {
47 return predicate;
48 }
49
50 public PredicateHandler setPredicate(final Predicate predicate) {
51 this.predicate = predicate;
52 return this;
53 }
54
55 public HttpHandler getTrueHandler() {
56 return trueHandler;
57 }
58
59 public PredicateHandler setTrueHandler(final HttpHandler trueHandler) {
60 this.trueHandler = trueHandler;
61 return this;
62 }
63
64 public HttpHandler getFalseHandler() {
65 return falseHandler;
66 }
67
68 public PredicateHandler setFalseHandler(final HttpHandler falseHandler) {
69 this.falseHandler = falseHandler;
70 return this;
71 }
72 }
73