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