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.testing.classic;
29
30 import java.io.IOException;
31 import java.net.Socket;
32
33 import org.apache.hc.core5.http.ClassicHttpRequest;
34 import org.apache.hc.core5.http.ClassicHttpResponse;
35 import org.apache.hc.core5.http.ContentLengthStrategy;
36 import org.apache.hc.core5.http.config.CharCodingConfig;
37 import org.apache.hc.core5.http.config.Http1Config;
38 import org.apache.hc.core5.http.impl.CharCodingSupport;
39 import org.apache.hc.core5.http.io.HttpConnectionFactory;
40 import org.apache.hc.core5.http.io.HttpMessageParserFactory;
41 import org.apache.hc.core5.http.io.HttpMessageWriterFactory;
42
43 public class LoggingBHttpClientConnectionFactory implements HttpConnectionFactory<LoggingBHttpClientConnection> {
44
45 public static final LoggingBHttpClientConnectionFactory INSTANCE = new LoggingBHttpClientConnectionFactory();
46
47 private final Http1Config http1Config;
48 private final CharCodingConfig charCodingConfig;
49 private final ContentLengthStrategy incomingContentStrategy;
50 private final ContentLengthStrategy outgoingContentStrategy;
51 private final HttpMessageWriterFactory<ClassicHttpRequest> requestWriterFactory;
52 private final HttpMessageParserFactory<ClassicHttpResponse> responseParserFactory;
53
54 public LoggingBHttpClientConnectionFactory(
55 final Http1Config http1Config,
56 final CharCodingConfig charCodingConfig,
57 final ContentLengthStrategy incomingContentStrategy,
58 final ContentLengthStrategy outgoingContentStrategy,
59 final HttpMessageWriterFactory<ClassicHttpRequest> requestWriterFactory,
60 final HttpMessageParserFactory<ClassicHttpResponse> responseParserFactory) {
61 super();
62 this.http1Config = http1Config != null ? http1Config : Http1Config.DEFAULT;
63 this.charCodingConfig = charCodingConfig != null ? charCodingConfig : CharCodingConfig.DEFAULT;
64 this.incomingContentStrategy = incomingContentStrategy;
65 this.outgoingContentStrategy = outgoingContentStrategy;
66 this.requestWriterFactory = requestWriterFactory;
67 this.responseParserFactory = responseParserFactory;
68 }
69
70 public LoggingBHttpClientConnectionFactory(
71 final Http1Config http1Config,
72 final CharCodingConfig charCodingConfig,
73 final HttpMessageWriterFactory<ClassicHttpRequest> requestWriterFactory,
74 final HttpMessageParserFactory<ClassicHttpResponse> responseParserFactory) {
75 this(http1Config, charCodingConfig, null, null, requestWriterFactory, responseParserFactory);
76 }
77
78 public LoggingBHttpClientConnectionFactory(
79 final Http1Config http1Config,
80 final CharCodingConfig charCodingConfig) {
81 this(http1Config, charCodingConfig, null, null, null, null);
82 }
83
84 public LoggingBHttpClientConnectionFactory() {
85 this(null, null, null, null, null, null);
86 }
87
88 @Override
89 public LoggingBHttpClientConnection createConnection(final Socket socket) throws IOException {
90 final LoggingBHttpClientConnection conn = new LoggingBHttpClientConnection(
91 http1Config,
92 CharCodingSupport.createDecoder(charCodingConfig),
93 CharCodingSupport.createEncoder(charCodingConfig),
94 incomingContentStrategy,
95 outgoingContentStrategy,
96 requestWriterFactory,
97 responseParserFactory);
98 conn.bind(socket);
99 return conn;
100 }
101
102 }