Upgrade spring-boot to 2.4 80/136280/1
authorFiete Ostkamp <Fiete.Ostkamp@telekom.de>
Thu, 19 Oct 2023 09:54:55 +0000 (11:54 +0200)
committerFiete Ostkamp <Fiete.Ostkamp@telekom.de>
Thu, 19 Oct 2023 09:54:55 +0000 (11:54 +0200)
- update spring-boot to latest available 2.4.X release
- Content-Type's on GET requests now result in 415 (instead of being ignored) which necessitates changes to the ConfigurationTest

Issue-ID: AAI-3667
Change-Id: If6cbce8185b443a79b5e3b32fa3ffede5cabee60
Signed-off-by: Fiete Ostkamp <Fiete.Ostkamp@telekom.de>
aai-resources/pom.xml
aai-resources/src/main/java/org/onap/aai/interceptors/post/InvalidResponseStatus.java
aai-resources/src/main/java/org/onap/aai/interceptors/pre/RequestTransactionLogging.java
aai-resources/src/main/java/org/onap/aai/rest/LegacyMoxyConsumer.java
aai-resources/src/main/resources/application.properties
aai-resources/src/test/java/org/onap/aai/rest/ConfigurationTest.java
aai-resources/src/test/java/org/onap/aai/rest/ExceptionHandlerTest.java
aai-resources/src/test/resources/application-test.properties

index 51c7e55..4336d67 100644 (file)
     </parent>
     <properties>
         <java.version>1.8</java.version>
-        <spring.boot.version>2.3.12.RELEASE</spring.boot.version>
-        <spring.version>5.2.15.RELEASE</spring.version>
-        <spring.jms.version>${spring.version}</spring.jms.version>
-        <spring.test.version>${spring.version}</spring.test.version>
         <start-class>org.onap.aai.ResourcesApp</start-class>
 
         <!-- Default docker registry that maven fabric plugin will try to pull from -->
         <schema.ingest.file>${project.basedir}/src/main/resources/application.properties</schema.ingest.file>
 
         <!-- End of Default ONAP Schema Properties -->
+        <spring.boot.version>2.4.13</spring.boot.version>
+        <spring.version>5.3.13</spring.version>
+        <javax.servlet.version>4.0.1</javax.servlet.version>
+        <spring.jms.version>${spring.version}</spring.jms.version>
+        <spring.test.version>${spring.version}</spring.test.version>
         <keycloak.version>11.0.2</keycloak.version>
         <micrometer-spring-legacy.version>1.3.19</micrometer-spring-legacy.version>
         <micrometer-core.version>1.6.6</micrometer-core.version>
         <micrometer-registry-prometheus.version>1.6.6</micrometer-registry-prometheus.version>
         <micrometer-jersey2>1.6.6</micrometer-jersey2>
         <testcontainers.version>1.6.1</testcontainers.version>
-        <mockito.core.version>2.4.0</mockito.core.version>
+        <mockito.core.version>3.4.0</mockito.core.version>
         <!-- Setting some default value to not complain by editor but it will be overridden by gmaven plugin -->
 
         <!-- Integration tests will be skipped by default. Could be enabled here or by -DskipITs=false-->
         </dependency>
         <dependency>
             <groupId>io.swagger</groupId>
-            <artifactId>swagger-jersey-jaxrs</artifactId>
+            <artifactId>swagger-jersey2-jaxrs</artifactId>
             <version>${swagger.version}</version>
             <exclusions>
                 <exclusion>
index 61ada79..1d20744 100644 (file)
@@ -33,6 +33,7 @@ import javax.ws.rs.core.MediaType;
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.interceptors.AAIContainerFilter;
 import org.onap.aai.logging.ErrorLogHelper;
+import org.springframework.http.HttpStatus;
 
 @Priority(AAIResponseFilterPriority.INVALID_RESPONSE_STATUS)
 public class InvalidResponseStatus extends AAIContainerFilter implements ContainerResponseFilter {
@@ -41,9 +42,9 @@ public class InvalidResponseStatus extends AAIContainerFilter implements Contain
     public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
             throws IOException {
 
-        if (responseContext.getStatus() == 405) {
+        if (responseContext.getStatus() == HttpStatus.METHOD_NOT_ALLOWED.value()) {
 
-            responseContext.setStatus(400);
+            responseContext.setStatus(HttpStatus.BAD_REQUEST.value());
             AAIException e = new AAIException("AAI_3012");
             ArrayList<String> templateVars = new ArrayList<>();
 
index 14c1f01..2d0dcdc 100644 (file)
@@ -91,7 +91,7 @@ public class RequestTransactionLogging extends AAIContainerFilter implements Con
             requestContext.getHeaders().putSingle(CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
         }
 
-        if (WILDCARD.equals(acceptType) || StringUtils.isEmpty(acceptType) || acceptType.contains(TEXT_PLAIN)) {
+        if (WILDCARD.equals(acceptType) || acceptType.isEmpty() || !StringUtils.hasLength(acceptType) || acceptType.contains(TEXT_PLAIN)) {
             UriInfo uriInfo = requestContext.getUriInfo();
             if (uriInfo != null) {
                 MultivaluedMap<String, String> queryParameters = uriInfo.getQueryParameters();
index 5208726..c685071 100644 (file)
@@ -21,7 +21,6 @@
 package org.onap.aai.rest;
 
 import io.micrometer.core.annotation.Timed;
-import io.swagger.jaxrs.PATCH;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URI;
index 3905dd8..66a8e53 100644 (file)
@@ -20,9 +20,9 @@ spring.jersey.application-path=${schema.uri.base.path}
 
 spring.profiles.active=production,one-way-ssl,dmaap
 #The max number of active threads in this pool
-jetty.threadPool.maxThreads=200
+server.jetty.threads.max=200
 #The minimum number of threads always kept alive
-jetty.threadPool.minThreads=8
+server.jetty.threads.min=8
 #The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads
 server.tomcat.max-idle-time=60000
 
index 357ea41..8cc28fc 100644 (file)
@@ -27,7 +27,6 @@ import com.jayway.jsonpath.JsonPath;
 
 import java.io.UnsupportedEncodingException;
 import java.util.Arrays;
-import java.util.Base64;
 import java.util.Collections;
 import java.util.UUID;
 
@@ -72,28 +71,29 @@ public class ConfigurationTest extends AbstractSpringRestTest {
     @Value("${local.management.port}")
     private int mgtPort;
 
-    private HttpEntity<String> httpEntity;
+    private HttpEntity<String> httpEntityGet;
     private HttpEntity<String> httpEntityPut;
     private HttpEntity<String> httpEntityPatch;
     private String baseUrl;
     private String actuatorurl;
-    private HttpHeaders headers;
+    private HttpHeaders headersGet;
+    private HttpHeaders headersPutPatch;
 
     @Before
     public void setup() throws UnsupportedEncodingException {
 
-        headers = new HttpHeaders();
+        headersGet = new HttpHeaders();
+        headersGet.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+        headersGet.add("Real-Time", "true");
+        headersGet.add("X-FromAppId", "JUNIT");
+        headersGet.add("X-TransactionId", "JUNIT");
 
-        headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
-        headers.setContentType(MediaType.APPLICATION_JSON);
-        headers.add("Real-Time", "true");
-        headers.add("X-FromAppId", "JUNIT");
-        headers.add("X-TransactionId", "JUNIT");
+        headersGet.setBasicAuth("AAI","AAI");
 
-        String authorization = Base64.getEncoder().encodeToString("AAI:AAI".getBytes("UTF-8"));
-        headers.add("Authorization", "Basic " + authorization);
-
-        httpEntity = new HttpEntity<String>(headers);
+        headersPutPatch = new HttpHeaders();
+        headersPutPatch.putAll(headersGet);
+        headersPutPatch.setContentType(MediaType.APPLICATION_JSON);
+        httpEntityGet = new HttpEntity<String>(headersGet);
         baseUrl = "http://localhost:" + randomPort;
         actuatorurl = "http://localhost:" + mgtPort;
     }
@@ -105,7 +105,7 @@ public class ConfigurationTest extends AbstractSpringRestTest {
 
         ResponseEntity<String> responseEntity = null;
 
-        responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class);
+        responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntityGet, String.class);
         assertEquals(HttpStatus.NOT_FOUND, responseEntity.getStatusCode());
 
         // String putBody = " configuration-id, configuration-type configuration-sub-type";
@@ -113,31 +113,31 @@ public class ConfigurationTest extends AbstractSpringRestTest {
                 + "\"configuration-sub-type\": \"subtype1\", " + "\"operational-status\": \"example1\", "
                 + "\"orchestration-status\": \"example1\", " + "\"configuration-selflink\": \"example1\", "
                 + "\"model-customization-id\": \"example1\" " + "}";
-        httpEntityPut = new HttpEntity<String>(putBody, headers);
+        httpEntityPut = new HttpEntity<String>(putBody, headersPutPatch);
         responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntityPut, String.class);
         assertEquals(HttpStatus.CREATED, responseEntity.getStatusCode());
 
         String vertexId = responseEntity.getHeaders().getFirst("vertex-id");
         responseEntity = restTemplate.exchange(baseUrl + "/aai/v12/resources/id/" + vertexId, HttpMethod.GET,
-                httpEntity, String.class);
+                httpEntityGet, String.class);
         assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
 
-        responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class);
+        responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntityGet, String.class);
         assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
 
         String patchBody = "{" + "\"configuration-id\": \"" + cid + "\"," + "\"configuration-type\": \"type2\","
                 + "\"configuration-sub-type\": \"subtype2\", " + "\"operational-status\": \"example1\", "
                 + "\"orchestration-status\": \"example1\", " + "\"configuration-selflink\": \"example1\", "
                 + "\"model-customization-id\": \"example1\" " + "}";
-        headers.put("Content-Type", Arrays.asList("application/merge-patch+json"));
-        headers.add("X-HTTP-Method-Override", "PATCH");
+        headersPutPatch.put("Content-Type", Arrays.asList("application/merge-patch+json"));
+        headersPutPatch.add("X-HTTP-Method-Override", "PATCH");
 
-        httpEntityPatch = new HttpEntity<String>(patchBody, headers);
+        httpEntityPatch = new HttpEntity<String>(patchBody, headersPutPatch);
 
         responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.POST, httpEntityPatch, String.class);
         assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
 
-        responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class);
+        responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntityGet, String.class);
         assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
 
         String body = responseEntity.getBody().toString();
@@ -148,11 +148,11 @@ public class ConfigurationTest extends AbstractSpringRestTest {
         patchBody = "{" + "\"configuration-id\": \"" + cid + "\"," + "\"configuration-type\": \"type3\","
                 + "\"configuration-sub-type\": \"subtype3\" " + "}";
 
-        httpEntityPatch = new HttpEntity<String>(patchBody, headers);
+        httpEntityPatch = new HttpEntity<String>(patchBody, headersPutPatch);
         responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PATCH, httpEntityPatch, String.class);
         assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
 
-        responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class);
+        responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntityGet, String.class);
         assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
 
         body = responseEntity.getBody().toString();
@@ -163,15 +163,16 @@ public class ConfigurationTest extends AbstractSpringRestTest {
     }
 
     @Test
-    public void TestManagementEndpointConfiguration() {
+    public void testManagementEndpointConfiguration() {
         ResponseEntity<String> responseEntity = null;
         String responseBody = null;
 
         // set Accept as text/plain in order to get access of endpoint "/actuator/prometheus"
-        headers.set("Accept", "text/plain");
-        httpEntity = new HttpEntity<String>(headers);
+        headersGet.set("Accept", "text/plain");
+        headersGet.setAccept(Arrays.asList(MediaType.TEXT_PLAIN));
+        httpEntityGet = new HttpEntity<String>(headersGet);
         responseEntity =
-                restTemplate.exchange(actuatorurl + "/actuator/prometheus", HttpMethod.GET, httpEntity, String.class);
+                restTemplate.exchange(actuatorurl + "/actuator/prometheus", HttpMethod.GET, httpEntityGet, String.class);
         responseBody = (String) responseEntity.getBody();
         assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
         assertTrue(responseBody.contains("group_id"));
@@ -179,16 +180,16 @@ public class ConfigurationTest extends AbstractSpringRestTest {
 
         // Set Accept as MediaType.APPLICATION_JSON in order to get access of endpoint "/actuator/info" and
         // "/actuator/health"
-        headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
-        httpEntity = new HttpEntity<String>(headers);
+        headersGet.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+        httpEntityGet = new HttpEntity<String>(headersGet);
         responseEntity =
-                restTemplate.exchange(actuatorurl + "/actuator/info", HttpMethod.GET, httpEntity, String.class);
+                restTemplate.exchange(actuatorurl + "/actuator/info", HttpMethod.GET, httpEntityGet, String.class);
         responseBody = (String) responseEntity.getBody();
         assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
         assertTrue(responseBody.contains("aai-resources"));
 
         responseEntity =
-                restTemplate.exchange(actuatorurl + "/actuator/health", HttpMethod.GET, httpEntity, String.class);
+                restTemplate.exchange(actuatorurl + "/actuator/health", HttpMethod.GET, httpEntityGet, String.class);
         responseBody = (String) responseEntity.getBody();
         assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
         assertTrue(responseBody.contains("UP"));
index a804ee5..27f702f 100644 (file)
@@ -65,7 +65,7 @@ public class ExceptionHandlerTest extends AAISetup {
 
     @Before
     public void setup() {
-        MockitoAnnotations.initMocks(this);
+        MockitoAnnotations.openMocks(this);
 
         MultivaluedHashMap<String, String> headersMultiMap = new MultivaluedHashMap<>();
 
index 4c2b8d0..21e4ca7 100644 (file)
@@ -20,9 +20,9 @@ spring.autoconfigure.exclude=\
 
 spring.profiles.active=production
 #The max number of active threads in this pool
-server.tomcat.max-threads=200
+server.tomcat.threads.max=200
 #The minimum number of threads always kept alive
-server.tomcat.min-Spare-Threads=25
+server.tomcat.threads.min-spare=25
 #The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads
 server.tomcat.max-idle-time=60000