This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git

commit 85a75970546e010e300632c2579c686ba8da5886
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
AuthorDate: Tue Apr 29 00:41:16 2025 +0000

    Bump co.elastic.clients:elasticsearch-java from 8.17.4 to 9.0.0
    
    Bumps 
[co.elastic.clients:elasticsearch-java](https://github.com/elastic/elasticsearch-java)
 from 8.17.4 to 9.0.0.
    - [Release notes](https://github.com/elastic/elasticsearch-java/releases)
    - 
[Changelog](https://github.com/elastic/elasticsearch-java/blob/main/CHANGELOG.md)
    - 
[Commits](https://github.com/elastic/elasticsearch-java/compare/v8.17.4...v9.0.0)
    
    ---
    updated-dependencies:
    - dependency-name: co.elastic.clients:elasticsearch-java
      dependency-version: 9.0.0
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <[email protected]>
---
 .../client/ElasticsearchClientContext.java         | 19 +++++++++++--
 .../client/ElasticsearchClientFactoryBean.java     | 32 ++++++++++------------
 .../client/ElasticsearchIndexManager.java          |  7 +++--
 .../dao/ElasticsearchRealmSearchDAO.java           |  4 ++-
 pom.xml                                            |  2 +-
 5 files changed, 38 insertions(+), 26 deletions(-)

diff --git 
a/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchClientContext.java
 
b/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchClientContext.java
index 77664ccb03..b26c904300 100644
--- 
a/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchClientContext.java
+++ 
b/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchClientContext.java
@@ -19,11 +19,15 @@
 package org.apache.syncope.ext.elasticsearch.client;
 
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
-import org.apache.http.HttpHost;
+import java.net.URISyntaxException;
+import java.util.Objects;
+import org.apache.hc.core5.http.HttpHost;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.identityconnectors.common.CollectionUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.boot.actuate.health.HealthContributor;
 import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -35,11 +39,20 @@ import org.springframework.context.annotation.Lazy;
 @Configuration(proxyBeanMethods = false)
 public class ElasticsearchClientContext {
 
+    protected static final Logger LOG = 
LoggerFactory.getLogger(ElasticsearchClientContext.class);
+
     @ConditionalOnMissingBean
     @Bean
     public ElasticsearchClientFactoryBean elasticsearchClientFactoryBean(final 
ElasticsearchProperties props) {
-        return new ElasticsearchClientFactoryBean(
-                
CollectionUtil.nullAsEmpty(props.getHosts()).stream().map(HttpHost::create).toList());
+        return new 
ElasticsearchClientFactoryBean(CollectionUtil.nullAsEmpty(props.getHosts()).stream().
+                map(host -> {
+                    try {
+                        return HttpHost.create(host);
+                    } catch (URISyntaxException e) {
+                        LOG.error("Invalid host: {}", host, e);
+                        return null;
+                    }
+                }).filter(Objects::nonNull).toList());
     }
 
     @ConditionalOnMissingBean
diff --git 
a/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchClientFactoryBean.java
 
b/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchClientFactoryBean.java
index e8d4ba36ff..9377b0cf9e 100644
--- 
a/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchClientFactoryBean.java
+++ 
b/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchClientFactoryBean.java
@@ -20,22 +20,18 @@ package org.apache.syncope.ext.elasticsearch.client;
 
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.json.jackson.JacksonJsonpMapper;
-import co.elastic.clients.transport.rest_client.RestClientTransport;
+import co.elastic.clients.transport.rest5_client.Rest5ClientTransport;
+import co.elastic.clients.transport.rest5_client.low_level.Rest5Client;
+import co.elastic.clients.transport.rest5_client.low_level.Rest5ClientBuilder;
 import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fasterxml.jackson.databind.json.JsonMapper;
 import java.nio.charset.StandardCharsets;
 import java.util.Base64;
 import java.util.List;
-import org.apache.http.Header;
-import org.apache.http.HttpHeaders;
-import org.apache.http.HttpHost;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.impl.client.BasicCredentialsProvider;
-import org.apache.http.message.BasicHeader;
-import org.elasticsearch.client.RestClient;
-import org.elasticsearch.client.RestClientBuilder;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.HttpHeaders;
+import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.message.BasicHeader;
 import org.springframework.beans.factory.DisposableBean;
 import org.springframework.beans.factory.FactoryBean;
 
@@ -56,7 +52,7 @@ public class ElasticsearchClientFactoryBean implements 
FactoryBean<Elasticsearch
 
     private String apiKeySecret;
 
-    private RestClient restClient;
+    private Rest5Client restClient;
 
     private ElasticsearchClient client;
 
@@ -100,12 +96,12 @@ public class ElasticsearchClientFactoryBean implements 
FactoryBean<Elasticsearch
     public ElasticsearchClient getObject() {
         synchronized (this) {
             if (client == null) {
-                RestClientBuilder builder = 
RestClient.builder(hosts.toArray(HttpHost[]::new));
+                Rest5ClientBuilder builder = 
Rest5Client.builder(hosts.toArray(HttpHost[]::new));
                 if (username != null && password != null) {
-                    CredentialsProvider credentialsProvider = new 
BasicCredentialsProvider();
-                    credentialsProvider.setCredentials(
-                            AuthScope.ANY, new 
UsernamePasswordCredentials(username, password));
-                    builder.setHttpClientConfigCallback(b -> 
b.setDefaultCredentialsProvider(credentialsProvider));
+                    String encodedAuth = Base64.getEncoder().
+                            encodeToString((username + ":" + 
password).getBytes(StandardCharsets.UTF_8));
+                    builder.setDefaultHeaders(
+                            new Header[] { new 
BasicHeader(HttpHeaders.AUTHORIZATION, "Bearer " + encodedAuth) });
                 } else if (serviceToken != null) {
                     builder.setDefaultHeaders(
                             new Header[] { new 
BasicHeader(HttpHeaders.AUTHORIZATION, "Bearer " + serviceToken) });
@@ -117,7 +113,7 @@ public class ElasticsearchClientFactoryBean implements 
FactoryBean<Elasticsearch
                 }
 
                 restClient = builder.build();
-                client = new ElasticsearchClient(new RestClientTransport(
+                client = new ElasticsearchClient(new Rest5ClientTransport(
                         restClient,
                         new JacksonJsonpMapper(JsonMapper.builder().
                                 
findAndAddModules().disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).build())));
diff --git 
a/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchIndexManager.java
 
b/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchIndexManager.java
index 6c6331c829..9df9e33c93 100644
--- 
a/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchIndexManager.java
+++ 
b/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchIndexManager.java
@@ -39,6 +39,7 @@ import 
co.elastic.clients.elasticsearch.indices.DeleteIndexResponse;
 import co.elastic.clients.elasticsearch.indices.ExistsRequest;
 import co.elastic.clients.elasticsearch.indices.IndexSettings;
 import co.elastic.clients.elasticsearch.indices.IndexSettingsAnalysis;
+import co.elastic.clients.util.NamedValue;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
@@ -116,7 +117,7 @@ public class ElasticsearchIndexManager {
 
     public TypeMapping defaultAnyMapping() {
         return new TypeMapping.Builder().
-                dynamicTemplates(List.of(Map.of(
+                dynamicTemplates(List.of(new NamedValue<>(
                         "strings",
                         new DynamicTemplate.Builder().
                                 matchMappingType("string").
@@ -129,7 +130,7 @@ public class ElasticsearchIndexManager {
 
     public TypeMapping defaultRealmMapping() {
         return new TypeMapping.Builder().
-                dynamicTemplates(List.of(Map.of(
+                dynamicTemplates(List.of(new NamedValue<>(
                         "strings",
                         new DynamicTemplate.Builder().
                                 matchMappingType("string").
@@ -142,7 +143,7 @@ public class ElasticsearchIndexManager {
 
     public TypeMapping defaultAuditMapping() {
         return new TypeMapping.Builder().
-                dynamicTemplates(List.of(Map.of(
+                dynamicTemplates(List.of(new NamedValue<>(
                         "strings",
                         new DynamicTemplate.Builder().
                                 matchMappingType("string").
diff --git 
a/ext/elasticsearch/persistence/src/main/java/org/apache/syncope/core/persistence/elasticsearch/dao/ElasticsearchRealmSearchDAO.java
 
b/ext/elasticsearch/persistence/src/main/java/org/apache/syncope/core/persistence/elasticsearch/dao/ElasticsearchRealmSearchDAO.java
index 265409d09c..53936c2d8c 100644
--- 
a/ext/elasticsearch/persistence/src/main/java/org/apache/syncope/core/persistence/elasticsearch/dao/ElasticsearchRealmSearchDAO.java
+++ 
b/ext/elasticsearch/persistence/src/main/java/org/apache/syncope/core/persistence/elasticsearch/dao/ElasticsearchRealmSearchDAO.java
@@ -21,6 +21,7 @@ package org.apache.syncope.core.persistence.elasticsearch.dao;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.elasticsearch._types.ScriptLanguage;
 import co.elastic.clients.elasticsearch._types.ScriptSortType;
+import co.elastic.clients.elasticsearch._types.ScriptSource;
 import co.elastic.clients.elasticsearch._types.SearchType;
 import co.elastic.clients.elasticsearch._types.SortOptions;
 import co.elastic.clients.elasticsearch._types.SortOrder;
@@ -54,7 +55,8 @@ public class ElasticsearchRealmSearchDAO implements 
RealmSearchDAO {
             new SortOptions.Builder().
                     script(s -> s.type(ScriptSortType.Number).
                     script(t -> t.lang(ScriptLanguage.Painless).
-                    source("doc['fullPath'].value.chars().filter(ch -> ch == 
'/').count()")).
+                    source(new ScriptSource.Builder().
+                            
scriptString("doc['fullPath'].value.chars().filter(ch -> ch == 
'/').count()").build())).
                     order(SortOrder.Asc)).
                     build());
 
diff --git a/pom.xml b/pom.xml
index 3bc60d1ab3..62049d36c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -429,7 +429,7 @@ under the License.
 
     <disruptor.version>4.0.0</disruptor.version>
 
-    <elasticsearch.version>8.17.4</elasticsearch.version>
+    <elasticsearch.version>9.0.0</elasticsearch.version>
     <opensearch.version>2.19.1</opensearch.version>
     <opensearch-java.version>2.23.0</opensearch-java.version>
 

Reply via email to