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 2a1343b747fee21ef62b5761459e5bc1e02df62d
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Fri May 9 14:59:06 2025 +0200

    Temporarily upgrade to OpenSearch Java 3.0.0-SNAPSHOT to cope with 
OpenSearch 3.0
---
 .../client/OpenSearchClientFactoryBean.java        | 23 +++++++++++-----------
 .../opensearch/client/OpenSearchIndexManager.java  |  8 ++++----
 .../opensearch/client/OpenSearchProperties.java    | 12 +++++------
 .../opensearch/dao/OpenSearchRealmSearchDAO.java   |  5 ++++-
 pom.xml                                            | 17 +++++++++++++++-
 5 files changed, 41 insertions(+), 24 deletions(-)

diff --git 
a/ext/opensearch/client-opensearch/src/main/java/org/apache/syncope/ext/opensearch/client/OpenSearchClientFactoryBean.java
 
b/ext/opensearch/client-opensearch/src/main/java/org/apache/syncope/ext/opensearch/client/OpenSearchClientFactoryBean.java
index 8bbefceda7..cfdb392a66 100644
--- 
a/ext/opensearch/client-opensearch/src/main/java/org/apache/syncope/ext/opensearch/client/OpenSearchClientFactoryBean.java
+++ 
b/ext/opensearch/client-opensearch/src/main/java/org/apache/syncope/ext/opensearch/client/OpenSearchClientFactoryBean.java
@@ -27,11 +27,10 @@ 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.opensearch.client.RestClient;
-import org.opensearch.client.RestClientBuilder;
 import org.opensearch.client.json.jackson.JacksonJsonpMapper;
 import org.opensearch.client.opensearch.OpenSearchClient;
-import org.opensearch.client.transport.rest_client.RestClientTransport;
+import org.opensearch.client.transport.httpclient5.ApacheHttpClient5Transport;
+import 
org.opensearch.client.transport.httpclient5.ApacheHttpClient5TransportBuilder;
 import org.springframework.beans.factory.DisposableBean;
 import org.springframework.beans.factory.FactoryBean;
 
@@ -52,7 +51,7 @@ public class OpenSearchClientFactoryBean implements 
FactoryBean<OpenSearchClient
 
     private String apiKeySecret;
 
-    private RestClient restClient;
+    private ApacheHttpClient5Transport transport;
 
     private OpenSearchClient client;
 
@@ -96,7 +95,10 @@ public class OpenSearchClientFactoryBean implements 
FactoryBean<OpenSearchClient
     public OpenSearchClient getObject() {
         synchronized (this) {
             if (client == null) {
-                RestClientBuilder builder = 
RestClient.builder(hosts.toArray(HttpHost[]::new));
+                ApacheHttpClient5TransportBuilder builder = 
ApacheHttpClient5TransportBuilder.
+                        builder(hosts.toArray(HttpHost[]::new)).
+                        setMapper(new JacksonJsonpMapper(JsonMapper.builder().
+                                
findAndAddModules().disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).build()));
                 if (username != null && password != null) {
                     String encodedAuth = Base64.getEncoder().
                             encodeToString((username + ":" + 
password).getBytes(StandardCharsets.UTF_8));
@@ -112,11 +114,8 @@ public class OpenSearchClientFactoryBean implements 
FactoryBean<OpenSearchClient
                             new Header[] { new 
BasicHeader(HttpHeaders.AUTHORIZATION, "ApiKey " + apiKeyAuth) });
                 }
 
-                restClient = builder.build();
-                client = new OpenSearchClient(new RestClientTransport(
-                        restClient,
-                        new JacksonJsonpMapper(JsonMapper.builder().
-                                
findAndAddModules().disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).build())));
+                transport = builder.build();
+                client = new OpenSearchClient(transport);
             }
         }
         return client;
@@ -129,8 +128,8 @@ public class OpenSearchClientFactoryBean implements 
FactoryBean<OpenSearchClient
 
     @Override
     public void destroy() throws Exception {
-        if (restClient != null) {
-            restClient.close();
+        if (transport != null) {
+            transport.close();
         }
     }
 }
diff --git 
a/ext/opensearch/client-opensearch/src/main/java/org/apache/syncope/ext/opensearch/client/OpenSearchIndexManager.java
 
b/ext/opensearch/client-opensearch/src/main/java/org/apache/syncope/ext/opensearch/client/OpenSearchIndexManager.java
index f47d310315..d499b5c297 100644
--- 
a/ext/opensearch/client-opensearch/src/main/java/org/apache/syncope/ext/opensearch/client/OpenSearchIndexManager.java
+++ 
b/ext/opensearch/client-opensearch/src/main/java/org/apache/syncope/ext/opensearch/client/OpenSearchIndexManager.java
@@ -65,15 +65,15 @@ public class OpenSearchIndexManager {
 
     protected final OpenSearchUtils openSearchUtils;
 
-    protected final String numberOfShards;
+    protected final Integer numberOfShards;
 
-    protected final String numberOfReplicas;
+    protected final Integer numberOfReplicas;
 
     public OpenSearchIndexManager(
             final OpenSearchClient client,
             final OpenSearchUtils ppenSearchUtils,
-            final String numberOfShards,
-            final String numberOfReplicas) {
+            final Integer numberOfShards,
+            final Integer numberOfReplicas) {
 
         this.client = client;
         this.openSearchUtils = ppenSearchUtils;
diff --git 
a/ext/opensearch/client-opensearch/src/main/java/org/apache/syncope/ext/opensearch/client/OpenSearchProperties.java
 
b/ext/opensearch/client-opensearch/src/main/java/org/apache/syncope/ext/opensearch/client/OpenSearchProperties.java
index 78bf78e641..d77d69e863 100644
--- 
a/ext/opensearch/client-opensearch/src/main/java/org/apache/syncope/ext/opensearch/client/OpenSearchProperties.java
+++ 
b/ext/opensearch/client-opensearch/src/main/java/org/apache/syncope/ext/opensearch/client/OpenSearchProperties.java
@@ -29,9 +29,9 @@ public class OpenSearchProperties {
 
     private int indexMaxResultWindow = 10000;
 
-    private String numberOfShards = "1";
+    private int numberOfShards = 1;
 
-    private String numberOfReplicas = "1";
+    private int numberOfReplicas = 1;
 
     public List<String> getHosts() {
         return hosts;
@@ -49,19 +49,19 @@ public class OpenSearchProperties {
         this.indexMaxResultWindow = indexMaxResultWindow;
     }
 
-    public String getNumberOfShards() {
+    public int getNumberOfShards() {
         return numberOfShards;
     }
 
-    public void setNumberOfShards(final String numberOfShards) {
+    public void setNumberOfShards(final int numberOfShards) {
         this.numberOfShards = numberOfShards;
     }
 
-    public String getNumberOfReplicas() {
+    public int getNumberOfReplicas() {
         return numberOfReplicas;
     }
 
-    public void setNumberOfReplicas(final String numberOfReplicas) {
+    public void setNumberOfReplicas(final int numberOfReplicas) {
         this.numberOfReplicas = numberOfReplicas;
     }
 }
diff --git 
a/ext/opensearch/persistence/src/main/java/org/apache/syncope/core/persistence/opensearch/dao/OpenSearchRealmSearchDAO.java
 
b/ext/opensearch/persistence/src/main/java/org/apache/syncope/core/persistence/opensearch/dao/OpenSearchRealmSearchDAO.java
index 21e88c9eed..5fa88bf2d7 100644
--- 
a/ext/opensearch/persistence/src/main/java/org/apache/syncope/core/persistence/opensearch/dao/OpenSearchRealmSearchDAO.java
+++ 
b/ext/opensearch/persistence/src/main/java/org/apache/syncope/core/persistence/opensearch/dao/OpenSearchRealmSearchDAO.java
@@ -31,7 +31,9 @@ import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.ext.opensearch.client.OpenSearchUtils;
 import org.opensearch.client.opensearch.OpenSearchClient;
+import org.opensearch.client.opensearch._types.BuiltinScriptLanguage;
 import org.opensearch.client.opensearch._types.FieldValue;
+import org.opensearch.client.opensearch._types.ScriptLanguage;
 import org.opensearch.client.opensearch._types.ScriptSortType;
 import org.opensearch.client.opensearch._types.SearchType;
 import org.opensearch.client.opensearch._types.SortOptions;
@@ -53,7 +55,8 @@ public class OpenSearchRealmSearchDAO implements 
RealmSearchDAO {
     protected static final List<SortOptions> REALM_SORT_OPTIONS = List.of(
             new SortOptions.Builder().
                     script(s -> s.type(ScriptSortType.Number).
-                    script(t -> t.inline(i -> i.lang("painless").
+                    script(t -> t.inline(i -> i.lang(ScriptLanguage.builder().
+                    builtin(BuiltinScriptLanguage.Painless).build()).
                     source("doc['fullPath'].value.chars().filter(ch -> ch == 
'/').count()"))).
                     order(SortOrder.Asc)).
                     build());
diff --git a/pom.xml b/pom.xml
index a568443910..b80dea20ef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -431,7 +431,7 @@ under the License.
 
     <elasticsearch.version>9.0.1</elasticsearch.version>
     <opensearch.version>3.0.0</opensearch.version>
-    <opensearch-java.version>2.23.0</opensearch-java.version>
+    <opensearch-java.version>3.0.0-SNAPSHOT</opensearch-java.version>
 
     <openfga.version>v1</openfga.version>
 
@@ -1427,6 +1427,18 @@ under the License.
         <enabled>false</enabled>
       </snapshots>
     </repository>
+    <!-- TMP -->
+    <repository>
+      <id>opensearch.snapshots</id>
+      <name>OpenSearch Snapshot Repository</name>
+      <url>https://aws.oss.sonatype.org/content/repositories/snapshots/</url>
+      <releases>
+        <enabled>false</enabled>
+      </releases>
+      <snapshots>
+        <enabled>true</enabled>
+      </snapshots>
+    </repository>
     <repository>
       <id>repository.spring.milestone</id>
       <name>Spring Milestone Repository</name>
@@ -1438,6 +1450,7 @@ under the License.
         <enabled>false</enabled>
       </snapshots>
     </repository>
+    <!-- /TMP -->
     <!-- Excluding useless transitive repositories -->
     <repository>
       <id>couchbase</id>
@@ -1462,6 +1475,7 @@ under the License.
         <enabled>true</enabled>
       </snapshots>
     </pluginRepository>
+    <!-- TMP -->
     <pluginRepository>
       <id>repository.spring.milestone</id>
       <name>Spring Milestone Repository</name>
@@ -1473,6 +1487,7 @@ under the License.
         <enabled>false</enabled>
       </snapshots>
     </pluginRepository>
+    <!-- /TMP -->
   </pluginRepositories>
 
   <build>

Reply via email to