1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.hc.core5.http.io.support;
29
30 import java.io.IOException;
31
32 import org.apache.hc.core5.http.ClassicHttpRequest;
33 import org.apache.hc.core5.http.ClassicHttpResponse;
34 import org.apache.hc.core5.http.HttpException;
35 import org.apache.hc.core5.http.HttpRequestMapper;
36 import org.apache.hc.core5.http.HttpResponseFactory;
37 import org.apache.hc.core5.http.HttpStatus;
38 import org.apache.hc.core5.http.impl.io.DefaultClassicHttpResponseFactory;
39 import org.apache.hc.core5.http.io.HttpRequestHandler;
40 import org.apache.hc.core5.http.io.HttpServerRequestHandler;
41 import org.apache.hc.core5.http.protocol.HttpContext;
42 import org.apache.hc.core5.util.Args;
43
44
45
46
47
48
49
50
51 public class BasicHttpServerRequestHandler implements HttpServerRequestHandler {
52
53 private final HttpRequestMapper<HttpRequestHandler> handlerMapper;
54 private final HttpResponseFactory<ClassicHttpResponse> responseFactory;
55
56 public BasicHttpServerRequestHandler(
57 final HttpRequestMapper<HttpRequestHandler> handlerMapper,
58 final HttpResponseFactory<ClassicHttpResponse> responseFactory) {
59 this.handlerMapper = Args.notNull(handlerMapper, "Handler mapper");
60 this.responseFactory = responseFactory != null ? responseFactory : DefaultClassicHttpResponseFactory.INSTANCE;
61 }
62
63 public BasicHttpServerRequestHandler(final HttpRequestMapper<HttpRequestHandler> handlerMapper) {
64 this(handlerMapper, null);
65 }
66
67 @Override
68 public void handle(
69 final ClassicHttpRequest request,
70 final ResponseTrigger responseTrigger,
71 final HttpContext context) throws HttpException, IOException {
72 final ClassicHttpResponse response = responseFactory.newHttpResponse(HttpStatus.SC_OK);
73 final HttpRequestHandler handler = handlerMapper != null ? handlerMapper.resolve(request, context) : null;
74 if (handler != null) {
75 handler.handle(request, response, context);
76 } else {
77 response.setCode(HttpStatus.SC_NOT_IMPLEMENTED);
78 }
79 responseTrigger.submitResponse(response);
80 }
81
82 }