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 package org.apache.http.nio.testserver;
28
29 import javax.net.ssl.SSLContext;
30
31 import org.apache.http.impl.nio.DefaultNHttpClientConnection;
32 import org.apache.http.nio.NHttpConnectionFactory;
33 import org.apache.http.nio.reactor.IOSession;
34 import org.apache.http.nio.reactor.ssl.SSLIOSession;
35 import org.apache.http.nio.reactor.ssl.SSLMode;
36 import org.apache.http.nio.reactor.ssl.SSLSetupHandler;
37
38 public class ClientConnectionFactory implements NHttpConnectionFactory<DefaultNHttpClientConnection> {
39
40 private final SSLContext sslContext;
41 private final SSLSetupHandler setupHandler;
42
43 public ClientConnectionFactory(
44 final SSLContext sslContext, final SSLSetupHandler setupHandler) {
45 super();
46 this.sslContext = sslContext;
47 this.setupHandler = setupHandler;
48 }
49
50 public ClientConnectionFactory(final SSLContext sslContext) {
51 this(sslContext, null);
52 }
53
54 public ClientConnectionFactory() {
55 this(null, null);
56 }
57
58 @Override
59 public DefaultNHttpClientConnection createConnection(final IOSession ioSession) {
60 if (this.sslContext != null) {
61 final SSLIOSession sslioSession = new SSLIOSession(
62 ioSession, SSLMode.CLIENT, this.sslContext, this.setupHandler);
63 ioSession.setAttribute(SSLIOSession.SESSION_KEY, sslioSession);
64 return new LoggingNHttpClientConnection(sslioSession);
65 } else {
66 return new LoggingNHttpClientConnection(ioSession);
67 }
68 }
69
70 }