You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/11/13 03:07:06 UTC
[james-project] 17/21: JAMES-2905 Update ClientProvider to use the
credential when available
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 9e988880b1447d969d4f101dc981dfb4ce9c1079
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Wed Nov 6 16:28:07 2019 +0700
JAMES-2905 Update ClientProvider to use the credential when available
The current ES version 6.3.2 doesn't support authentication by default.
There is a paid package called xpact should be installed to enable
authentication. So no way to test authentication on a real ES server
---
.../apache/james/backends/es/ClientProvider.java | 29 +++++++++++-----------
1 file changed, 15 insertions(+), 14 deletions(-)
diff --git a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ClientProvider.java b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ClientProvider.java
index 5412b09..4f35e38 100644
--- a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ClientProvider.java
+++ b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ClientProvider.java
@@ -40,6 +40,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.annotations.VisibleForTesting;
+
import reactor.core.publisher.Mono;
import reactor.core.scheduler.Schedulers;
@@ -70,27 +71,27 @@ public class ClientProvider implements Provider<RestHighLevelClient> {
.block();
}
- private RestHighLevelClient connectToCluster(ElasticSearchConfiguration configuration) throws IOException {
+ private RestHighLevelClient connectToCluster(ElasticSearchConfiguration configuration) {
LOGGER.info("Trying to connect to ElasticSearch service at {}", LocalDateTime.now());
- Optional<CredentialsProvider> credentials = credentials(configuration);
RestClientBuilder restClientBuilder = RestClient.builder(hostsToHttpHosts());
- credentials.ifPresent(provider -> restClientBuilder
- .setHttpClientConfigCallback(httpClientBuilder -> {
- return httpClientBuilder.setDefaultCredentialsProvider(provider);
- }));
return new RestHighLevelClient(
- restClientBuilder
+ credentialsProvider(configuration)
+ .map(provider -> restClientBuilder.setHttpClientConfigCallback(
+ httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(provider)))
+ .orElse(restClientBuilder)
.setMaxRetryTimeoutMillis(Math.toIntExact(configuration.getRequestTimeout().toMillis())));
}
- private Optional<CredentialsProvider> credentials(ElasticSearchConfiguration configuration) {
- if (configuration.getUser().isPresent() && configuration.getPassword().isPresent()) {
- CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
- credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(configuration.getUser().get(), configuration.getPassword().get()));
- return Optional.of(credentialsProvider);
- }
- return Optional.empty();
+ private Optional<CredentialsProvider> credentialsProvider(ElasticSearchConfiguration configuration) {
+ return configuration.getCredential()
+ .map(credential -> {
+ CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+ credentialsProvider.setCredentials(AuthScope.ANY,
+ new UsernamePasswordCredentials(credential.getUsername(), credential.getPassword()));
+
+ return credentialsProvider;
+ });
}
private HttpHost[] hostsToHttpHosts() {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org