Skip to content

Commit 9df0cdb

Browse files
committed
Switch Elasticsearch extensions to @ConfigMapping
1 parent e6ea6d5 commit 9df0cdb

File tree

3 files changed

+41
-43
lines changed

3 files changed

+41
-43
lines changed

extensions/elasticsearch-rest-client/runtime/src/main/java/io/quarkus/elasticsearch/restclient/lowlevel/runtime/ElasticsearchConfig.java

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,61 +6,61 @@
66
import java.util.Optional;
77

88
import io.quarkus.runtime.annotations.ConfigGroup;
9-
import io.quarkus.runtime.annotations.ConfigItem;
109
import io.quarkus.runtime.annotations.ConfigPhase;
1110
import io.quarkus.runtime.annotations.ConfigRoot;
11+
import io.smallrye.config.ConfigMapping;
12+
import io.smallrye.config.WithDefault;
1213

14+
@ConfigMapping(prefix = "quarkus.elasticsearch")
1315
@ConfigRoot(phase = ConfigPhase.RUN_TIME)
14-
public class ElasticsearchConfig {
16+
public interface ElasticsearchConfig {
1517

1618
/**
1719
* The list of hosts of the Elasticsearch servers.
1820
*/
19-
@ConfigItem(defaultValue = "localhost:9200")
20-
public List<InetSocketAddress> hosts;
21+
@WithDefault("localhost:9200")
22+
List<InetSocketAddress> hosts();
2123

2224
/**
2325
* The protocol to use when contacting Elasticsearch servers.
2426
* Set to "https" to enable SSL/TLS.
2527
*/
26-
@ConfigItem(defaultValue = "http")
27-
public String protocol;
28+
@WithDefault("http")
29+
String protocol();
2830

2931
/**
3032
* The username for basic HTTP authentication.
3133
*/
32-
@ConfigItem
33-
public Optional<String> username;
34+
Optional<String> username();
3435

3536
/**
3637
* The password for basic HTTP authentication.
3738
*/
38-
@ConfigItem
39-
public Optional<String> password;
39+
Optional<String> password();
4040

4141
/**
4242
* The connection timeout.
4343
*/
44-
@ConfigItem(defaultValue = "1S")
45-
public Duration connectionTimeout;
44+
@WithDefault("1S")
45+
Duration connectionTimeout();
4646

4747
/**
4848
* The socket timeout.
4949
*/
50-
@ConfigItem(defaultValue = "30S")
51-
public Duration socketTimeout;
50+
@WithDefault("30S")
51+
Duration socketTimeout();
5252

5353
/**
5454
* The maximum number of connections to all the Elasticsearch servers.
5555
*/
56-
@ConfigItem(defaultValue = "20")
57-
public int maxConnections;
56+
@WithDefault("20")
57+
int maxConnections();
5858

5959
/**
6060
* The maximum number of connections per Elasticsearch server.
6161
*/
62-
@ConfigItem(defaultValue = "10")
63-
public int maxConnectionsPerRoute;
62+
@WithDefault("10")
63+
int maxConnectionsPerRoute();
6464

6565
/**
6666
* The number of IO thread.
@@ -72,28 +72,26 @@ public class ElasticsearchConfig {
7272
* @see <a href="https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/_number_of_threads.html">
7373
* number of threads</a>
7474
*/
75-
@ConfigItem
76-
public Optional<Integer> ioThreadCounts;
75+
Optional<Integer> ioThreadCounts();
7776

7877
/**
7978
* Configuration for the automatic discovery of new Elasticsearch nodes.
8079
*/
81-
@ConfigItem
82-
public DiscoveryConfig discovery;
80+
DiscoveryConfig discovery();
8381

8482
@ConfigGroup
85-
public static class DiscoveryConfig {
83+
interface DiscoveryConfig {
8684

8785
/**
8886
* Defines if automatic discovery is enabled.
8987
*/
90-
@ConfigItem(defaultValue = "false")
91-
public boolean enabled;
88+
@WithDefault("false")
89+
boolean enabled();
9290

9391
/**
9492
* Refresh interval of the node list.
9593
*/
96-
@ConfigItem(defaultValue = "5M")
97-
public Duration refreshInterval;
94+
@WithDefault("5M")
95+
Duration refreshInterval();
9896
}
9997
}

extensions/elasticsearch-rest-client/runtime/src/main/java/io/quarkus/elasticsearch/restclient/lowlevel/runtime/ElasticsearchRestClientProducer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public RestClient restClient() {
2929
RestClientBuilder builder = RestClientBuilderHelper.createRestClientBuilder(config);
3030

3131
this.client = builder.build();
32-
if (config.discovery.enabled) {
32+
if (config.discovery().enabled()) {
3333
this.sniffer = RestClientBuilderHelper.createSniffer(client, config);
3434
}
3535

extensions/elasticsearch-rest-client/runtime/src/main/java/io/quarkus/elasticsearch/restclient/lowlevel/runtime/RestClientBuilderHelper.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ private RestClientBuilderHelper() {
3434
}
3535

3636
public static RestClientBuilder createRestClientBuilder(ElasticsearchConfig config) {
37-
List<HttpHost> hosts = new ArrayList<>(config.hosts.size());
38-
for (InetSocketAddress host : config.hosts) {
39-
hosts.add(new HttpHost(host.getHostString(), host.getPort(), config.protocol));
37+
List<HttpHost> hosts = new ArrayList<>(config.hosts().size());
38+
for (InetSocketAddress host : config.hosts()) {
39+
hosts.add(new HttpHost(host.getHostString(), host.getPort(), config.protocol()));
4040
}
4141

4242
RestClientBuilder builder = RestClient.builder(hosts.toArray(new HttpHost[0]));
@@ -45,37 +45,37 @@ public static RestClientBuilder createRestClientBuilder(ElasticsearchConfig conf
4545
@Override
4646
public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {
4747
return requestConfigBuilder
48-
.setConnectTimeout((int) config.connectionTimeout.toMillis())
49-
.setSocketTimeout((int) config.socketTimeout.toMillis())
48+
.setConnectTimeout((int) config.connectionTimeout().toMillis())
49+
.setSocketTimeout((int) config.socketTimeout().toMillis())
5050
.setConnectionRequestTimeout(0); // Avoid requests being flagged as timed out even when they didn't time out.
5151
}
5252
});
5353

5454
builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
5555
@Override
5656
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
57-
if (config.username.isPresent()) {
58-
if (!"https".equalsIgnoreCase(config.protocol)) {
57+
if (config.username().isPresent()) {
58+
if (!"https".equalsIgnoreCase(config.protocol())) {
5959
LOG.warn("Using Basic authentication in HTTP implies sending plain text passwords over the wire, " +
6060
"use the HTTPS protocol instead.");
6161
}
6262
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
6363
credentialsProvider.setCredentials(AuthScope.ANY,
64-
new UsernamePasswordCredentials(config.username.get(), config.password.orElse(null)));
64+
new UsernamePasswordCredentials(config.username().get(), config.password().orElse(null)));
6565
httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
6666
}
6767

68-
if (config.ioThreadCounts.isPresent()) {
68+
if (config.ioThreadCounts().isPresent()) {
6969
IOReactorConfig ioReactorConfig = IOReactorConfig.custom()
70-
.setIoThreadCount(config.ioThreadCounts.get())
70+
.setIoThreadCount(config.ioThreadCounts().get())
7171
.build();
7272
httpClientBuilder.setDefaultIOReactorConfig(ioReactorConfig);
7373
}
7474

75-
httpClientBuilder.setMaxConnTotal(config.maxConnections);
76-
httpClientBuilder.setMaxConnPerRoute(config.maxConnectionsPerRoute);
75+
httpClientBuilder.setMaxConnTotal(config.maxConnections());
76+
httpClientBuilder.setMaxConnPerRoute(config.maxConnectionsPerRoute());
7777

78-
if ("http".equalsIgnoreCase(config.protocol)) {
78+
if ("http".equalsIgnoreCase(config.protocol())) {
7979
// In this case disable the SSL capability as it might have an impact on
8080
// bootstrap time, for example consuming entropy for no reason
8181
httpClientBuilder.setSSLStrategy(NoopIOSessionStrategy.INSTANCE);
@@ -99,10 +99,10 @@ public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpCli
9999

100100
public static Sniffer createSniffer(RestClient client, ElasticsearchConfig config) {
101101
SnifferBuilder builder = Sniffer.builder(client)
102-
.setSniffIntervalMillis((int) config.discovery.refreshInterval.toMillis());
102+
.setSniffIntervalMillis((int) config.discovery().refreshInterval().toMillis());
103103

104104
// https discovery support
105-
if ("https".equalsIgnoreCase(config.protocol)) {
105+
if ("https".equalsIgnoreCase(config.protocol())) {
106106
NodesSniffer hostsSniffer = new ElasticsearchNodesSniffer(
107107
client,
108108
ElasticsearchNodesSniffer.DEFAULT_SNIFF_REQUEST_TIMEOUT, // 1sec

0 commit comments

Comments
 (0)