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


The following commit(s) were added to refs/heads/master by this push:
     new 04df56ff79 Upgrading CXF, Elasticsearch and OpenSearch
04df56ff79 is described below

commit 04df56ff79c5292bbfeb0241c1f015fa4467ece4
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Thu Aug 6 09:03:11 2026 +0200

    Upgrading CXF, Elasticsearch and OpenSearch
---
 .../syncope/client/ui/commons/MIMETypesLoader.java |  3 +--
 .../html/form/preview/BinaryTextPreviewer.java     |  6 +++--
 .../console/panels/ImplementationModalPanel.java   |  6 ++---
 .../console/rest/NotificationRestClient.java       |  4 ++--
 .../client/console/rest/RoleRestClient.java        |  4 ++--
 .../syncope/client/lib/batch/BatchResponse.java    |  5 +---
 .../common/keymaster/client/api/model/Domain.java  |  4 ++--
 .../rest/cxf/service/AnyObjectServiceTest.java     |  3 +--
 .../core/persistence/jpa/StartupDomainLoader.java  | 10 ++++----
 .../jpa/content/XMLContentExporter.java            |  5 ++--
 .../persistence/neo4j/StartupDomainLoader.java     | 10 ++++----
 .../spring/implementation/GroovySandboxTest.java   | 11 +++++----
 .../console/panels/BpmnProcessDirectoryPanel.java  |  7 +++---
 .../console/resources/BpmnProcessPUTResource.java  |  4 ++--
 .../client/console/rest/BpmnProcessRestClient.java |  3 +--
 .../client/enduser/rest/BpmnProcessRestClient.java | 27 ----------------------
 .../syncope/core/logic/saml2/SAML2ClientCache.java |  3 +--
 .../syncope/fit/core/MailTemplateITCase.java       |  6 ++---
 .../apache/syncope/fit/core/PlainSchemaITCase.java |  9 ++++----
 .../apache/syncope/fit/core/UserIssuesITCase.java  |  3 +--
 .../apache/syncope/fit/core/UserRequestITCase.java | 22 ++++++++++--------
 pom.xml                                            |  6 ++---
 .../pac4j/saml/WASAML2ClientKeystoreGenerator.java |  3 +--
 .../pac4j/saml/WASAML2ClientMetadataGenerator.java |  4 ++--
 24 files changed, 69 insertions(+), 99 deletions(-)

diff --git 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/MIMETypesLoader.java
 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/MIMETypesLoader.java
index 28130d9e3a..59f591c79d 100644
--- 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/MIMETypesLoader.java
+++ 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/MIMETypesLoader.java
@@ -25,7 +25,6 @@ import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.apache.wicket.util.io.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import tools.jackson.databind.JsonNode;
@@ -46,7 +45,7 @@ public class MIMETypesLoader implements Serializable {
     public void load() {
         mimeTypesMap = new HashMap<>();
         try {
-            JsonNode jsonNode = 
MAPPER.readTree(IOUtils.toString(getClass().getResourceAsStream("/MIMETypes.json")));
+            JsonNode jsonNode = 
MAPPER.readTree(getClass().getResourceAsStream("/MIMETypes.json").readAllBytes());
             for (JsonNode node : jsonNode) {
                 JsonNode type = node.path("name");
                 JsonNode ext = node.path("extension");
diff --git 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/preview/BinaryTextPreviewer.java
 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/preview/BinaryTextPreviewer.java
index 7e104d325f..26c8d18b65 100644
--- 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/preview/BinaryTextPreviewer.java
+++ 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/preview/BinaryTextPreviewer.java
@@ -22,6 +22,7 @@ import jakarta.ws.rs.core.MediaType;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import org.apache.syncope.client.ui.commons.annotations.BinaryPreview;
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.head.IHeaderResponse;
@@ -30,7 +31,6 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.TextArea;
 import org.apache.wicket.markup.html.panel.Fragment;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.util.io.IOUtils;
 
 @BinaryPreview(mimeTypes = { MediaType.APPLICATION_JSON, 
MediaType.APPLICATION_XML,
     "application/yaml", "application/x-yaml", "text/x-yaml", "text/yaml" })
@@ -51,7 +51,9 @@ public class BinaryTextPreviewer extends BinaryPreviewer {
             try {
                 fragment = new Fragment("preview", "previewFragment", this);
                 InputStream stream = new ByteArrayInputStream(uploadedBytes);
-                TextArea<String> previewer = new TextArea<>("previewer", 
Model.of(IOUtils.toString(stream)));
+                TextArea<String> previewer = new TextArea<>(
+                        "previewer",
+                        Model.of(new String(stream.readAllBytes(), 
StandardCharsets.UTF_8)));
                 previewer.setOutputMarkupPlaceholderTag(true);
                 previewerId = previewer.getMarkupId();
                 fragment.add(previewer);
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationModalPanel.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationModalPanel.java
index f95571bbb0..1d4e7495c5 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationModalPanel.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationModalPanel.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.client.console.panels;
 
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
@@ -43,7 +44,6 @@ import org.apache.wicket.markup.html.form.TextArea;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.spring.injection.annot.SpringBean;
-import org.apache.wicket.util.io.IOUtils;
 import tools.jackson.core.JacksonException;
 import tools.jackson.databind.JsonNode;
 import tools.jackson.databind.json.JsonMapper;
@@ -124,9 +124,9 @@ public class ImplementationModalPanel extends 
AbstractModalPanel<ImplementationT
             if (templateClassName != null) {
                 try {
                     implementation.setBody(StringUtils.substringAfter(
-                            
IOUtils.toString(ImplementationModalPanel.class.getResourceAsStream(
+                            new 
String(ImplementationModalPanel.class.getResourceAsStream(
                                     
"/org/apache/syncope/client/console/implementations/" + templateClassName
-                                    + ".groovy")),
+                                    + ".groovy").readAllBytes(), 
StandardCharsets.UTF_8),
                             "*/\n"));
                 } catch (IOException e) {
                     LOG.error("Could not load the expected Groovy template {} 
for {}",
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
index ebc1cb2b7b..6d1c43109f 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
@@ -18,10 +18,10 @@
  */
 package org.apache.syncope.client.console.rest;
 
+import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
-import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.MailTemplateTO;
@@ -92,6 +92,6 @@ public class NotificationRestClient extends BaseRestClient {
 
     public void updateTemplateFormat(final String key, final String content, 
final MailTemplateFormat format) {
         getService(MailTemplateService.class).setFormat(
-                key, format, IOUtils.toInputStream(content, 
StandardCharsets.UTF_8));
+                key, format, new 
ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8)));
     }
 }
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/RoleRestClient.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/RoleRestClient.java
index cb7ed3880b..11c15f2573 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/RoleRestClient.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/RoleRestClient.java
@@ -18,10 +18,10 @@
  */
 package org.apache.syncope.client.console.rest;
 
+import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
-import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.common.lib.SyncopeClientException;
@@ -75,7 +75,7 @@ public class RoleRestClient extends BaseRestClient {
 
     public void setAnyLayout(final String roleKey, final String content) {
         getService(RoleService.class).setAnyLayout(
-                roleKey, IOUtils.toInputStream(content, 
StandardCharsets.UTF_8));
+                roleKey, new 
ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8)));
     }
 
     public void removeAnyLayout(final String roleKey) {
diff --git 
a/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/batch/BatchResponse.java
 
b/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/batch/BatchResponse.java
index 30b7b99013..03bb0ce9c4 100644
--- 
a/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/batch/BatchResponse.java
+++ 
b/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/batch/BatchResponse.java
@@ -22,12 +22,9 @@ import jakarta.ws.rs.core.HttpHeaders;
 import jakarta.ws.rs.core.Response;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.net.URI;
-import java.nio.charset.StandardCharsets;
 import java.util.List;
 import org.apache.cxf.configuration.jsse.TLSClientParameters;
-import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.client.ClientConfiguration;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.transport.http.HTTPConduit;
@@ -80,7 +77,7 @@ public class BatchResponse {
      * @throws IOException if there are issues when reading the response body
      */
     public static List<BatchResponseItem> getItems(final Response response) 
throws IOException {
-        String body = IOUtils.toString((InputStream) response.getEntity(), 
StandardCharsets.UTF_8.name());
+        String body = response.readEntity(String.class);
         LOG.debug("Batch response body:\n{}", body);
 
         return BatchPayloadParser.parse(
diff --git 
a/common/keymaster/client-api/src/main/java/org/apache/syncope/common/keymaster/client/api/model/Domain.java
 
b/common/keymaster/client-api/src/main/java/org/apache/syncope/common/keymaster/client/api/model/Domain.java
index 36f4b54a4b..fad802dd07 100644
--- 
a/common/keymaster/client-api/src/main/java/org/apache/syncope/common/keymaster/client/api/model/Domain.java
+++ 
b/common/keymaster/client-api/src/main/java/org/apache/syncope/common/keymaster/client/api/model/Domain.java
@@ -23,10 +23,10 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import java.io.IOException;
 import java.io.Serializable;
+import java.nio.charset.StandardCharsets;
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.cxf.helpers.IOUtils;
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -80,7 +80,7 @@ public abstract class Domain implements Serializable {
     protected static String read(final String filename) {
         String read = null;
         try {
-            read = IOUtils.toString(Domain.class.getResourceAsStream('/' + 
filename));
+            read = new String(Domain.class.getResourceAsStream('/' + 
filename).readAllBytes(), StandardCharsets.UTF_8);
         } catch (IOException e) {
             LOG.error("Could not read {}", filename, e);
         }
diff --git 
a/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceTest.java
 
b/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceTest.java
index 8b89168904..a3790a2b03 100644
--- 
a/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceTest.java
+++ 
b/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceTest.java
@@ -38,7 +38,6 @@ import java.util.Date;
 import java.util.List;
 import java.util.UUID;
 import org.apache.cxf.endpoint.Server;
-import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.ext.MessageContext;
@@ -223,7 +222,7 @@ public class AnyObjectServiceTest {
         InputStream in = (InputStream) response.getEntity();
 
         PagedResult<AnyObjectTO> list = new SyncopeJsonMapper().
-                readValue(IOUtils.toString(in), new TypeReference<>() {
+                readValue(in.readAllBytes(), new TypeReference<>() {
                 });
         checkList(list);
     }
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/StartupDomainLoader.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/StartupDomainLoader.java
index 7385fdd0d7..7dac6547f7 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/StartupDomainLoader.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/StartupDomainLoader.java
@@ -19,9 +19,9 @@
 package org.apache.syncope.core.persistence.jpa;
 
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.Map;
 import java.util.stream.Collectors;
-import org.apache.cxf.helpers.IOUtils;
 import org.apache.syncope.common.keymaster.client.api.DomainOps;
 import org.apache.syncope.common.keymaster.client.api.model.Domain;
 import org.apache.syncope.common.keymaster.client.api.model.JPADomain;
@@ -97,15 +97,15 @@ public class StartupDomainLoader implements 
SyncopeCoreLoader {
                         poolMinIdle(domainProps.getPoolMinIdle());
 
                 try {
-                    builder.content(IOUtils.toString(
-                            
resourceLoader.getResource(domainProps.getContent()).getInputStream()));
+                    builder.content(new 
String(resourceLoader.getResource(domainProps.getContent()).
+                            getInputStream().readAllBytes(), 
StandardCharsets.UTF_8));
                 } catch (IOException e) {
                     LOG.error("While loading {}", domainProps.getContent(), e);
                 }
 
                 try {
-                    builder.keymasterConfParams(IOUtils.toString(
-                            
resourceLoader.getResource(domainProps.getKeymasterConfParams()).getInputStream()));
+                    builder.keymasterConfParams(new 
String(resourceLoader.getResource(domainProps.
+                            
getKeymasterConfParams()).getInputStream().readAllBytes(), 
StandardCharsets.UTF_8));
                 } catch (IOException e) {
                     LOG.error("While loading {}", 
domainProps.getKeymasterConfParams(), e);
                 }
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
index e08db492b6..dbb7b5d69a 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
@@ -65,7 +65,6 @@ import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.cxf.helpers.IOUtils;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.core.persistence.api.DomainHolder;
 import org.apache.syncope.core.persistence.api.dao.RealmSearchDAO;
@@ -115,14 +114,14 @@ public class XMLContentExporter extends 
AbstractXMLContentExporter {
                 case Types.LONGVARBINARY:
                     InputStream is = rs.getBinaryStream(columnName);
                     if (is != null) {
-                        value = 
DatatypeConverter.printHexBinary(IOUtils.toString(is).getBytes());
+                        value = 
DatatypeConverter.printHexBinary(is.readAllBytes());
                     }
                     break;
 
                 case Types.BLOB:
                     Blob blob = rs.getBlob(columnName);
                     if (blob != null) {
-                        value = 
DatatypeConverter.printHexBinary(IOUtils.toString(blob.getBinaryStream()).getBytes());
+                        value = 
DatatypeConverter.printHexBinary(blob.getBinaryStream().readAllBytes());
                     }
                     break;
 
diff --git 
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/StartupDomainLoader.java
 
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/StartupDomainLoader.java
index 1e7807cfb0..c87ac8216d 100644
--- 
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/StartupDomainLoader.java
+++ 
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/StartupDomainLoader.java
@@ -19,9 +19,9 @@
 package org.apache.syncope.core.persistence.neo4j;
 
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.Map;
 import java.util.stream.Collectors;
-import org.apache.cxf.helpers.IOUtils;
 import org.apache.syncope.common.keymaster.client.api.DomainOps;
 import org.apache.syncope.common.keymaster.client.api.model.Domain;
 import org.apache.syncope.common.keymaster.client.api.model.Neo4jDomain;
@@ -92,15 +92,15 @@ public class StartupDomainLoader implements 
SyncopeCoreLoader {
                         
maxConnectionPoolSize(domainProps.getMaxConnectionPoolSize());
 
                 try {
-                    builder.content(IOUtils.toString(
-                            
resourceLoader.getResource(domainProps.getContent()).getInputStream()));
+                    builder.content(new 
String(resourceLoader.getResource(domainProps.getContent()).
+                            getInputStream().readAllBytes(), 
StandardCharsets.UTF_8));
                 } catch (IOException e) {
                     LOG.error("While loading {}", domainProps.getContent(), e);
                 }
 
                 try {
-                    builder.keymasterConfParams(IOUtils.toString(
-                            
resourceLoader.getResource(domainProps.getKeymasterConfParams()).getInputStream()));
+                    builder.keymasterConfParams(new 
String(resourceLoader.getResource(domainProps.
+                            
getKeymasterConfParams()).getInputStream().readAllBytes(), 
StandardCharsets.UTF_8));
                 } catch (IOException e) {
                     LOG.error("While loading {}", 
domainProps.getKeymasterConfParams(), e);
                 }
diff --git 
a/core/spring/src/test/java/org/apache/syncope/core/spring/implementation/GroovySandboxTest.java
 
b/core/spring/src/test/java/org/apache/syncope/core/spring/implementation/GroovySandboxTest.java
index 79865ab9e0..81a3393217 100644
--- 
a/core/spring/src/test/java/org/apache/syncope/core/spring/implementation/GroovySandboxTest.java
+++ 
b/core/spring/src/test/java/org/apache/syncope/core/spring/implementation/GroovySandboxTest.java
@@ -24,6 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.HashMap;
@@ -31,7 +32,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import org.apache.commons.lang3.exception.ExceptionUtils;
-import org.apache.cxf.helpers.IOUtils;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.types.ImplementationEngine;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
@@ -80,12 +80,13 @@ class GroovySandboxTest {
         assertTrue(e.getMessage().contains("Insecure call to 'new 
java.lang.ProcessBuilder java.lang.String[]'"));
     }
 
-    private MacroActions actions(final String key, final String resource) 
throws Exception {
-        final Implementation impl = mock(Implementation.class);
+    private static MacroActions actions(final String key, final String 
resource) throws Exception {
+        Implementation impl = mock(Implementation.class);
         when(impl.getKey()).thenReturn(key);
         when(impl.getEngine()).thenReturn(ImplementationEngine.GROOVY);
-        when(impl.getBody()).thenReturn(IOUtils.toString(
-                
Objects.requireNonNull(getClass().getResourceAsStream(resource))));
+        when(impl.getBody()).thenReturn(new String(
+                
Objects.requireNonNull(GroovySandboxTest.class.getResourceAsStream(resource)).readAllBytes(),
+                StandardCharsets.UTF_8));
 
         return ImplementationManager.build(SyncopeConstants.MASTER_DOMAIN, 
impl);
     }
diff --git 
a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/BpmnProcessDirectoryPanel.java
 
b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/BpmnProcessDirectoryPanel.java
index 4fe0faa79a..bcbd9fa076 100644
--- 
a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/BpmnProcessDirectoryPanel.java
+++ 
b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/BpmnProcessDirectoryPanel.java
@@ -22,6 +22,7 @@ import 
de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import jakarta.ws.rs.core.MediaType;
 import java.io.IOException;
 import java.io.Serializable;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
@@ -66,7 +67,6 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.util.io.IOUtils;
 
 public class BpmnProcessDirectoryPanel extends DirectoryPanel<
         BpmnProcess, BpmnProcess, BpmProcessDataProvider, 
BpmnProcessRestClient> {
@@ -173,8 +173,9 @@ public class BpmnProcessDirectoryPanel extends 
DirectoryPanel<
             public void onClick(final AjaxRequestTarget target, final 
BpmnProcess ignore) {
                 final IModel<String> wfDefinition = new Model<>();
                 try {
-                    
wfDefinition.setObject(IOUtils.toString(restClient.getDefinition(
-                            MediaType.APPLICATION_XML_TYPE, 
model.getObject().getKey())));
+                    wfDefinition.setObject(new String(restClient.getDefinition(
+                            MediaType.APPLICATION_XML_TYPE, 
model.getObject().getKey()).readAllBytes(),
+                            StandardCharsets.UTF_8));
                 } catch (IOException e) {
                     LOG.error("Could not get workflow definition", e);
                 }
diff --git 
a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/resources/BpmnProcessPUTResource.java
 
b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/resources/BpmnProcessPUTResource.java
index 70f901e553..e3d917294c 100644
--- 
a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/resources/BpmnProcessPUTResource.java
+++ 
b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/resources/BpmnProcessPUTResource.java
@@ -22,11 +22,11 @@ import jakarta.servlet.http.HttpServletRequest;
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import org.apache.cxf.common.util.UrlUtils;
 import org.apache.syncope.client.console.rest.BpmnProcessRestClient;
 import org.apache.syncope.client.ui.commons.annotations.Resource;
 import org.apache.syncope.common.lib.to.BpmnProcess;
-import org.apache.wicket.util.io.IOUtils;
 
 /**
  * Mirror REST resource for setting BPMN process in JSON (used by Flowable 
Modeler).
@@ -45,7 +45,7 @@ public class BpmnProcessPUTResource extends 
AbstractBpmnProcessResource {
         String definition = null;
         try {
             HttpServletRequest request = (HttpServletRequest) 
attributes.getRequest().getContainerRequest();
-            String requestBody = IOUtils.toString(request.getInputStream());
+            String requestBody = new 
String(request.getInputStream().readAllBytes(), StandardCharsets.UTF_8);
             String[] split = requestBody.split("&");
             for (int i = 0; i < split.length && definition == null; i++) {
                 String keyValue = split[i];
diff --git 
a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/rest/BpmnProcessRestClient.java
 
b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/rest/BpmnProcessRestClient.java
index 7d60b25fe5..4c32454c2b 100644
--- 
a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/rest/BpmnProcessRestClient.java
+++ 
b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/rest/BpmnProcessRestClient.java
@@ -23,7 +23,6 @@ import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
 import java.io.InputStream;
 import java.util.List;
-import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.impl.MetadataMap;
 import org.apache.syncope.common.lib.to.BpmnProcess;
@@ -68,7 +67,7 @@ public class BpmnProcessRestClient extends BaseRestClient {
 
         byte[] diagram;
         try {
-            diagram = IOUtils.readBytesFromStream((InputStream) 
response.getEntity());
+            diagram = response.readEntity(String.class).getBytes();
         } catch (Exception e) {
             LOG.error("Could not get workflow diagram", e);
             diagram = new byte[0];
diff --git 
a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/rest/BpmnProcessRestClient.java
 
b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/rest/BpmnProcessRestClient.java
index b8001e80be..82c886955d 100644
--- 
a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/rest/BpmnProcessRestClient.java
+++ 
b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/rest/BpmnProcessRestClient.java
@@ -19,15 +19,10 @@
 package org.apache.syncope.client.enduser.rest;
 
 import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response;
-import java.io.InputStream;
 import java.util.List;
-import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.client.Client;
 import org.apache.cxf.jaxrs.client.WebClient;
-import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.common.lib.to.BpmnProcess;
-import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.syncope.common.rest.api.service.BpmnProcessService;
 
 public class BpmnProcessRestClient extends BaseRestClient {
@@ -44,26 +39,4 @@ public class BpmnProcessRestClient extends BaseRestClient {
     public List<BpmnProcess> getDefinitions() {
         return getService(BpmnProcessService.class).list();
     }
-
-    public InputStream getDefinition(final MediaType mediaType, final String 
key) {
-        Response response = getService(mediaType).get(key);
-        SyncopeEnduserSession.get().resetClient(BpmnProcessService.class);
-
-        return (InputStream) response.getEntity();
-    }
-
-    public byte[] getDiagram(final String key) {
-        BpmnProcessService service = getService(BpmnProcessService.class);
-        WebClient.client(service).accept(RESTHeaders.MEDIATYPE_IMAGE_PNG);
-        Response response = service.exportDiagram(key);
-
-        byte[] diagram;
-        try {
-            diagram = IOUtils.readBytesFromStream((InputStream) 
response.getEntity());
-        } catch (Exception e) {
-            LOG.error("Could not get workflow diagram", e);
-            diagram = new byte[0];
-        }
-        return diagram;
-    }
 }
diff --git 
a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ClientCache.java
 
b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ClientCache.java
index dc3289da0b..52ced1243f 100644
--- 
a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ClientCache.java
+++ 
b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ClientCache.java
@@ -29,7 +29,6 @@ import java.util.List;
 import java.util.Optional;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.Strings;
-import org.apache.cxf.helpers.IOUtils;
 import org.apache.syncope.common.lib.to.Item;
 import org.apache.syncope.common.lib.to.SAML2SP4UIIdPTO;
 import org.apache.syncope.common.lib.types.SAML2BindingType;
@@ -71,7 +70,7 @@ public class SAML2ClientCache {
     public static SAML2SP4UIIdPTO importMetadata(
             final InputStream metadata, final SAML2Configuration cfg) throws 
IOException {
 
-        cfg.setIdentityProviderMetadataResource(new 
ByteArrayResource(IOUtils.readBytesFromStream(metadata)));
+        cfg.setIdentityProviderMetadataResource(new 
ByteArrayResource(metadata.readAllBytes()));
         SAML2IdentityProviderMetadataResolver metadataResolver = new 
SAML2IdentityProviderMetadataResolver(cfg);
         metadataResolver.init();
         cfg.setIdentityProviderMetadataResolver(metadataResolver);
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MailTemplateITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MailTemplateITCase.java
index 14a42482d5..e94d5bab2b 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MailTemplateITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MailTemplateITCase.java
@@ -26,10 +26,10 @@ import static org.junit.jupiter.api.Assertions.fail;
 
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
-import org.apache.commons.io.IOUtils;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.MailTemplateTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
@@ -83,7 +83,7 @@ public class MailTemplateITCase extends AbstractITCase {
         // 3. set TEXT
         String textTemplate = "Hi there, I am ${username}.";
         MAIL_TEMPLATE_SERVICE.setFormat(
-                key, MailTemplateFormat.TEXT, 
IOUtils.toInputStream(textTemplate, StandardCharsets.UTF_8));
+                key, MailTemplateFormat.TEXT, new 
ByteArrayInputStream(textTemplate.getBytes(StandardCharsets.UTF_8)));
 
         response = MAIL_TEMPLATE_SERVICE.getFormat(key, 
MailTemplateFormat.TEXT);
         assertEquals(200, response.getStatus());
@@ -93,7 +93,7 @@ public class MailTemplateITCase extends AbstractITCase {
         // 3. set HTML
         String htmlTemplate = "<html><body>Hi there, I am 
${username}.</body></html>";
         MAIL_TEMPLATE_SERVICE.setFormat(
-                key, MailTemplateFormat.HTML, 
IOUtils.toInputStream(htmlTemplate, StandardCharsets.UTF_8));
+                key, MailTemplateFormat.HTML, new 
ByteArrayInputStream(htmlTemplate.getBytes(StandardCharsets.UTF_8)));
 
         response = MAIL_TEMPLATE_SERVICE.getFormat(key, 
MailTemplateFormat.HTML);
         assertEquals(200, response.getStatus());
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
index 2af22f3c26..1bac452fdc 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
@@ -30,7 +30,6 @@ import java.io.IOException;
 import java.util.Base64;
 import java.util.List;
 import java.util.Locale;
-import org.apache.cxf.helpers.IOUtils;
 import org.apache.syncope.common.keymaster.client.api.StandardConfParams;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.request.AttrPatch;
@@ -188,7 +187,7 @@ public class PlainSchemaITCase extends AbstractITCase {
             // validation OK - application/pdf -> application/pdf
             userUR.getPlainAttrs().add(new AttrPatch.Builder(attr("BinaryPDF",
                     Base64.getEncoder().encodeToString(
-                            
IOUtils.readBytesFromStream(getClass().getResourceAsStream("/test.pdf"))))).
+                            
getClass().getResourceAsStream("/test.pdf").readAllBytes()))).
                     operation(PatchOperation.ADD_REPLACE).
                     build());
 
@@ -201,7 +200,7 @@ public class PlainSchemaITCase extends AbstractITCase {
             try {
                 userUR.getPlainAttrs().add(new 
AttrPatch.Builder(attr("BinaryPDF",
                         Base64.getEncoder().encodeToString(
-                                
IOUtils.readBytesFromStream(getClass().getResourceAsStream("/test.html"))))).
+                                
getClass().getResourceAsStream("/test.html").readAllBytes()))).
                         operation(PatchOperation.ADD_REPLACE).
                         build());
 
@@ -216,7 +215,7 @@ public class PlainSchemaITCase extends AbstractITCase {
             // validation ok - application/json -> application/json
             userUR.getPlainAttrs().add(new AttrPatch.Builder(attr("BinaryJSON",
                     Base64.getEncoder().encodeToString(
-                            
IOUtils.readBytesFromStream(getClass().getResourceAsStream("/test.json"))))).
+                            
getClass().getResourceAsStream("/test.json").readAllBytes()))).
                     operation(PatchOperation.ADD_REPLACE).
                     build());
 
@@ -228,7 +227,7 @@ public class PlainSchemaITCase extends AbstractITCase {
             // no validation - application/xml -> application/json
             userUR.getPlainAttrs().add(new 
AttrPatch.Builder(attr("BinaryJSON2",
                     Base64.getEncoder().encodeToString(
-                            
IOUtils.readBytesFromStream(getClass().getResourceAsStream("/test.xml"))))).
+                            
getClass().getResourceAsStream("/test.xml").readAllBytes()))).
                     operation(PatchOperation.ADD_REPLACE).
                     build());
 
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
index a6136b9d68..fdd564b66b 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
@@ -41,7 +41,6 @@ import java.util.List;
 import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
-import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.keymaster.client.api.StandardConfParams;
@@ -679,7 +678,7 @@ public class UserIssuesITCase extends AbstractITCase {
         UserCR userCR = 
UserITCase.getUniqueSample("[email protected]");
         userCR.getPlainAttrs().add(attr("obscure", "valueToBeObscured"));
         userCR.getPlainAttrs().add(attr("photo", 
Base64.getEncoder().encodeToString(
-                
IOUtils.readBytesFromStream(getClass().getResourceAsStream("/favicon.jpg")))));
+                
getClass().getResourceAsStream("/favicon.jpg").readAllBytes())));
         userCR.getMemberships().add(new 
MembershipTO.Builder(groupTO.getKey()).build());
 
         UserTO userTO = createUser(userCR).getEntity();
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserRequestITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserRequestITCase.java
index f3a863c789..8bcedc973c 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserRequestITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserRequestITCase.java
@@ -28,8 +28,8 @@ import static org.junit.jupiter.api.Assumptions.assumeTrue;
 import jakarta.ws.rs.core.GenericType;
 import jakarta.ws.rs.core.MediaType;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.List;
-import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.SyncopeClientException;
@@ -55,12 +55,15 @@ public class UserRequestITCase extends AbstractITCase {
         assumeTrue(IS_FLOWABLE_ENABLED);
 
         
WebClient.client(BPMN_PROCESS_SERVICE).type(MediaType.APPLICATION_XML_TYPE);
-        BPMN_PROCESS_SERVICE.set("directorGroupRequest",
-                
IOUtils.toString(UserRequestITCase.class.getResourceAsStream("/directorGroupRequest.bpmn20.xml")));
-        BPMN_PROCESS_SERVICE.set("assignPrinterRequest",
-                
IOUtils.toString(UserRequestITCase.class.getResourceAsStream("/assignPrinterRequest.bpmn20.xml")));
-        BPMN_PROCESS_SERVICE.set("verifyAddedVariables",
-                
IOUtils.toString(UserRequestITCase.class.getResourceAsStream("/verifyAddedVariables.bpmn20.xml")));
+        BPMN_PROCESS_SERVICE.set("directorGroupRequest", new String(
+                
UserRequestITCase.class.getResourceAsStream("/directorGroupRequest.bpmn20.xml").readAllBytes(),
+                StandardCharsets.UTF_8));
+        BPMN_PROCESS_SERVICE.set("assignPrinterRequest", new String(
+                
UserRequestITCase.class.getResourceAsStream("/assignPrinterRequest.bpmn20.xml").readAllBytes(),
+                StandardCharsets.UTF_8));
+        BPMN_PROCESS_SERVICE.set("verifyAddedVariables", new String(
+                
UserRequestITCase.class.getResourceAsStream("/verifyAddedVariables.bpmn20.xml").readAllBytes(),
+                StandardCharsets.UTF_8));
     }
 
     @BeforeEach
@@ -300,8 +303,9 @@ public class UserRequestITCase extends AbstractITCase {
     public void invalid() throws IOException {
         
WebClient.client(BPMN_PROCESS_SERVICE).type(MediaType.APPLICATION_XML_TYPE);
         try {
-            BPMN_PROCESS_SERVICE.set("invalid",
-                    
IOUtils.toString(UserRequestITCase.class.getResourceAsStream("/invalidRequest.bpmn20.xml")));
+            BPMN_PROCESS_SERVICE.set("invalid", new String(
+                    
UserRequestITCase.class.getResourceAsStream("/invalidRequest.bpmn20.xml").readAllBytes(),
+                    StandardCharsets.UTF_8));
             fail();
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.Workflow, e.getType());
diff --git a/pom.xml b/pom.xml
index ddd74daeb0..84efe7779c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -431,7 +431,7 @@ under the License.
     <connid.kafka.version>1.0.0</connid.kafka.version>
     <connid.ldup.version>0.1.0</connid.ldup.version>
 
-    <cxf.version>4.2.2</cxf.version>
+    <cxf.version>4.2.3</cxf.version>
     <bouncycastle.version>1.85</bouncycastle.version>
     <nimbus-jose-jwt.version>10.9.1</nimbus-jose-jwt.version>
 
@@ -451,8 +451,8 @@ under the License.
 
     <disruptor.version>4.0.0</disruptor.version>
 
-    <elasticsearch.version>9.4.4</elasticsearch.version>
-    <opensearch.version>3.7.0</opensearch.version>
+    <elasticsearch.version>9.5.0</elasticsearch.version>
+    <opensearch.version>3.8.0</opensearch.version>
     <opensearch-java.version>3.9.0</opensearch-java.version>
 
     <openfga.version>v1</openfga.version>
diff --git 
a/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientKeystoreGenerator.java
 
b/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientKeystoreGenerator.java
index 32217fc526..13a5fe2f7d 100644
--- 
a/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientKeystoreGenerator.java
+++ 
b/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientKeystoreGenerator.java
@@ -27,7 +27,6 @@ import java.security.KeyStore;
 import java.security.PrivateKey;
 import java.security.cert.X509Certificate;
 import java.util.Base64;
-import org.apache.commons.io.IOUtils;
 import org.apache.syncope.common.rest.api.service.wa.WASAML2SPService;
 import org.apache.syncope.wa.bootstrap.WARestClient;
 import org.pac4j.core.keystore.generation.BaseKeystoreGenerator;
@@ -79,7 +78,7 @@ public class WASAML2ClientKeystoreGenerator extends 
BaseKeystoreGenerator {
         }
 
         waRestClient.getService(WASAML2SPService.class).setSAML2SPKeystore(
-                saml2Client, IOUtils.toInputStream(encodedKeystore, 
StandardCharsets.UTF_8));
+                saml2Client, new 
ByteArrayInputStream(encodedKeystore.getBytes(StandardCharsets.UTF_8)));
     }
 
     @Override
diff --git 
a/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientMetadataGenerator.java
 
b/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientMetadataGenerator.java
index 15066f43e9..2e69f3ae45 100644
--- 
a/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientMetadataGenerator.java
+++ 
b/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientMetadataGenerator.java
@@ -18,10 +18,10 @@
  */
 package org.apache.syncope.wa.starter.pac4j.saml;
 
+import java.io.ByteArrayInputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.Base64;
 import java.util.Optional;
-import org.apache.commons.io.IOUtils;
 import org.apache.syncope.common.rest.api.service.wa.WASAML2SPService;
 import org.apache.syncope.wa.bootstrap.WARestClient;
 import org.opensaml.saml.metadata.resolver.MetadataResolver;
@@ -110,7 +110,7 @@ public class WASAML2ClientMetadataGenerator extends 
BaseSAML2MetadataGenerator {
 
             try {
                 
waRestClient.getService(WASAML2SPService.class).setSAML2SPMetadata(
-                        saml2Client, IOUtils.toInputStream(encodedMetadata, 
StandardCharsets.UTF_8));
+                        saml2Client, new 
ByteArrayInputStream(encodedMetadata.getBytes(StandardCharsets.UTF_8)));
             } catch (Exception e) {
                 LOG.error("While storing SP {} metadata", saml2Client, e);
             }

Reply via email to