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.impl.io;
29
30 import java.io.IOException;
31 import java.io.InputStream;
32
33 import org.apache.hc.core5.http.ClassicHttpRequest;
34 import org.apache.hc.core5.http.HttpException;
35 import org.apache.hc.core5.http.HttpRequestFactory;
36 import org.apache.hc.core5.http.MessageConstraintException;
37 import org.apache.hc.core5.http.RequestHeaderFieldsTooLargeException;
38 import org.apache.hc.core5.http.config.Http1Config;
39 import org.apache.hc.core5.http.io.SessionInputBuffer;
40 import org.apache.hc.core5.http.message.LineParser;
41 import org.apache.hc.core5.http.message.RequestLine;
42 import org.apache.hc.core5.util.CharArrayBuffer;
43
44
45
46
47
48
49
50 public class DefaultHttpRequestParser extends AbstractMessageParser<ClassicHttpRequest> {
51
52 private final HttpRequestFactory<ClassicHttpRequest> requestFactory;
53
54
55
56
57 public DefaultHttpRequestParser(
58 final Http1Config http1Config,
59 final LineParser lineParser,
60 final HttpRequestFactory<ClassicHttpRequest> requestFactory) {
61 super(http1Config, lineParser);
62 this.requestFactory = requestFactory != null ? requestFactory : DefaultClassicHttpRequestFactory.INSTANCE;
63 }
64
65
66
67
68 @Deprecated
69 public DefaultHttpRequestParser(
70 final LineParser lineParser,
71 final HttpRequestFactory<ClassicHttpRequest> requestFactory,
72 final Http1Config http1Config) {
73 this(http1Config, lineParser, requestFactory);
74 }
75
76
77
78
79 public DefaultHttpRequestParser(final Http1Config http1Config) {
80 this(http1Config, null, null);
81 }
82
83
84
85
86 public DefaultHttpRequestParser() {
87 this(Http1Config.DEFAULT, null, null);
88 }
89
90 @Override
91 public ClassicHttpRequest parse(
92 final SessionInputBuffer buffer, final InputStream inputStream) throws IOException, HttpException {
93 try {
94 return super.parse(buffer, inputStream);
95 } catch (final MessageConstraintException ex) {
96 throw new RequestHeaderFieldsTooLargeException(ex.getMessage(), ex);
97 }
98 }
99
100 @Override
101 protected ClassicHttpRequest createMessage(final CharArrayBuffer buffer) throws IOException, HttpException {
102 final RequestLine requestLine = getLineParser().parseRequestLine(buffer);
103 final ClassicHttpRequest request = this.requestFactory.newHttpRequest(requestLine.getMethod(), requestLine.getUri());
104 request.setVersion(requestLine.getProtocolVersion());
105 return request;
106 }
107
108 }