Skip to content

Commit 5a3414d

Browse files
committed
feat: add http client config
Signed-off-by: moxiaoying <1159230165@qq.com>
1 parent 3d3455b commit 5a3414d

File tree

11 files changed

+166
-165
lines changed

11 files changed

+166
-165
lines changed
Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
package io.github.protocol.pulsar.admin.api;
22

3-
import io.github.openfacade.http.HttpClientEngine;
3+
import io.github.openfacade.http.HttpClientConfig;
4+
import io.github.openfacade.http.ReactorHttpClientConfig;
45

56
public class Configuration {
67
public String host = "localhost";
78

89
public int port;
910

10-
public boolean tlsEnabled;
11+
public HttpClientConfig httpClientConfig;
1112

12-
public TlsConfig tlsConfig;
13-
14-
public HttpClientEngine engine;
13+
public ReactorHttpClientConfig reactorHttpClientConfig;
1514

1615
public Configuration() {
1716
}
@@ -26,18 +25,13 @@ public Configuration port(int port) {
2625
return this;
2726
}
2827

29-
public Configuration tlsEnabled(boolean tlsEnabled) {
30-
this.tlsEnabled = tlsEnabled;
31-
return this;
32-
}
33-
34-
public Configuration tlsConfig(TlsConfig tlsConfig) {
35-
this.tlsConfig = tlsConfig;
28+
public Configuration httpClientConfig(HttpClientConfig httpClientConfig) {
29+
this.httpClientConfig = httpClientConfig;
3630
return this;
3731
}
3832

39-
public Configuration engine(HttpClientEngine engine) {
40-
this.engine = engine;
33+
public Configuration reactorHttpClientConfig(ReactorHttpClientConfig reactorHttpClientConfig) {
34+
this.reactorHttpClientConfig = reactorHttpClientConfig;
4135
return this;
4236
}
4337
}

pulsar-admin-reactive/src/main/java/io/github/protocol/pulsar/admin/reactive/InnerReactiveClient.java

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,17 @@
11
package io.github.protocol.pulsar.admin.reactive;
22

3+
import io.github.openfacade.http.ReactorHttpClient;
4+
import io.github.openfacade.http.ReactorHttpClientFactory;
35
import io.github.protocol.pulsar.admin.api.Configuration;
4-
import io.netty.handler.ssl.SslContext;
5-
import reactor.netty.http.client.HttpClient;
6-
import reactor.netty.http.client.HttpClientSecurityUtils;
76

87
public class InnerReactiveClient {
9-
private final HttpClient httpClient;
8+
private final ReactorHttpClient httpClient;
109

1110
private final String httpPrefix;
1211

1312
public InnerReactiveClient(Configuration conf) {
14-
HttpClient client = HttpClient.create();
15-
16-
if (conf.tlsEnabled) {
17-
client = client.secure(spec -> {
18-
SslContext context = SslContextUtil.build(conf.tlsConfig);
19-
if (conf.tlsConfig.hostnameVerifyDisabled) {
20-
spec.sslContext(context)
21-
.handlerConfigurator(HttpClientSecurityUtils.HOSTNAME_VERIFICATION_CONFIGURER);
22-
} else {
23-
spec.sslContext(context);
24-
}
25-
});
13+
ReactorHttpClient client = ReactorHttpClientFactory.createReactorHttpClient(conf.reactorHttpClientConfig);
14+
if (conf.reactorHttpClientConfig == null || conf.reactorHttpClientConfig.tlsConfig() == null) {
2615
this.httpPrefix = "https://" + conf.host + ":" + conf.port;
2716
} else {
2817
this.httpPrefix = "http://" + conf.host + ":" + conf.port;

pulsar-admin-reactive/src/main/java/io/github/protocol/pulsar/admin/reactive/SslContextUtil.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.github.protocol.pulsar.admin.reactive;
22

3-
import io.github.protocol.pulsar.admin.api.TlsConfig;
3+
import io.github.openfacade.http.TlsConfig;
44
import io.netty.handler.ssl.SslContext;
55
import io.netty.handler.ssl.SslContextBuilder;
66
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
@@ -17,36 +17,36 @@ public static SslContext build(TlsConfig config) {
1717
try {
1818
SslContextBuilder sslContextBuilder = SslContextBuilder.forClient();
1919

20-
if (config.keyStorePath != null && config.keyStorePassword != null) {
20+
if (config.keyStorePath() != null && config.keyStorePassword() != null) {
2121
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
22-
try (FileInputStream keyStoreInputStream = new FileInputStream(config.keyStorePath)) {
23-
keyStore.load(keyStoreInputStream, config.keyStorePassword);
22+
try (FileInputStream keyStoreInputStream = new FileInputStream(config.keyStorePath())) {
23+
keyStore.load(keyStoreInputStream, config.keyStorePassword());
2424
}
2525
String defaultKeyAlgorithm = KeyManagerFactory.getDefaultAlgorithm();
2626
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(defaultKeyAlgorithm);
27-
keyManagerFactory.init(keyStore, config.keyStorePassword);
27+
keyManagerFactory.init(keyStore, config.keyStorePassword());
2828
sslContextBuilder.keyManager(keyManagerFactory);
2929
}
3030

31-
if (config.verifyDisabled) {
31+
if (config.verifyDisabled()) {
3232
sslContextBuilder.trustManager(InsecureTrustManagerFactory.INSTANCE);
33-
} else if (config.trustStorePath != null && config.trustStorePassword != null) {
33+
} else if (config.trustStorePath() != null && config.trustStorePassword() != null) {
3434
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
35-
try (FileInputStream trustStoreInputStream = new FileInputStream(config.trustStorePath)) {
36-
trustStore.load(trustStoreInputStream, config.trustStorePassword);
35+
try (FileInputStream trustStoreInputStream = new FileInputStream(config.trustStorePath())) {
36+
trustStore.load(trustStoreInputStream, config.trustStorePassword());
3737
}
3838
String defaultTrustAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
3939
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(defaultTrustAlgorithm);
4040
trustManagerFactory.init(trustStore);
4141
sslContextBuilder.trustManager(trustManagerFactory);
4242
}
4343

44-
if (config.versions != null) {
45-
sslContextBuilder.protocols(config.versions);
44+
if (config.versions() != null) {
45+
sslContextBuilder.protocols(config.versions());
4646
}
4747

48-
if (config.cipherSuites != null) {
49-
sslContextBuilder.ciphers(Arrays.asList(config.cipherSuites));
48+
if (config.cipherSuites() != null) {
49+
sslContextBuilder.ciphers(Arrays.asList(config.cipherSuites()));
5050
}
5151

5252
return sslContextBuilder.build();

pulsar-admin/src/main/java/io/github/protocol/pulsar/admin/jdk/InnerHttpClient.java

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,11 @@
22

33
import com.fasterxml.jackson.core.JsonProcessingException;
44
import io.github.openfacade.http.HttpClient;
5-
import io.github.openfacade.http.HttpClientConfig;
6-
import io.github.openfacade.http.HttpClientEngine;
75
import io.github.openfacade.http.HttpClientFactory;
86
import io.github.openfacade.http.HttpMethod;
97
import io.github.openfacade.http.HttpRequest;
108
import io.github.openfacade.http.HttpResponse;
119
import io.github.openfacade.http.HttpSchema;
12-
import io.github.openfacade.http.TlsConfig;
1310
import io.github.openfacade.http.UrlBuilder;
1411
import io.github.protocol.pulsar.admin.api.Configuration;
1512
import io.github.protocol.pulsar.admin.common.JacksonService;
@@ -28,21 +25,15 @@ public class InnerHttpClient {
2825
private UrlBuilder templateUrlBuilder;
2926

3027
public InnerHttpClient(Configuration conf) {
31-
HttpClientConfig.Builder clientConfigBuilder = new HttpClientConfig.Builder();
32-
clientConfigBuilder.engine(conf.engine == null ? HttpClientEngine.Java : conf.engine);
33-
if (conf.tlsEnabled) {
34-
TlsConfig.Builder tlsConfigBuilder = new TlsConfig.Builder();
35-
io.github.protocol.pulsar.admin.api.TlsConfig tlsConfig = conf.tlsConfig;
36-
tlsConfigBuilder.cipherSuites(tlsConfig.cipherSuites);
37-
tlsConfigBuilder.hostnameVerifyDisabled(tlsConfig.hostnameVerifyDisabled);
38-
tlsConfigBuilder.keyStore(tlsConfig.keyStorePath, tlsConfig.keyStorePassword);
39-
tlsConfigBuilder.trustStore(tlsConfig.trustStorePath, tlsConfig.trustStorePassword);
40-
tlsConfigBuilder.verifyDisabled(tlsConfig.verifyDisabled);
41-
clientConfigBuilder.tlsConfig(tlsConfigBuilder.build());
28+
boolean tlsEnable;
29+
if (conf.httpClientConfig == null || conf.httpClientConfig.tlsConfig() == null) {
30+
tlsEnable = false;
31+
} else {
32+
tlsEnable = true;
4233
}
43-
this.client = HttpClientFactory.createHttpClient(clientConfigBuilder.build());
34+
this.client = HttpClientFactory.createHttpClient(conf.httpClientConfig);
4435
templateUrlBuilder = new UrlBuilder();
45-
templateUrlBuilder.setHttpSchema(conf.tlsEnabled ? HttpSchema.HTTPS : HttpSchema.HTTP).setHost(conf.host)
36+
templateUrlBuilder.setHttpSchema(tlsEnable ? HttpSchema.HTTPS : HttpSchema.HTTP).setHost(conf.host)
4637
.setPort(conf.port);
4738
}
4839

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.github.protocol.pulsar.admin.jdk;
22

3-
import io.github.protocol.pulsar.admin.api.TlsConfig;
3+
import io.github.openfacade.http.HttpClientConfig;
4+
import io.github.openfacade.http.ReactorHttpClientConfig;
45

56
public interface PulsarAdminBuilder {
67
PulsarAdmin build();
@@ -9,8 +10,7 @@ public interface PulsarAdminBuilder {
910

1011
PulsarAdminBuilder port(int port);
1112

12-
PulsarAdminBuilder tlsEnabled(boolean useSsl);
13-
14-
PulsarAdminBuilder tlsConfig(TlsConfig tlsConfig);
13+
PulsarAdminBuilder httpClientConfig(HttpClientConfig httpClientConfig);
1514

15+
PulsarAdminBuilder reactorHttpClientConfig(ReactorHttpClientConfig reactorHttpClientConfig);
1616
}

pulsar-admin/src/main/java/io/github/protocol/pulsar/admin/jdk/PulsarAdminBuilderImpl.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package io.github.protocol.pulsar.admin.jdk;
22

3+
import io.github.openfacade.http.HttpClientConfig;
4+
import io.github.openfacade.http.ReactorHttpClientConfig;
35
import io.github.protocol.pulsar.admin.api.Configuration;
4-
import io.github.protocol.pulsar.admin.api.TlsConfig;
56

67
public class PulsarAdminBuilderImpl implements PulsarAdminBuilder {
78
private final Configuration conf;
@@ -28,14 +29,14 @@ public PulsarAdminBuilder port(int port) {
2829
}
2930

3031
@Override
31-
public PulsarAdminBuilder tlsEnabled(boolean useSsl) {
32-
this.conf.tlsEnabled(useSsl);
32+
public PulsarAdminBuilder httpClientConfig(HttpClientConfig httpClientConfig) {
33+
this.conf.httpClientConfig(httpClientConfig);
3334
return this;
3435
}
3536

3637
@Override
37-
public PulsarAdminBuilder tlsConfig(TlsConfig tlsConfig) {
38-
this.conf.tlsConfig(tlsConfig);
38+
public PulsarAdminBuilder reactorHttpClientConfig(ReactorHttpClientConfig reactorHttpClientConfig) {
39+
this.conf.reactorHttpClientConfig(reactorHttpClientConfig);
3940
return this;
4041
}
4142
}

pulsar-admin/src/test/java/io/github/protocol/pulsar/admin/jdk/BaseTest.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package io.github.protocol.pulsar.admin.jdk;
22

33
import io.github.embedded.pulsar.core.EmbeddedPulsarServer;
4+
import io.github.openfacade.http.HttpClientConfig;
45
import io.github.openfacade.http.HttpClientEngine;
5-
import io.github.protocol.pulsar.admin.api.Configuration;
66
import org.junit.jupiter.api.AfterAll;
77
import org.junit.jupiter.api.BeforeAll;
88
import org.junit.jupiter.api.TestInstance;
@@ -40,12 +40,13 @@ protected List<PulsarAdmin> initPulsarAdmins() {
4040
if (engine.equals(HttpClientEngine.Async) || engine.equals(HttpClientEngine.Jetty)) {
4141
continue;
4242
}
43-
Configuration conf = new Configuration();
44-
conf.host("localhost");
45-
conf.port(getPort());
46-
conf.engine(engine);
47-
PulsarAdminImpl pulsarAdmin = new PulsarAdminImpl(conf);
48-
pulsarAdmins.add(pulsarAdmin);
43+
PulsarAdminBuilder pulsarAdminBuilder = PulsarAdmin.builder();
44+
pulsarAdminBuilder.host("localhost");
45+
pulsarAdminBuilder.port(getPort());
46+
HttpClientConfig.Builder clientBuilder = new HttpClientConfig.Builder();
47+
clientBuilder.engine(engine);
48+
pulsarAdminBuilder.httpClientConfig(clientBuilder.build());
49+
pulsarAdmins.add(pulsarAdminBuilder.build());
4950
}
5051
return pulsarAdmins;
5152
}
Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package io.github.protocol.pulsar.admin.jdk;
22

3-
import org.junit.jupiter.api.Test;
3+
import org.junit.jupiter.params.ParameterizedTest;
4+
import org.junit.jupiter.params.provider.MethodSource;
45

56
public class BrokersTest extends BaseTest{
67

7-
@Test
8-
public void testHealthCheckV1() throws PulsarAdminException {
9-
PulsarAdmin pulsarAdmin = PulsarAdmin.builder().port(getPort()).build();
8+
@MethodSource("providePulsarAdmins")
9+
@ParameterizedTest
10+
public void testHealthCheckV1(PulsarAdmin pulsarAdmin) throws PulsarAdminException {
1011
pulsarAdmin.brokers().healthcheck(TopicVersion.V1);
1112
}
1213

13-
@Test
14-
public void testHealthCheckV2() throws PulsarAdminException {
15-
PulsarAdmin pulsarAdmin = PulsarAdmin.builder().port(getPort()).build();
14+
@MethodSource("providePulsarAdmins")
15+
@ParameterizedTest
16+
public void testHealthCheckV2(PulsarAdmin pulsarAdmin) throws PulsarAdminException {
1617
pulsarAdmin.brokers().healthcheck(TopicVersion.V2);
1718
}
1819
}
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
package io.github.protocol.pulsar.admin.jdk;
22

33
import org.junit.jupiter.api.Assertions;
4-
import org.junit.jupiter.api.Test;
4+
import org.junit.jupiter.params.ParameterizedTest;
5+
import org.junit.jupiter.params.provider.MethodSource;
56

67
import java.util.Arrays;
78

89
public class ClustersTest extends BaseTest{
9-
@Test
10-
public void getClustersTest() throws PulsarAdminException {
11-
Assertions.assertEquals(Arrays.asList("standalone"),
12-
PulsarAdmin.builder().port(getPort()).build().clusters().getClusters());
13-
}
1410

11+
@MethodSource("providePulsarAdmins")
12+
@ParameterizedTest
13+
public void getClustersTest(PulsarAdmin pulsarAdmin) throws PulsarAdminException {
14+
Assertions.assertEquals(Arrays.asList("standalone"), pulsarAdmin.clusters().getClusters());
15+
}
1516
}

0 commit comments

Comments
 (0)