Spring-boot 3.2 update 93/142893/3
authorFiete Ostkamp <fiete.ostkamp@telekom.de>
Thu, 8 Jan 2026 20:43:23 +0000 (21:43 +0100)
committerFiete Ostkamp <fiete.ostkamp@telekom.de>
Fri, 9 Jan 2026 09:35:36 +0000 (10:35 +0100)
- update spring boot (3.1.12 -> 3.2.12)
- this requires using apache http client 5 in ValidationService

Issue-ID: AAI-4208
Change-Id: Ia027ace5ffc748332c372e7c3faf15d400837656
Signed-off-by: Fiete Ostkamp <fiete.ostkamp@telekom.de>
aai-core/src/main/java/org/onap/aai/config/GraphConfig.java
aai-core/src/main/java/org/onap/aai/config/IntrospectionConfig.java
aai-core/src/main/java/org/onap/aai/prevalidation/ValidationServiceNoAuthClient.java
aai-core/src/main/java/org/onap/aai/prevalidation/ValidationServiceOneWayClient.java
aai-core/src/main/java/org/onap/aai/prevalidation/ValidationServiceRestClient.java
aai-parent/pom.xml

index 85feabb..3c74c92 100644 (file)
@@ -32,6 +32,7 @@ import org.onap.aai.dbgen.SchemaGenerator;
 import org.onap.aai.dbgen.SchemaGenerator4Hist;
 import org.onap.aai.dbmap.AAIGraphConfig;
 import org.onap.aai.exceptions.AAIException;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -85,7 +86,7 @@ public class GraphConfig {
   }
 
   @Bean
-  public GraphTraversalSource graphTraversalSource(Graph graph) {
+  public GraphTraversalSource graphTraversalSource(@Qualifier("graph") Graph graph) {
     return graph.traversal();
   }
 
index a341107..0d7e3be 100644 (file)
@@ -29,6 +29,7 @@ import org.onap.aai.introspection.MoxyLoader;
 import org.onap.aai.setup.SchemaVersion;
 import org.onap.aai.setup.SchemaVersions;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
@@ -44,7 +45,7 @@ public class IntrospectionConfig {
     NodesConfiguration nodesConfiguration;
 
     @Bean
-    public Map<SchemaVersion, MoxyLoader> moxyLoaderInstance(SchemaVersions schemaVersions) {
+    public Map<SchemaVersion, MoxyLoader> moxyLoaderInstance(@Qualifier("schemaVersions") SchemaVersions schemaVersions) {
         for (SchemaVersion version : schemaVersions.getVersions()) {
             if (!moxyInstanceMap.containsKey(version)) {
                 moxyInstanceMap.put(version, new MoxyLoader(version, nodesConfiguration.nodeIngestor()));
index 2c5f42d..4320a2d 100644 (file)
@@ -23,19 +23,22 @@ package org.onap.aai.prevalidation;
 import java.util.Collections;
 import java.util.Map;
 import java.util.UUID;
+import java.util.concurrent.TimeUnit;
 
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.config.RequestConfig;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
+import org.apache.hc.core5.http.io.SocketConfig;
+import org.apache.hc.core5.util.Timeout;
 import org.onap.aai.restclient.NoAuthRestClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
 import org.springframework.util.MultiValueMap;
 
 public class ValidationServiceNoAuthClient extends NoAuthRestClient {
 
-    private static Logger logger = LoggerFactory.getLogger(ValidationServiceNoAuthClient.class);
 
     @Value("${validation.service.base.url}")
     private String baseUrl;
@@ -44,13 +47,23 @@ public class ValidationServiceNoAuthClient extends NoAuthRestClient {
     private Integer timeout;
 
     @Override
-    protected HttpComponentsClientHttpRequestFactory getHttpRequestFactory() throws Exception {
-        HttpComponentsClientHttpRequestFactory requestFactory = super.getHttpRequestFactory();
-        requestFactory.setConnectionRequestTimeout(timeout);
-        // Manual migration to `SocketConfig.Builder.setSoTimeout(Timeout)` necessary; see: https://docs.spring.io/spring-framework/docs/6.0.0/javadoc-api/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.html#setReadTimeout(int)
-        requestFactory.setReadTimeout(timeout);
-        requestFactory.setConnectTimeout(timeout);
-        return requestFactory;
+    protected HttpClient getClient() throws Exception {
+        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
+        connectionManager.setDefaultSocketConfig(
+            SocketConfig.custom()
+                .setSoTimeout(Timeout.of(timeout, TimeUnit.MILLISECONDS))
+                .build()
+        );
+
+        RequestConfig requestConfig = RequestConfig.custom()
+            .setConnectionRequestTimeout(Timeout.of(timeout, TimeUnit.MILLISECONDS))
+            .setResponseTimeout(Timeout.of(timeout, TimeUnit.MILLISECONDS))
+            .build();
+
+        return HttpClients.custom()
+            .setConnectionManager(connectionManager)
+            .setDefaultRequestConfig(requestConfig)
+            .build();
     }
 
     @Override
index 77e464d..993d2dd 100644 (file)
@@ -23,12 +23,19 @@ package org.onap.aai.prevalidation;
 import java.util.Collections;
 import java.util.Map;
 import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.config.RequestConfig;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
+import org.apache.hc.core5.http.io.SocketConfig;
+import org.apache.hc.core5.util.Timeout;
 
 import org.onap.aai.restclient.OneWaySSLRestClient;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
 import org.springframework.util.MultiValueMap;
 
 public class ValidationServiceOneWayClient extends OneWaySSLRestClient {
@@ -45,13 +52,24 @@ public class ValidationServiceOneWayClient extends OneWaySSLRestClient {
     }
 
     @Override
-    protected HttpComponentsClientHttpRequestFactory getHttpRequestFactory() throws Exception {
-        HttpComponentsClientHttpRequestFactory requestFactory = super.getHttpRequestFactory();
-        requestFactory.setConnectionRequestTimeout(timeout);
-        // Manual migration to `SocketConfig.Builder.setSoTimeout(Timeout)` necessary; see: https://docs.spring.io/spring-framework/docs/6.0.0/javadoc-api/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.html#setReadTimeout(int)
-        requestFactory.setReadTimeout(timeout);
-        requestFactory.setConnectTimeout(timeout);
-        return requestFactory;
+    protected HttpClient getClient() throws Exception {
+
+        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
+        connectionManager.setDefaultSocketConfig(
+            SocketConfig.custom()
+                .setSoTimeout(Timeout.of(timeout, TimeUnit.MILLISECONDS))
+                .build()
+        );
+
+        RequestConfig requestConfig = RequestConfig.custom()
+            .setConnectionRequestTimeout(Timeout.of(timeout, TimeUnit.MILLISECONDS))
+            .setResponseTimeout(Timeout.of(timeout, TimeUnit.MILLISECONDS))
+            .build();
+
+        return HttpClients.custom()
+            .setConnectionManager(connectionManager)
+            .setDefaultRequestConfig(requestConfig)
+            .build();
     }
 
     @Override
index 61cc57f..b6dfba7 100644 (file)
@@ -25,12 +25,19 @@ package org.onap.aai.prevalidation;
 import java.util.Collections;
 import java.util.Map;
 import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.config.RequestConfig;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
+import org.apache.hc.core5.http.io.SocketConfig;
+import org.apache.hc.core5.util.Timeout;
 
 import org.onap.aai.restclient.TwoWaySSLRestClient;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
 import org.springframework.util.MultiValueMap;
 
 public class ValidationServiceRestClient extends TwoWaySSLRestClient {
@@ -46,13 +53,24 @@ public class ValidationServiceRestClient extends TwoWaySSLRestClient {
         return baseUrl;
     }
 
-    protected HttpComponentsClientHttpRequestFactory getHttpRequestFactory() throws Exception {
-        HttpComponentsClientHttpRequestFactory requestFactory = super.getHttpRequestFactory();
-        requestFactory.setConnectionRequestTimeout(timeout);
-        // Manual migration to `SocketConfig.Builder.setSoTimeout(Timeout)` necessary; see: https://docs.spring.io/spring-framework/docs/6.0.0/javadoc-api/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.html#setReadTimeout(int)
-        requestFactory.setReadTimeout(timeout);
-        requestFactory.setConnectTimeout(timeout);
-        return requestFactory;
+    @Override
+    protected HttpClient getClient() throws Exception {
+        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
+        connectionManager.setDefaultSocketConfig(
+            SocketConfig.custom()
+                .setSoTimeout(Timeout.of(timeout, TimeUnit.MILLISECONDS))
+                .build()
+        );
+
+        RequestConfig requestConfig = RequestConfig.custom()
+            .setConnectionRequestTimeout(Timeout.of(timeout, TimeUnit.MILLISECONDS))
+            .setResponseTimeout(Timeout.of(timeout, TimeUnit.MILLISECONDS))
+            .build();
+
+        return HttpClients.custom()
+            .setConnectionManager(connectionManager)
+            .setDefaultRequestConfig(requestConfig)
+            .build();
     }
 
     @Override
index 2da5c11..2edfcdc 100644 (file)
@@ -53,7 +53,7 @@ limitations under the License.
     <commons.net.version>3.8.0</commons.net.version>
     <commons.text.version>1.13.0</commons.text.version>
     <docker.fabric.version>0.40.2</docker.fabric.version>
-    <eclipse.persistence.version>4.0.6</eclipse.persistence.version>
+    <eclipse.persistence.version>4.0.9</eclipse.persistence.version>
     <google.guava.version>33.4.0-jre</google.guava.version>
     <gremlin.version>3.7.3</gremlin.version>
     <janusgraph.version>1.1.0</janusgraph.version>
@@ -78,7 +78,7 @@ limitations under the License.
         Please don't upgrade to 2.3.0 or above for nexus iq or security scans
         as it could potentially break our code
       -->
-    <spring.boot.version>3.1.12</spring.boot.version>
+    <spring.boot.version>3.2.12</spring.boot.version>
     <json.path.version>2.2.0</json.path.version>
     <json.version>20240303</json.version>
     <junit.version>4.12</junit.version>
@@ -89,7 +89,7 @@ limitations under the License.
     <opencsv.version>3.1</opencsv.version>
     <plexus.utils.version>3.1.1</plexus.utils.version>
     <reflections.version>0.9.10</reflections.version>
-    <lombok.version>1.18.38</lombok.version>
+    <lombok.version>1.18.42</lombok.version>
     <testcontainers.version>1.20.4</testcontainers.version>
 
     <jakarta.servlet.version>3.1.0</jakarta.servlet.version>
@@ -102,7 +102,7 @@ limitations under the License.
     <!-- we let things pass by default, set custom level for each child project -->
     <jacoco.line.coverage.limit>0.00</jacoco.line.coverage.limit>
 
-    <jacoco.version>0.8.13</jacoco.version>
+    <jacoco.version>0.8.14</jacoco.version>
     <sonar-jacoco-listeners.version>3.2</sonar-jacoco-listeners.version>
     <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
     <sonar.coverage.jacoco.xmlReportPaths>${project.reporting.outputDirectory}/jacoco-ut/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
@@ -332,12 +332,12 @@ limitations under the License.
       <dependency>
         <groupId>jakarta.xml.bind</groupId>
         <artifactId>jakarta.xml.bind-api</artifactId>
-        <version>4.0.2</version>
+        <version>4.0.4</version>
       </dependency>
       <dependency>
         <groupId>org.glassfish.jaxb</groupId>
         <artifactId>jaxb-runtime</artifactId>
-        <version>3.0.1</version>
+        <version>3.0.2</version>
       </dependency>
 
       <dependency>
@@ -413,7 +413,7 @@ limitations under the License.
 
       <dependency>
         <groupId>io.swagger.core.v3</groupId>
-        <artifactId>swagger-core</artifactId>
+        <artifactId>swagger-core-jakarta</artifactId>
         <version>2.2.29</version>
       </dependency>
 
@@ -425,7 +425,7 @@ limitations under the License.
 
       <dependency>
         <groupId>io.swagger.core.v3</groupId>
-        <artifactId>swagger-annotations</artifactId>
+        <artifactId>swagger-annotations-jakarta</artifactId>
         <version>2.2.25</version>
       </dependency>