Spring-boot 3 upgrade in resources 07/139807/1
authorFiete Ostkamp <Fiete.Ostkamp@telekom.de>
Fri, 3 Jan 2025 15:22:09 +0000 (16:22 +0100)
committerFiete Ostkamp <Fiete.Ostkamp@telekom.de>
Fri, 3 Jan 2025 15:22:09 +0000 (16:22 +0100)
Issue-ID: AAI-4099
Change-Id: I8bf22cd7a6d747b7e8cdcba12efcf547f6ccb390
Signed-off-by: Fiete Ostkamp <Fiete.Ostkamp@telekom.de>
65 files changed:
aai-resources/pom.xml
aai-resources/src/main/docker/Dockerfile
aai-resources/src/main/java/org/onap/aai/ResourcesApp.java
aai-resources/src/main/java/org/onap/aai/config/ErrorHandler.java
aai-resources/src/main/java/org/onap/aai/config/PropertyPasswordConfiguration.java
aai-resources/src/main/java/org/onap/aai/interceptors/post/InvalidResponseStatus.java
aai-resources/src/main/java/org/onap/aai/interceptors/post/ResponseHeaderManipulation.java
aai-resources/src/main/java/org/onap/aai/interceptors/post/ResponseTransactionLogging.java
aai-resources/src/main/java/org/onap/aai/interceptors/pre/HeaderValidation.java
aai-resources/src/main/java/org/onap/aai/interceptors/pre/HttpHeaderInterceptor.java
aai-resources/src/main/java/org/onap/aai/interceptors/pre/NamespaceInterceptor.java
aai-resources/src/main/java/org/onap/aai/interceptors/pre/OneWaySslAuthorization.java
aai-resources/src/main/java/org/onap/aai/interceptors/pre/RequestHeaderManipulation.java
aai-resources/src/main/java/org/onap/aai/interceptors/pre/RequestModification.java
aai-resources/src/main/java/org/onap/aai/interceptors/pre/RequestTransactionLogging.java
aai-resources/src/main/java/org/onap/aai/interceptors/pre/RetiredInterceptor.java
aai-resources/src/main/java/org/onap/aai/interceptors/pre/VersionInterceptor.java
aai-resources/src/main/java/org/onap/aai/interceptors/pre/VersionLatestInterceptor.java
aai-resources/src/main/java/org/onap/aai/rest/BulkAddConsumer.java
aai-resources/src/main/java/org/onap/aai/rest/BulkConsumer.java
aai-resources/src/main/java/org/onap/aai/rest/BulkProcessConsumer.java
aai-resources/src/main/java/org/onap/aai/rest/ExampleConsumer.java
aai-resources/src/main/java/org/onap/aai/rest/ExceptionHandler.java
aai-resources/src/main/java/org/onap/aai/rest/ResourcesController.java
aai-resources/src/main/java/org/onap/aai/rest/URLFromVertexIdConsumer.java
aai-resources/src/main/java/org/onap/aai/rest/VertexIdConsumer.java
aai-resources/src/main/java/org/onap/aai/rest/bulk/BulkOperation.java
aai-resources/src/main/java/org/onap/aai/rest/bulk/BulkOperationResponse.java
aai-resources/src/main/java/org/onap/aai/rest/bulk/BulkSingleTransactionConsumer.java
aai-resources/src/main/java/org/onap/aai/rest/bulk/BulkUriInfo.java
aai-resources/src/main/java/org/onap/aai/rest/security/WebSecurityConfig.ja_va [moved from aai-resources/src/main/java/org/onap/aai/rest/security/WebSecurityConfig.java with 90% similarity]
aai-resources/src/main/java/org/onap/aai/rest/util/EchoResponse.java
aai-resources/src/main/java/org/onap/aai/rest/util/ValidateEncoding.java
aai-resources/src/main/java/org/onap/aai/service/AuthorizationService.java
aai-resources/src/main/java/org/onap/aai/service/ResourcesService.java
aai-resources/src/main/java/org/onap/aai/service/RetiredService.java
aai-resources/src/main/java/org/onap/aai/tasks/AaiGraphChecker.java
aai-resources/src/main/java/org/onap/aai/web/JerseyConfiguration.java
aai-resources/src/main/resources/application.properties
aai-resources/src/test/java/org/onap/aai/AAISetup.java
aai-resources/src/test/java/org/onap/aai/HttpTestUtil.java
aai-resources/src/test/java/org/onap/aai/PayloadUtil.java
aai-resources/src/test/java/org/onap/aai/ResourcesTestConfiguration.java
aai-resources/src/test/java/org/onap/aai/config/WebClientConfiguration.java
aai-resources/src/test/java/org/onap/aai/it/multitenancy/KeycloakTestConfiguration.java [deleted file]
aai-resources/src/test/java/org/onap/aai/it/multitenancy/KeycloakTestProperties.java [deleted file]
aai-resources/src/test/java/org/onap/aai/it/multitenancy/MultiTenancyIT.java [deleted file]
aai-resources/src/test/java/org/onap/aai/it/multitenancy/RoleHandler.java [deleted file]
aai-resources/src/test/java/org/onap/aai/it/performance/K6ReadTest.java
aai-resources/src/test/java/org/onap/aai/it/performance/K6WriteTest.java
aai-resources/src/test/java/org/onap/aai/rest/AbstractSpringRestTest.java
aai-resources/src/test/java/org/onap/aai/rest/BulkAddConsumerTest.java
aai-resources/src/test/java/org/onap/aai/rest/BulkProcessConsumerTest.java
aai-resources/src/test/java/org/onap/aai/rest/BulkProcessorTestAbstraction.java
aai-resources/src/test/java/org/onap/aai/rest/ConfigurationTest.java
aai-resources/src/test/java/org/onap/aai/rest/ExampleConsumerTest.java
aai-resources/src/test/java/org/onap/aai/rest/ExceptionHandlerTest.java
aai-resources/src/test/java/org/onap/aai/rest/URLFromVertexIdConsumerTest.java
aai-resources/src/test/java/org/onap/aai/rest/VertexIdConsumerTest.java
aai-resources/src/test/java/org/onap/aai/rest/bulk/BulkSingleTransactionConsumerTest.java
aai-resources/src/test/java/org/onap/aai/rest/resources/ResourcesControllerTest.java
aai-resources/src/test/java/org/onap/aai/rest/util/EchoResponseTest.java
aai-resources/src/test/java/org/onap/aai/rest/util/ValidateEncodingTest.java
aai-resources/src/test/resources/application-test.properties
pom.xml

index e3dd9ce..37cbf0b 100644 (file)
     <parent>
         <groupId>org.onap.aai.resources</groupId>
         <artifactId>resources</artifactId>
-        <version>1.15.4-SNAPSHOT</version>
+        <version>1.16.0-SNAPSHOT</version>
     </parent>
     <properties>
-        <java.version>11</java.version>
+        <jakarta-servlet.version>5.0.0</jakarta-servlet.version>
+        <java.version>17</java.version>
         <start-class>org.onap.aai.ResourcesApp</start-class>
 
         <!-- Default docker registry that maven fabric plugin will try to pull from -->
         <gremlin.version>3.5.8</gremlin.version> -->
 
         <javax.servlet.version>4.0.1</javax.servlet.version>
-        <keycloak.version>11.0.2</keycloak.version>
-        <testcontainers.version>1.6.1</testcontainers.version>
+        <testcontainers.version>1.20.4</testcontainers.version>
         <mockito.core.version>4.4.0</mockito.core.version>
-        <eclipse.persistence.version>2.7.7</eclipse.persistence.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-->
         <skipITs>true</skipITs>
 
         <swagger.version>1.6.8</swagger.version>
-        <spring-cloud.version>2021.0.9</spring-cloud.version>
+        <spring-cloud.version>2022.0.5</spring-cloud.version>
         <!-- fix the driver version to match the one defined in janusgraph-cql
             spring-boot (2.4) is otherwise downgrading it to 4.9.0 -->
         <!-- see https://github.com/spring-projects/spring-boot/blob/d336a96b7f204a398b8237560c5dfa7095c53460/spring-boot-project/spring-boot-dependencies/build.gradle#L163 -->
             <artifactId>spring-boot-starter-jetty</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-sleuth</artifactId>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-tracing-bridge-brave</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-sleuth-zipkin</artifactId>
+            <groupId>io.zipkin.reporter2</groupId>
+            <artifactId>zipkin-reporter-brave</artifactId>
         </dependency>
         <dependency>
             <groupId>io.micrometer</groupId>
             <version>1.8.13</version>
         </dependency>
         <dependency>
-            <groupId>javax.ws.rs</groupId>
-            <artifactId>javax.ws.rs-api</artifactId>
-            <version>2.1</version>
+            <groupId>jakarta.ws.rs</groupId>
+            <artifactId>jakarta.ws.rs-api</artifactId>
         </dependency>
         <dependency>
             <groupId>jakarta.xml.bind</groupId>
             <artifactId>jopt-simple</artifactId>
         </dependency>
         <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-core</artifactId>
-            <version>${swagger.version}</version>
+            <groupId>io.swagger.core.v3</groupId>
+            <artifactId>swagger-core-jakarta</artifactId>
+            <version>2.2.27</version>
             <exclusions>
                 <exclusion>
                     <groupId>javax.ws.rs</groupId>
                 </exclusion>
             </exclusions>
         </dependency>
-        <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-annotations</artifactId>
-            <version>${swagger.version}</version>
-        </dependency>
         <dependency>
             <groupId>io.swagger</groupId>
             <artifactId>swagger-jersey2-jaxrs</artifactId>
         <dependency>
           <groupId>org.hamcrest</groupId>
           <artifactId>hamcrest</artifactId>
-          <version>2.2</version>
           <exclusions>
             <exclusion>
               <groupId>junit</groupId>
             <artifactId>guava</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.fasterxml.jackson.jaxrs</groupId>
-            <artifactId>jackson-jaxrs-json-provider</artifactId>
+            <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
+            <artifactId>jackson-jakarta-rs-json-provider</artifactId>
         </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
                     <groupId>org.springframework</groupId>
                     <artifactId>spring-web</artifactId>
                 </exclusion>
+        <exclusion>
+          <groupId>junit</groupId>
+          <artifactId>junit</artifactId>
+        </exclusion>
             </exclusions>
         </dependency>
         <dependency>
             with jersey 2 which we are using -->
         <!-- Use this to make http requests instead of jersey 1.0 client -->
         <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpclient</artifactId>
+            <groupId>org.apache.httpcomponents.client5</groupId>
+            <artifactId>httpclient5</artifactId>
         </dependency>
         <dependency>
             <groupId>org.assertj</groupId>
         <dependency>
             <groupId>org.janusgraph</groupId>
             <artifactId>janusgraph-inmemory</artifactId>
-            <version>${janusgraph.version}</version>
         </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-security</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.keycloak</groupId>
-            <artifactId>keycloak-spring-boot-starter</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.github.dasniko</groupId>
-            <artifactId>testcontainers-keycloak</artifactId>
-            <version>${testcontainers.version}</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
           <groupId>org.junit.jupiter</groupId>
           <artifactId>junit-jupiter</artifactId>
           <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.keycloak</groupId>
-            <artifactId>keycloak-admin-client</artifactId>
-            <version>${keycloak.version}</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.testcontainers</groupId>
             <artifactId>testcontainers</artifactId>
-            <version>1.19.8</version>
+            <version>${testcontainers.version}</version>
             <scope>test</scope>
-            <!-- <exclusions>
+            <exclusions>
                 <exclusion>
                     <groupId>junit</groupId>
                     <artifactId>junit</artifactId>
                 </exclusion>
-            </exclusions> -->
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.testcontainers</groupId>
             <artifactId>junit-jupiter</artifactId>
-            <version>1.19.8</version>
+            <version>${testcontainers.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.testcontainers</groupId>
             <artifactId>k6</artifactId>
-            <version>1.19.8</version>
+            <version>${testcontainers.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <!-- testcontainers k6 needs junit -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
     </dependencies>
     <dependencyManagement>
         <dependencies>
-            <dependency>
-                <groupId>org.keycloak.bom</groupId>
-                <artifactId>keycloak-adapter-bom</artifactId>
-                <version>${keycloak.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
             <dependency>
                 <groupId>org.springframework.cloud</groupId>
                 <artifactId>spring-cloud-dependencies</artifactId>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
-            <dependency>
-                <groupId>com.google.guava</groupId>
-                <artifactId>guava</artifactId>
-                <version>33.3.1-jre</version>
-            </dependency>
             <!-- cassandra driver -->
             <dependency>
                 <groupId>com.datastax.oss</groupId>
                 <artifactId>java-driver-query-builder</artifactId>
                 <version>${cassandra-driver.version}</version>
             </dependency>
-            <dependency>
-                <groupId>com.datastax.oss</groupId>
-                <artifactId>native-protocol</artifactId>
-                <version>${datastax.native-protocol.version}</version>
-            </dependency>
             <!-- /cassandra driver -->
             <dependency>
                 <groupId>org.apache.commons</groupId>
                 <plugin>
                     <groupId>com.mycila</groupId>
                     <artifactId>license-maven-plugin</artifactId>
-                    <version>3.0</version>
                     <configuration>
                         <header>LICENSE.TXT</header>
                         <includes>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
-                <version>3.1.2</version>
                 <configuration>
                     <classesDirectory>${project.build.outputDirectory}</classesDirectory>
                 </configuration>
index b15abf9..bb8e565 100644 (file)
@@ -1,4 +1,4 @@
-FROM eclipse-temurin:11-jre-alpine
+FROM eclipse-temurin:17-jre-alpine
 USER nobody
 
 ENV SERVER_PORT=8447
index 51f5609..3d8d0e5 100644 (file)
@@ -20,8 +20,8 @@
 
 package org.onap.aai;
 
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.PreDestroy;
 
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.onap.aai.aailog.logs.AaiDebugLog;
index 98fa14b..68bb187 100644 (file)
@@ -24,11 +24,11 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.ws.rs.core.MediaType;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.ws.rs.core.MediaType;
 
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.logging.ErrorLogHelper;
index f205804..c10e60f 100644 (file)
@@ -32,6 +32,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
 import org.springframework.context.ApplicationContextInitializer;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.core.env.ConfigurableEnvironment;
@@ -76,6 +77,7 @@ public class PropertyPasswordConfiguration implements ApplicationContextInitiali
                     log.info("Not using AAF Certman password file");
                 }
             } catch (IOException e) {
+                Logger smth = log;
                 log.warn("Not using AAF Certman password file, e=" + e.getMessage());
             } finally {
                 if (passwordStream != null) {
index 1d20744..6a398b7 100644 (file)
@@ -24,11 +24,11 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.annotation.Priority;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerResponseContext;
-import javax.ws.rs.container.ContainerResponseFilter;
-import javax.ws.rs.core.MediaType;
+import jakarta.annotation.Priority;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerResponseContext;
+import jakarta.ws.rs.container.ContainerResponseFilter;
+import jakarta.ws.rs.core.MediaType;
 
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.interceptors.AAIContainerFilter;
index 93e213e..fd9e928 100644 (file)
@@ -22,11 +22,11 @@ package org.onap.aai.interceptors.post;
 
 import java.io.IOException;
 
-import javax.annotation.Priority;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerResponseContext;
-import javax.ws.rs.container.ContainerResponseFilter;
-import javax.ws.rs.core.MediaType;
+import jakarta.annotation.Priority;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerResponseContext;
+import jakarta.ws.rs.container.ContainerResponseFilter;
+import jakarta.ws.rs.core.MediaType;
 
 import org.onap.aai.interceptors.AAIContainerFilter;
 import org.onap.aai.interceptors.AAIHeaderProperties;
index cb193af..64c1580 100644 (file)
@@ -26,12 +26,12 @@ import java.io.IOException;
 import java.util.Objects;
 import java.util.Optional;
 
-import javax.annotation.Priority;
-import javax.servlet.http.HttpServletResponse;
-import javax.ws.rs.HttpMethod;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerResponseContext;
-import javax.ws.rs.container.ContainerResponseFilter;
+import jakarta.annotation.Priority;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.ws.rs.HttpMethod;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerResponseContext;
+import jakarta.ws.rs.container.ContainerResponseFilter;
 
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.interceptors.AAIContainerFilter;
index 294cb0a..80e6e01 100644 (file)
@@ -25,12 +25,12 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 
-import javax.annotation.Priority;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.container.PreMatching;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
+import jakarta.annotation.Priority;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerRequestFilter;
+import jakarta.ws.rs.container.PreMatching;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
 
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.interceptors.AAIContainerFilter;
index 17cdeff..cc13fc0 100644 (file)
@@ -22,11 +22,11 @@ package org.onap.aai.interceptors.pre;
 
 import java.io.IOException;
 
-import javax.annotation.Priority;
-import javax.ws.rs.HttpMethod;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.container.PreMatching;
+import jakarta.annotation.Priority;
+import jakarta.ws.rs.HttpMethod;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerRequestFilter;
+import jakarta.ws.rs.container.PreMatching;
 
 import org.onap.aai.interceptors.AAIContainerFilter;
 import org.onap.aai.interceptors.AAIHeaderProperties;
index c97e475..f4d2dd3 100644 (file)
@@ -26,11 +26,11 @@ import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.StringReader;
 
-import javax.annotation.Priority;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.ext.ReaderInterceptor;
-import javax.ws.rs.ext.ReaderInterceptorContext;
+import jakarta.annotation.Priority;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.ext.ReaderInterceptor;
+import jakarta.ws.rs.ext.ReaderInterceptorContext;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
index b532105..e25e7b8 100644 (file)
@@ -25,12 +25,12 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 
-import javax.annotation.Priority;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.container.PreMatching;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
+import jakarta.annotation.Priority;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerRequestFilter;
+import jakarta.ws.rs.container.PreMatching;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
 
 import org.onap.aai.ResourcesProfiles;
 import org.onap.aai.exceptions.AAIException;
index 3fb6c81..18274f3 100644 (file)
@@ -23,11 +23,11 @@ package org.onap.aai.interceptors.pre;
 import java.util.Collections;
 import java.util.regex.Matcher;
 
-import javax.annotation.Priority;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.container.PreMatching;
-import javax.ws.rs.core.MultivaluedMap;
+import jakarta.annotation.Priority;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerRequestFilter;
+import jakarta.ws.rs.container.PreMatching;
+import jakarta.ws.rs.core.MultivaluedMap;
 
 import org.onap.aai.interceptors.AAIContainerFilter;
 import org.onap.aai.interceptors.AAIHeaderProperties;
index d40fdbb..100c9ef 100644 (file)
@@ -27,12 +27,12 @@ import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import javax.annotation.Priority;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.container.PreMatching;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.UriBuilder;
+import jakarta.annotation.Priority;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerRequestFilter;
+import jakarta.ws.rs.container.PreMatching;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.UriBuilder;
 
 import org.onap.aai.interceptors.AAIContainerFilter;
 
index 2d0dcdc..965c168 100644 (file)
@@ -30,14 +30,14 @@ import java.security.SecureRandom;
 import java.util.Random;
 import java.util.UUID;
 
-import javax.annotation.Priority;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.container.PreMatching;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.UriInfo;
+import jakarta.annotation.Priority;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerRequestFilter;
+import jakarta.ws.rs.container.PreMatching;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.glassfish.jersey.message.internal.ReaderWriter;
 import org.glassfish.jersey.server.ContainerException;
index 9ca1283..3765886 100644 (file)
@@ -26,11 +26,11 @@ import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import javax.annotation.Priority;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.container.PreMatching;
-import javax.ws.rs.core.Response;
+import jakarta.annotation.Priority;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerRequestFilter;
+import jakarta.ws.rs.container.PreMatching;
+import jakarta.ws.rs.core.Response;
 
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.interceptors.AAIContainerFilter;
index 7e1b64e..fc74b2a 100644 (file)
@@ -26,11 +26,11 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
-import javax.annotation.Priority;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.container.PreMatching;
-import javax.ws.rs.core.Response;
+import jakarta.annotation.Priority;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerRequestFilter;
+import jakarta.ws.rs.container.PreMatching;
+import jakarta.ws.rs.core.Response;
 
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.interceptors.AAIContainerFilter;
index 2ad9ace..13d7a7b 100644 (file)
@@ -22,10 +22,10 @@ package org.onap.aai.interceptors.pre;
 
 import java.net.URI;
 
-import javax.annotation.Priority;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.container.PreMatching;
+import jakarta.annotation.Priority;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerRequestFilter;
+import jakarta.ws.rs.container.PreMatching;
 
 import org.onap.aai.interceptors.AAIContainerFilter;
 import org.onap.aai.setup.SchemaVersions;
index 3287dd1..e257f15 100644 (file)
@@ -22,7 +22,7 @@ package org.onap.aai.rest;
 
 import io.micrometer.core.annotation.Timed;
 
-import javax.ws.rs.Path;
+import jakarta.ws.rs.Path;
 
 import org.onap.aai.restcore.HttpMethod;
 
index c7f0911..3f99e7e 100644 (file)
@@ -38,18 +38,18 @@ import java.util.Map.Entry;
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.PUT;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.core.UriBuilder;
-import javax.ws.rs.core.UriInfo;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.PUT;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.Context;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response.Status;
+import jakarta.ws.rs.core.UriBuilder;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.javatuples.Pair;
 import org.onap.aai.config.SpringContextAware;
index b281681..b2ded37 100644 (file)
@@ -22,7 +22,7 @@ package org.onap.aai.rest;
 
 import io.micrometer.core.annotation.Timed;
 
-import javax.ws.rs.Path;
+import jakarta.ws.rs.Path;
 
 import org.onap.aai.restcore.HttpMethod;
 
index b0d61af..97ccdb2 100644 (file)
@@ -22,17 +22,17 @@ package org.onap.aai.rest;
 
 import io.micrometer.core.annotation.Timed;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.core.UriInfo;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.Context;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response.Status;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.onap.aai.config.SpringContextAware;
 import org.onap.aai.exceptions.AAIException;
index 7af598b..f975ebb 100644 (file)
@@ -26,14 +26,14 @@ import com.sun.istack.SAXParseException2;
 
 import java.util.ArrayList;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.ext.ExceptionMapper;
-import javax.ws.rs.ext.Provider;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Context;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.ext.ExceptionMapper;
+import jakarta.ws.rs.ext.Provider;
 
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.logging.ErrorLogHelper;
index 12839d4..e0a0584 100644 (file)
@@ -28,14 +28,12 @@ import java.security.Principal;
 import java.util.*;
 import java.util.stream.Collectors;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.*;
-import javax.ws.rs.core.*;
-import javax.ws.rs.core.Response.Status;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.*;
+import jakarta.ws.rs.core.*;
+import jakarta.ws.rs.core.Response.Status;
 
 import org.apache.commons.lang3.ObjectUtils;
-import org.keycloak.adapters.springsecurity.account.SimpleKeycloakAccount;
-import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
 import org.onap.aai.concurrent.AaiCallable;
 import org.onap.aai.introspection.Introspector;
 import org.onap.aai.introspection.sideeffect.OwnerCheck;
@@ -65,9 +63,8 @@ public class ResourcesController extends RESTAPI {
             @Context HttpHeaders headers,
             @Context UriInfo info,
             @Context HttpServletRequest req) {
-        Set<String> roles = getRoles(req.getUserPrincipal(), req.getMethod());
         MediaType mediaType = headers.getMediaType();
-        return resourcesService.handleWrites(mediaType, HttpMethod.PUT, content, versionParam, uri, headers, info, roles);
+        return resourcesService.handleWrites(mediaType, HttpMethod.PUT, content, versionParam, uri, headers, info);
     }
 
     @PUT
@@ -96,9 +93,8 @@ public class ResourcesController extends RESTAPI {
             @Context HttpHeaders headers,
             @Context UriInfo info,
             @Context HttpServletRequest req) {
-        Set<String> roles = getRoles(req.getUserPrincipal(), req.getMethod());
         MediaType mediaType = MediaType.APPLICATION_JSON_TYPE;
-        return resourcesService.handleWrites(mediaType, HttpMethod.MERGE_PATCH, content, versionParam, uri, headers, info, roles);
+        return resourcesService.handleWrites(mediaType, HttpMethod.MERGE_PATCH, content, versionParam, uri, headers, info);
 
     }
 
@@ -134,7 +130,6 @@ public class ResourcesController extends RESTAPI {
             @Context HttpHeaders headers,
             @Context UriInfo info,
             @Context HttpServletRequest req) {
-        Set<String> roles = getRoles(req.getUserPrincipal(), req.getMethod());
         Pageable pageable = includeTotalCount == false
             ? new Pageable(resultIndex -1, resultSize)
             : new Pageable(resultIndex -1, resultSize).includeTotalCount();
@@ -144,7 +139,7 @@ public class ResourcesController extends RESTAPI {
                     @Override
                     public Response process() {
                         return resourcesService.getLegacy(versionParam, uri, depthParam, cleanUp, headers, info, req,
-                                new HashSet<String>(), pageable, roles);
+                                new HashSet<String>(), pageable);
                     }
                 });
     }
@@ -159,8 +154,7 @@ public class ResourcesController extends RESTAPI {
             @Context UriInfo info,
             @QueryParam("resource-version") String resourceVersion,
             @Context HttpServletRequest req) {
-        Set<String> roles = getRoles(req.getUserPrincipal(), req.getMethod());
-        return resourcesService.delete(versionParam, uri, headers, info, req, roles);
+        return resourcesService.delete(versionParam, uri, headers, info, req);
     }
 
     /**
@@ -210,29 +204,4 @@ public class ResourcesController extends RESTAPI {
     protected boolean isEmptyObject(Introspector obj) {
         return "{}".equals(obj.marshal(false));
     }
-
-    private Set<String> getRoles(Principal userPrincipal, String method) {
-        KeycloakAuthenticationToken token = (KeycloakAuthenticationToken) userPrincipal;
-        if (ObjectUtils.isEmpty(token)) {
-            return Collections.emptySet();
-        }
-        SimpleKeycloakAccount account = (SimpleKeycloakAccount) token.getDetails();
-        if (ObjectUtils.isEmpty(account)) {
-            return Collections.emptySet();
-        }
-        // When the request is not a GET, we need to exclude ReadOnly access roles
-        if (isNotGetRequest(method)) {
-            return getExcludedReadOnlyAccessRoles(account);
-        }
-        return account.getRoles();
-    }
-
-    private Set<String> getExcludedReadOnlyAccessRoles(SimpleKeycloakAccount account) {
-        return account.getRoles().stream().filter(role -> !role.endsWith(OwnerCheck.READ_ONLY_SUFFIX))
-                .collect(Collectors.toSet());
-    }
-
-    private boolean isNotGetRequest(String method) {
-        return !Action.GET.name().equalsIgnoreCase(method);
-    }
 }
index d64e862..41984a2 100644 (file)
@@ -25,13 +25,13 @@ import io.micrometer.core.annotation.Timed;
 import java.net.URI;
 import java.util.Iterator;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.*;
-import javax.ws.rs.core.Response.Status;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.*;
+import jakarta.ws.rs.core.Response.Status;
 
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.onap.aai.config.SpringContextAware;
index f0a3c3e..7c9c1cd 100644 (file)
@@ -27,9 +27,9 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.*;
-import javax.ws.rs.core.*;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.*;
+import jakarta.ws.rs.core.*;
 
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.javatuples.Pair;
index de31b5a..7dc681b 100644 (file)
@@ -24,7 +24,7 @@ import java.net.URI;
 import java.util.List;
 import java.util.Map.Entry;
 
-import javax.ws.rs.core.UriInfo;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.onap.aai.introspection.Introspector;
 import org.onap.aai.parsers.query.QueryParser;
index b621d50..7e35403 100644 (file)
@@ -24,7 +24,7 @@ import java.net.URI;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response;
 
 import org.javatuples.Pair;
 import org.onap.aai.restcore.HttpMethod;
index 900da96..e5f9943 100644 (file)
@@ -36,17 +36,17 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriBuilder;
-import javax.ws.rs.core.UriInfo;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.Context;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.UriBuilder;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.javatuples.Pair;
 import org.onap.aai.config.SpringContextAware;
@@ -93,8 +93,8 @@ public class BulkSingleTransactionConsumer extends RESTAPI {
     }
 
     @POST
-    @Consumes(value = javax.ws.rs.core.MediaType.APPLICATION_JSON)
-    @Produces(value = javax.ws.rs.core.MediaType.APPLICATION_JSON)
+    @Consumes(value = jakarta.ws.rs.core.MediaType.APPLICATION_JSON)
+    @Produces(value = jakarta.ws.rs.core.MediaType.APPLICATION_JSON)
     public Response process(String content, @PathParam(value = "version") String versionParam,
             @Context HttpHeaders headers, @Context UriInfo info, @Context HttpServletRequest req) {
 
@@ -155,12 +155,12 @@ public class BulkSingleTransactionConsumer extends RESTAPI {
                         .entity(new GsonBuilder().serializeNulls().create().toJson(transactionResponse)).build();
             } else {
                 response = getErrorResponseForFirstFailure(transaction, results.getValue1(), info,
-                        javax.ws.rs.HttpMethod.POST, headers);
+                        jakarta.ws.rs.HttpMethod.POST, headers);
 
             }
 
         } catch (AAIException e) {
-            response = consumerExceptionResponseGenerator(headers, info, javax.ws.rs.HttpMethod.POST, e);
+            response = consumerExceptionResponseGenerator(headers, info, jakarta.ws.rs.HttpMethod.POST, e);
             success = false;
         } finally {
             if (dbEngine != null) {
index c1e33eb..4e51000 100644 (file)
@@ -23,7 +23,7 @@ package org.onap.aai.rest.bulk;
 import java.net.URI;
 import java.util.List;
 
-import javax.ws.rs.core.*;
+import jakarta.ws.rs.core.*;
 
 public class BulkUriInfo implements UriInfo {
 
@@ -45,7 +45,10 @@ import org.springframework.security.web.session.HttpSessionEventPublisher;
 @Profile("keycloak")
 @KeycloakConfiguration
 @Import({KeycloakSpringBootConfigResolver.class})
-public class WebSecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
+// public class WebSecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
+public class WebSecurityConfig {
+
+    AuthenticationManagerBuilder sm;
 
     @Autowired
     public void configureGlobal(AuthenticationManagerBuilder auth) {
@@ -65,15 +68,21 @@ public class WebSecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
         return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl());
     }
 
-    @Override
+    // @Override
     protected void configure(HttpSecurity http) throws Exception {
         super.configure(http);
         http.authorizeRequests().antMatchers("/**").permitAll().and().csrf().disable();
     }
 
-    @Override
+    // @Override
     public void configure(WebSecurity web) {
         web.ignoring().regexMatchers("^.*/util/echo$");
     }
 
+    // @Override
+    public void init(WebSecurity builder) throws Exception {
+        // TODO Auto-generated method stub
+        throw new UnsupportedOperationException("Unimplemented method 'init'");
+    }
+
 }
index 0e44a63..03be60b 100644 (file)
@@ -22,16 +22,16 @@ package org.onap.aai.rest.util;
 
 import java.util.ArrayList;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.core.Context;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response.Status;
 
 import org.apache.commons.lang3.BooleanUtils;
 import org.onap.aai.exceptions.AAIException;
index 520bff0..620786a 100644 (file)
@@ -23,8 +23,8 @@ package org.onap.aai.rest.util;
 import java.io.UnsupportedEncodingException;
 import java.net.URI;
 
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.UriInfo;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.springframework.web.util.UriUtils;
 
index 0c219a7..54fdcf7 100644 (file)
@@ -29,7 +29,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.stream.Stream;
 
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
 
 import org.eclipse.jetty.util.security.Password;
 import org.onap.aai.ResourcesProfiles;
index d721ff2..4f909c3 100644 (file)
@@ -29,14 +29,14 @@ import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriBuilder;
-import javax.ws.rs.core.UriInfo;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedHashMap;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.UriBuilder;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.javatuples.Pair;
 import org.onap.aai.config.SpringContextAware;
@@ -73,7 +73,8 @@ public class ResourcesService {
    */
   public Response getLegacy(String versionParam, String uri, String depthParam, String cleanUp,
       HttpHeaders headers, UriInfo info, HttpServletRequest req, Set<String> removeQueryParams,
-      Pageable pageable, Set<String> roles) {
+      Pageable pageable) {
+    Set<String> roles = Collections.emptySet();
     String sourceOfTruth = headers.getRequestHeaders().getFirst("X-FromAppId");
     String transId = headers.getRequestHeaders().getFirst("X-TransactionId");
     Response response;
@@ -197,8 +198,8 @@ public class ResourcesService {
   }
 
   public Response handleWrites(MediaType mediaType, HttpMethod method, String content, String versionParam,
-      String uri, HttpHeaders headers, UriInfo info, Set<String> roles) {
-
+      String uri, HttpHeaders headers, UriInfo info) {
+    Set<String> roles = Collections.emptySet();
     Response response;
     TransactionalGraphEngine dbEngine = null;
     Loader loader;
@@ -395,8 +396,8 @@ public class ResourcesService {
   }
 
   public Response delete(String versionParam, String uri, HttpHeaders headers, UriInfo info,
-      HttpServletRequest req, Set<String> roles) {
-
+      HttpServletRequest req) {
+    Set<String> roles = Collections.emptySet();
     String outputMediaType = getMediaType(headers.getAcceptableMediaTypes());
     String sourceOfTruth = headers.getRequestHeaders().getFirst("X-FromAppId");
     String transId = headers.getRequestHeaders().getFirst("X-TransactionId");
index 94b1be1..d39abb0 100644 (file)
@@ -25,7 +25,7 @@ import java.util.List;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
 
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.PropertySource;
index 3c07a52..7aabddb 100644 (file)
@@ -24,8 +24,8 @@ import java.util.Iterator;
 import java.util.Timer;
 import java.util.TimerTask;
 
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.PreDestroy;
 
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.Validate;
index 29c122a..a9b8dd2 100644 (file)
@@ -31,10 +31,10 @@ import java.util.Comparator;
 import java.util.Set;
 import java.util.logging.Logger;
 
-import javax.annotation.Priority;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.container.ContainerResponseFilter;
-import javax.ws.rs.ext.ReaderInterceptor;
+import jakarta.annotation.Priority;
+import jakarta.ws.rs.container.ContainerRequestFilter;
+import jakarta.ws.rs.container.ContainerResponseFilter;
+import jakarta.ws.rs.ext.ReaderInterceptor;
 
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
index f0ef368..19b3e05 100644 (file)
@@ -3,18 +3,18 @@ info.build.artifact=aai-resources
 info.build.name=resources
 info.build.description=Resources Microservice
 info.build.version=1.1.0
+# Logging pattern containing traceId and spanId; no longer provided through Sleuth by default
+logging.pattern.level="%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]"
 
 spring.application.name=aai-resources
 spring.jersey.type=filter
 spring.main.allow-bean-definition-overriding=true
 
-spring.sleuth.enabled=false
+management.tracing.enabled=false
 spring.zipkin.baseUrl=http://jaeger-collector.istio-system:9411
 spring.sleuth.messaging.jms.enabled = false
-spring.sleuth.trace-id128=true
-spring.sleuth.sampler.probability=1.0
-spring.sleuth.propagation.type=w3c, b3
-spring.sleuth.supports-join=false
+management.tracing.sampling.probability=1.0
+management.tracing.propagation.type=w3c, b3
 
 server.servlet.context-path=/
 spring.autoconfigure.exclude=\
@@ -115,7 +115,8 @@ management.server.port=8448
 management.endpoints.enabled-by-default=true
 #To Enable Actuator Endpoint, you can override this in OOM Charts
 management.endpoints.web.exposure.include=info, health, prometheus
-management.metrics.web.server.request.autotime.enabled=false
+# This property is deprecated: Should be applied at the ObservationRegistry level.
+# management.metrics.web.server.request.autotime.enabled=false
 management.metrics.distribution.percentiles-histogram[http.server.requests]=true
 management.metrics.distribution.slo.http.server.requests=20ms, 30ms, 40ms, 50ms, 60ms, 70ms, 80ms, 90ms, 100ms, 500ms, 1000ms, 5000ms, 7000ms
 management.metrics.tags.group_id=aai
index d672bc7..2575480 100644 (file)
@@ -89,7 +89,7 @@ public abstract class AAISetup {
 
         InputStream inputStream = getClass().getClassLoader().getResourceAsStream(filename);
 
-        String message = String.format("Unable to find the %s in src/test/resources", filename);
+        String message = "Unable to find the %s in src/test/resources".formatted(filename);
         assertNotNull(inputStream, message);
 
         String resource = IOUtils.toString(inputStream, Charset.defaultCharset());
index 676da71..fa5c595 100644 (file)
@@ -30,13 +30,13 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
 
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriBuilder;
-import javax.ws.rs.core.UriInfo;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedHashMap;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.UriBuilder;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.javatuples.Pair;
 import org.mockito.Mockito;
index 9dd3375..64c32cd 100644 (file)
@@ -42,7 +42,7 @@ public class PayloadUtil {
         InputStream inputStream =
                 PayloadUtil.class.getClassLoader().getResourceAsStream("payloads/resource/" + fileName);
 
-        String message = String.format("Unable to find the %s in src/test/resources", fileName);
+        String message = "Unable to find the %s in src/test/resources".formatted(fileName);
         assertNotNull(inputStream, message);
 
         String resource = IOUtils.toString(inputStream, Charset.defaultCharset());
@@ -56,7 +56,7 @@ public class PayloadUtil {
         InputStream inputStream =
                 PayloadUtil.class.getClassLoader().getResourceAsStream("payloads/templates/" + fileName);
 
-        String message = String.format("Unable to find the %s in src/test/resources", fileName);
+        String message = "Unable to find the %s in src/test/resources".formatted(fileName);
         assertNotNull(inputStream, message);
 
         String resource;
@@ -93,7 +93,7 @@ public class PayloadUtil {
 
         InputStream inputStream = PayloadUtil.class.getClassLoader().getResourceAsStream("payloads/" + fileName);
 
-        String message = String.format("Unable to find the %s in src/test/resources/payloads/", fileName);
+        String message = "Unable to find the %s in src/test/resources/payloads/".formatted(fileName);
         assertNotNull(inputStream, message);
 
         String resource = IOUtils.toString(inputStream, Charset.defaultCharset());
index 93b1519..24bba98 100644 (file)
@@ -28,9 +28,12 @@ import java.security.KeyStore;
 
 import javax.net.ssl.SSLContext;
 
-import org.apache.http.client.HttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.ssl.SSLContextBuilder;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
+import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
+import org.apache.hc.client5.http.ssl.DefaultClientTlsStrategy;
+import org.apache.hc.core5.ssl.SSLContextBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -76,10 +79,17 @@ public class ResourcesTestConfiguration {
             }
 
             SSLContext sslContext =
-                    sslContextBuilder.loadTrustMaterial(ResourceUtils.getFile(trustStore), trustStorePassword).build();
+                sslContextBuilder.loadTrustMaterial(ResourceUtils.getFile(trustStore), trustStorePassword).build();
 
-            HttpClient client = HttpClients.custom().setSSLContext(sslContext)
-                    .setSSLHostnameVerifier((s, sslSession) -> true).build();
+            PoolingHttpClientConnectionManager connectionManager =
+                PoolingHttpClientConnectionManagerBuilder.create()
+                        .setTlsSocketStrategy(new DefaultClientTlsStrategy(sslContext, (s, sslSession) -> true))
+                        .build();
+
+            HttpClient client =
+                    HttpClients.custom()
+                            .setConnectionManager(connectionManager)
+                            .build();
 
             restTemplate = builder.requestFactory(() -> new HttpComponentsClientHttpRequestFactory(client)).build();
         } else {
@@ -97,7 +107,7 @@ public class ResourcesTestConfiguration {
                         return true;
                     }
 
-                    if (clientHttpResponse.getRawStatusCode() % 100 == 5) {
+                    if (clientHttpResponse.getStatusCode().value() % 100 == 5) {
                         logger.debug("Call returned a error " + clientHttpResponse.getStatusText());
                         return true;
                     }
index e412ded..f455e68 100644 (file)
@@ -7,7 +7,7 @@ import org.onap.aai.setup.SchemaVersions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.boot.test.web.server.LocalServerPort;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Primary;
diff --git a/aai-resources/src/test/java/org/onap/aai/it/multitenancy/KeycloakTestConfiguration.java b/aai-resources/src/test/java/org/onap/aai/it/multitenancy/KeycloakTestConfiguration.java
deleted file mode 100644 (file)
index 1e47c42..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright Â© 2017-2018 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.aai.it.multitenancy;
-
-import com.github.dockerjava.api.model.ExposedPort;
-import com.github.dockerjava.api.model.HostConfig;
-import com.github.dockerjava.api.model.PortBinding;
-import com.github.dockerjava.api.model.Ports;
-
-import dasniko.testcontainers.keycloak.KeycloakContainer;
-
-import org.keycloak.adapters.springboot.KeycloakSpringBootProperties;
-import org.keycloak.admin.client.Keycloak;
-import org.keycloak.admin.client.KeycloakBuilder;
-import org.keycloak.representations.adapters.config.AdapterConfig;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-
-@TestConfiguration
-class KeycloakTestConfiguration {
-
-    @Bean
-    public AdapterConfig adapterConfig() {
-        return new KeycloakSpringBootProperties();
-    }
-
-    @Bean
-    KeycloakContainer keycloakContainer(KeycloakTestProperties properties) {
-        KeycloakContainer keycloak =
-                new KeycloakContainer("jboss/keycloak:12.0.4").withRealmImportFile(properties.realmJson)
-                        .withCreateContainerCmdModifier(cmd -> cmd.withHostConfig(new HostConfig().withPortBindings(
-                                new PortBinding(Ports.Binding.bindPort(Integer.parseInt(properties.port)),
-                                        new ExposedPort(8080)))));
-        keycloak.start();
-        return keycloak;
-    }
-
-    @Bean
-    Keycloak keycloakAdminClient(KeycloakContainer keycloak, KeycloakTestProperties properties) {
-        return KeycloakBuilder.builder().serverUrl(keycloak.getAuthServerUrl()).realm(properties.realm)
-                .clientId(properties.adminCli).username(keycloak.getAdminUsername())
-                .password(keycloak.getAdminPassword()).build();
-    }
-
-    @Bean
-    RoleHandler roleHandler(Keycloak adminClient, KeycloakTestProperties properties) {
-        return new RoleHandler(adminClient, properties);
-    }
-
-    @Bean
-    KeycloakTestProperties properties() {
-        return new KeycloakTestProperties();
-    }
-}
diff --git a/aai-resources/src/test/java/org/onap/aai/it/multitenancy/KeycloakTestProperties.java b/aai-resources/src/test/java/org/onap/aai/it/multitenancy/KeycloakTestProperties.java
deleted file mode 100644 (file)
index 7f1e34c..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright Â© 2017-2018 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.aai.it.multitenancy;
-
-import org.springframework.beans.factory.annotation.Value;
-
-class KeycloakTestProperties {
-
-    @Value("${test.keycloak.realm.json}")
-    public String realmJson;
-
-    @Value("${keycloak.realm}")
-    public String realm;
-
-    @Value("${keycloak.resource}")
-    public String clientId;
-
-    @Value("${test.keycloak.client.secret}")
-    public String clientSecret;
-
-    @Value("${test.keycloak.admin.cli}")
-    public String adminCli;
-
-    @Value("${test.keycloak.auth-server-port}")
-    public String port;
-
-}
diff --git a/aai-resources/src/test/java/org/onap/aai/it/multitenancy/MultiTenancyIT.java b/aai-resources/src/test/java/org/onap/aai/it/multitenancy/MultiTenancyIT.java
deleted file mode 100644 (file)
index 892b8e3..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/**
- * ============LICENSE_START==================================================
- * org.onap.aai
- * ===========================================================================
- * Copyright Â© 2017-2020 AT&T Intellectual Property. All rights reserved.
- * ===========================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END====================================================
- */
-
-package org.onap.aai.it.multitenancy;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-import dasniko.testcontainers.keycloak.KeycloakContainer;
-import org.junit.jupiter.api.Test;
-
-import java.util.Collections;
-
-import org.keycloak.admin.client.Keycloak;
-import org.keycloak.admin.client.KeycloakBuilder;
-import org.keycloak.representations.AccessTokenResponse;
-import org.onap.aai.PayloadUtil;
-import org.onap.aai.rest.AbstractSpringRestTest;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Import;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.context.TestPropertySource;
-
-@Import(KeycloakTestConfiguration.class)
-@TestPropertySource(locations = "classpath:it/application-keycloak-test.properties")
-public class MultiTenancyIT extends AbstractSpringRestTest {
-
-    @Autowired
-    private KeycloakContainer keycloakContainer;
-    @Autowired
-    private RoleHandler roleHandler;
-    @Autowired
-    private KeycloakTestProperties properties;
-
-    @Test
-    public void testCreateAndGetPnf() throws Exception {
-        baseUrl = "http://localhost:" + randomPort;
-        String endpoint = baseUrl + "/aai/v23/network/pnfs/pnf/pnf-1";
-        ResponseEntity<String> responseEntity = null;
-
-        // create pnf with ran (operator)
-        String username = "ran", password = "ran";
-        headers = this.getHeaders(username, password);
-        httpEntity = new HttpEntity<String>(PayloadUtil.getResourcePayload("pnf.json"), headers);
-        responseEntity = restTemplate.exchange(endpoint, HttpMethod.PUT, httpEntity, String.class);
-        assertEquals(HttpStatus.CREATED, responseEntity.getStatusCode());
-
-        // get pnf with bob (operator_readOnly)
-        username = "bob";
-        password = "bob";
-        headers = this.getHeaders(username, password);
-        httpEntity = new HttpEntity<String>("", headers);
-        responseEntity = restTemplate.exchange(endpoint, HttpMethod.GET, httpEntity, String.class);
-        assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
-
-        // get pnf with ted (selector)
-        username = "ted";
-        password = "ted";
-        headers = this.getHeaders(username, password);
-        httpEntity = new HttpEntity<String>("", headers);
-        responseEntity = restTemplate.exchange(endpoint, HttpMethod.GET, httpEntity, String.class);
-        assertEquals(HttpStatus.FORBIDDEN, responseEntity.getStatusCode());
-
-        // add role to ted and try to get pnf again
-        roleHandler.addToUser(RoleHandler.OPERATOR_READ_ONLY, username);
-        headers = this.getHeaders(username, password);
-        httpEntity = new HttpEntity<String>("", headers);
-        responseEntity = restTemplate.exchange(endpoint, HttpMethod.GET, httpEntity, String.class);
-        assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
-
-        // get pnf with ran
-        username = "ran";
-        password = "ran";
-        headers = this.getHeaders(username, password);
-        httpEntity = new HttpEntity<String>("", headers);
-        responseEntity = restTemplate.exchange(endpoint, HttpMethod.GET, httpEntity, String.class);
-        assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
-    }
-
-    private HttpHeaders getHeaders(String username, String password) {
-        HttpHeaders headers = new HttpHeaders();
-
-        headers.setContentType(MediaType.APPLICATION_JSON);
-        headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
-        headers.add("Real-Time", "true");
-        headers.add("X-FromAppId", "JUNIT");
-        headers.add("X-TransactionId", "JUNIT");
-        headers.add("Authorization", "Bearer " + getStringToken(username, password));
-
-        return headers;
-    }
-
-    private String getStringToken(String username, String password) {
-        Keycloak keycloakClient = KeycloakBuilder.builder().serverUrl(keycloakContainer.getAuthServerUrl())
-                .realm(properties.realm).clientId(properties.clientId).clientSecret(properties.clientSecret)
-                .username(username).password(password).build();
-
-        AccessTokenResponse tokenResponse = keycloakClient.tokenManager().getAccessToken();
-        assertNotNull(tokenResponse);
-        return tokenResponse.getToken();
-    }
-}
diff --git a/aai-resources/src/test/java/org/onap/aai/it/multitenancy/RoleHandler.java b/aai-resources/src/test/java/org/onap/aai/it/multitenancy/RoleHandler.java
deleted file mode 100644 (file)
index c9c1fd2..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright Â© 2017-2018 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.aai.it.multitenancy;
-
-import java.util.Collections;
-
-import org.keycloak.admin.client.Keycloak;
-import org.keycloak.admin.client.resource.RealmResource;
-
-class RoleHandler {
-
-    /**
-     * Following roles should be the same as given roles in multi-tenancy-realm json file
-     */
-    final static String OPERATOR = "operator";
-    final static String OPERATOR_READ_ONLY = "operator_readOnly";
-    private final Keycloak adminClient;
-    private final KeycloakTestProperties properties;
-
-    RoleHandler(Keycloak adminClient, KeycloakTestProperties properties) {
-        this.adminClient = adminClient;
-        this.properties = properties;
-    }
-
-    void addToUser(String role, String username) {
-        RealmResource realm = adminClient.realm(properties.realm);
-        realm.users().get(username).roles().realmLevel()
-                .add(Collections.singletonList(realm.roles().get(role).toRepresentation()));
-    }
-
-    void removeFromUser(String role, String username) {
-        RealmResource realm = adminClient.realm(properties.realm);
-        realm.users().get(username).roles().realmLevel()
-                .remove(Collections.singletonList(realm.roles().get(role).toRepresentation()));
-    }
-}
index 6d7a393..37b39e9 100644 (file)
@@ -41,7 +41,7 @@ import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfigurati
 import org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.boot.test.web.server.LocalServerPort;
 import org.testcontainers.containers.output.WaitingConsumer;
 import org.testcontainers.junit.jupiter.Testcontainers;
 import org.testcontainers.k6.K6Container;
index b4a495c..c9bb401 100644 (file)
@@ -32,7 +32,6 @@ import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
-import org.onap.aai.ResourcesApp;
 import org.onap.aai.db.props.AAIProperties;
 import org.onap.aai.dbmap.AAIGraph;
 import org.slf4j.Logger;
@@ -42,7 +41,7 @@ import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfigurati
 import org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.boot.test.web.server.LocalServerPort;
 import org.testcontainers.containers.output.WaitingConsumer;
 import org.testcontainers.junit.jupiter.Testcontainers;
 import org.testcontainers.k6.K6Container;
index adfa433..7fdd3e0 100644 (file)
@@ -43,7 +43,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration;
 import org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.boot.test.web.server.LocalServerPort;
 import org.springframework.context.annotation.Import;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
index 52a62d8..719b172 100644 (file)
@@ -25,7 +25,7 @@ import static org.mockito.Mockito.when;
 
 import java.io.IOException;
 
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response;
 
 import org.apache.commons.lang3.StringUtils;
 import org.junit.jupiter.api.Test;
index 4bab61d..2de138e 100644 (file)
@@ -26,7 +26,7 @@ import static org.mockito.Mockito.when;
 
 import java.io.IOException;
 
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response;
 
 import org.apache.commons.lang3.StringUtils;
 import org.json.JSONException;
@@ -126,8 +126,8 @@ public class BulkProcessConsumerTest extends BulkProcessorTestAbstraction {
         String hostname = "pserver-9876543210-77-jenkins";
         String physicalLocationId = "complex-987654321-77-jenkins";
 
-        String pserverUri = String.format("cloud-infrastructure/pservers/pserver/%s", hostname);
-        String complexUri = String.format("cloud-infrastructure/complexes/complex/%s", physicalLocationId);
+        String pserverUri = "cloud-infrastructure/pservers/pserver/%s".formatted(hostname);
+        String complexUri = "cloud-infrastructure/complexes/complex/%s".formatted(physicalLocationId);
 
         doSetupResource(pserverUri, pserverData);
         doSetupResource(complexUri, complexData);
@@ -135,7 +135,7 @@ public class BulkProcessConsumerTest extends BulkProcessorTestAbstraction {
         String complexToPserverRelationshipData =
                 getPayload("payloads/relationship/pserver-complex-relationship-for-bulk.json");
         String complexToPserverRelationshipUri =
-                String.format("cloud-infrastructure/pservers/pserver/%s/relationship-list/relationship", hostname);
+                "cloud-infrastructure/pservers/pserver/%s/relationship-list/relationship".formatted(hostname);
 
         Response response = resourcesController.updateRelationship(complexToPserverRelationshipData,
                 schemaVersions.getDefaultVersion().toString(), complexToPserverRelationshipUri, httpHeaders, uriInfo,
index f734360..68b941b 100644 (file)
@@ -30,12 +30,12 @@ import java.util.List;
 import java.util.Set;
 import java.util.UUID;
 
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedHashMap;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.mockito.Mockito;
index 15c03cf..9c7ec5e 100644 (file)
@@ -43,7 +43,7 @@ import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfigurati
 import org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration;
 import org.springframework.boot.test.autoconfigure.actuate.metrics.AutoConfigureMetrics;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.boot.test.web.server.LocalServerPort;
 import org.springframework.context.annotation.Import;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
index e3b923f..a30ead8 100644 (file)
@@ -31,12 +31,12 @@ import java.util.List;
 import java.util.Set;
 import java.util.UUID;
 
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedHashMap;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
index 21baedc..417ada8 100644 (file)
@@ -38,12 +38,12 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.Response;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedHashMap;
+import jakarta.ws.rs.core.Response;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -66,7 +66,7 @@ public class ExceptionHandlerTest extends AAISetup {
     private HttpServletRequest request;
 
     @InjectMocks
-    private ExceptionHandler handler = new ExceptionHandler();
+    private ExceptionHandler handler;
 
     @BeforeEach
     public void setup() {
index 37304fe..52a04da 100644 (file)
@@ -33,12 +33,12 @@ import java.util.List;
 import java.util.Set;
 import java.util.UUID;
 
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedHashMap;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.json.JSONException;
 import org.junit.jupiter.api.BeforeEach;
index 137ffc6..9381d8f 100644 (file)
@@ -33,12 +33,12 @@ import java.util.List;
 import java.util.Set;
 import java.util.UUID;
 
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedHashMap;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.json.JSONException;
 import org.junit.jupiter.api.BeforeEach;
index 6d652ab..136b349 100644 (file)
@@ -33,8 +33,8 @@ import java.lang.reflect.Method;
 import java.util.Iterator;
 import java.util.Optional;
 
-import javax.ws.rs.HttpMethod;
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.HttpMethod;
+import jakarta.ws.rs.core.Response;
 
 import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
index da7c064..3db4b59 100644 (file)
@@ -41,12 +41,12 @@ import java.util.List;
 import java.util.Set;
 import java.util.UUID;
 
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedHashMap;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
@@ -62,6 +62,7 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.CsvSource;
 import org.junit.jupiter.params.provider.EnumSource;
+import org.junit.jupiter.params.provider.ValueSource;
 import org.mockito.Mockito;
 import org.onap.aai.config.WebClientConfiguration;
 import org.onap.aai.db.props.AAIProperties;
@@ -84,6 +85,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
 import org.springframework.context.annotation.Import;
 import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
 import org.springframework.mock.web.MockHttpServletRequest;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.annotation.DirtiesContext.ClassMode;
@@ -276,15 +278,15 @@ public class ResourcesControllerTest {
         String hostname = "590a8943-1200-43b3-825b-75dde6b8f44a";
         String physicalLocationId = "e13d4587-19ad-4bf5-80f5-c021efb5b61c";
 
-        String pserverUri = String.format("/cloud-infrastructure/pservers/pserver/%s", hostname);
-        String cloudRegionUri = String.format("/cloud-infrastructure/complexes/complex/%s", physicalLocationId);
+        String pserverUri = "/cloud-infrastructure/pservers/pserver/%s".formatted(hostname);
+        String cloudRegionUri = "/cloud-infrastructure/complexes/complex/%s".formatted(physicalLocationId);
 
         doSetupResource(pserverUri, pserverData);
         doSetupResource(cloudRegionUri, complexData);
 
         String cloudToPserverRelationshipData = getRelationshipPayload("pserver-complex-relationship");
         String cloudToPserverRelationshipUri =
-                String.format("/cloud-infrastructure/pservers/pserver/%s/relationship-list/relationship", hostname);
+                "/cloud-infrastructure/pservers/pserver/%s/relationship-list/relationship".formatted(hostname);
 
         webClient.put()
                 .uri(cloudToPserverRelationshipUri)
@@ -304,21 +306,21 @@ public class ResourcesControllerTest {
     public void testPutPassWithEmptyData() throws JSONException {
 
         String payload = "{}";
-        String pserverUri = String.format("/cloud-infrastructure/pservers/pserver/%s", UUID.randomUUID().toString());
+        String pserverUri = "/cloud-infrastructure/pservers/pserver/%s".formatted(UUID.randomUUID().toString());
 
         doSetupResource(pserverUri, payload);
 
         payload = "{}";
-        pserverUri = String.format("/cloud-infrastructure/pservers/pserver/%s", UUID.randomUUID().toString());
+        pserverUri = "/cloud-infrastructure/pservers/pserver/%s".formatted(UUID.randomUUID().toString());
         doSetupResource(pserverUri, payload);
     }
 
     @ParameterizedTest
-    @EnumSource(value = HttpMethod.class, names = {"GET", "PUT", "DELETE"})
-    public void thatUnknownPathReturnsBadRequest(HttpMethod method) throws JSONException {
+    @ValueSource(strings = {"GET", "PUT", "DELETE"})
+    public void thatUnknownPathReturnsBadRequest(String method) throws JSONException {
         String uri = "/fake-infrastructure/pservers/pserver/fajsidj";
         AAIErrorResponse errorResponse = webClient
-                .method(method)
+                .method(HttpMethod.valueOf(method))
                 .uri(uri)
                 .bodyValue("{}")
                 .exchange()
@@ -496,16 +498,16 @@ public class ResourcesControllerTest {
 
     public String getResourcePayload(String resourceName) throws IOException {
         String rawPayload = IOUtils.toString(this.getClass().getResourceAsStream("/payloads/resource/" + resourceName + ".json"), StandardCharsets.UTF_8);
-        return String.format(rawPayload, defaultSchemaVersion);
+        return rawPayload.formatted(defaultSchemaVersion);
     }
 
     public String getRelationshipPayload(String relationshipName) throws IOException {
         String rawPayload = IOUtils.toString(this.getClass().getResourceAsStream("/payloads/relationship/" + relationshipName + ".json"), StandardCharsets.UTF_8);
-        return String.format(rawPayload, defaultSchemaVersion);
+        return rawPayload.formatted(defaultSchemaVersion);
     }
 
     public String getUri(String hostname) {
-        return String.format("/cloud-infrastructure/pservers/pserver/%s", hostname);
+        return "/cloud-infrastructure/pservers/pserver/%s".formatted(hostname);
     }
 
     public String getGetAllPserversURI() {
@@ -535,15 +537,15 @@ public class ResourcesControllerTest {
         String hostname = "590a8943-1200-43b3-825b-75dde6b8f44b";
         String physicalLocationId = "e13d4587-19ad-4bf5-80f5-c021efb5b61d";
 
-        String pserverUri = String.format("/cloud-infrastructure/pservers/pserver/%s", hostname);
-        String cloudRegionUri = String.format("/cloud-infrastructure/complexes/complex/%s", physicalLocationId);
+        String pserverUri = "/cloud-infrastructure/pservers/pserver/%s".formatted(hostname);
+        String cloudRegionUri = "/cloud-infrastructure/complexes/complex/%s".formatted(physicalLocationId);
 
         doSetupResource(pserverUri, pserverData);
         doSetupResource(cloudRegionUri, complexData);
 
         String cloudToPserverRelationshipData = getRelationshipPayload("pserver-complex-relationship2");
         String cloudToPserverRelationshipUri =
-                String.format("/cloud-infrastructure/pservers/pserver/%s/relationship-list/relationship", hostname);
+                "/cloud-infrastructure/pservers/pserver/%s/relationship-list/relationship".formatted(hostname);
 
         webClient.put()
             .uri(cloudToPserverRelationshipUri)
@@ -552,7 +554,7 @@ public class ResourcesControllerTest {
             .expectStatus()
             .isOk();
 
-        String getRelationshipUri = String.format("/cloud-infrastructure/pservers/pserver/%s/relationship-list", hostname);
+        String getRelationshipUri = "/cloud-infrastructure/pservers/pserver/%s/relationship-list".formatted(hostname);
         String responseBody = webClient.get()
             .uri(uriBuilder ->
                 uriBuilder
@@ -578,15 +580,15 @@ public class ResourcesControllerTest {
         String hostname = "590a8943-1200-43b3-825b-75dde6b8f44c";
         String physicalLocationId = "e13d4587-19ad-4bf5-80f5-c021efb5b61e";
 
-        String pserverUri = String.format("/cloud-infrastructure/pservers/pserver/%s", hostname);
-        String cloudRegionUri = String.format("/cloud-infrastructure/complexes/complex/%s", physicalLocationId);
+        String pserverUri = "/cloud-infrastructure/pservers/pserver/%s".formatted(hostname);
+        String cloudRegionUri = "/cloud-infrastructure/complexes/complex/%s".formatted(physicalLocationId);
 
         doSetupResource(pserverUri, pserverData);
         doSetupResource(cloudRegionUri, complexData);
 
         String cloudToPserverRelationshipData = getRelationshipPayload("pserver-complex-relationship3");
         String cloudToPserverRelationshipUri =
-                String.format("/cloud-infrastructure/pservers/pserver/%s/relationship-list/relationship", hostname);
+                "/cloud-infrastructure/pservers/pserver/%s/relationship-list/relationship".formatted(hostname);
 
         webClient.put()
             .uri(cloudToPserverRelationshipUri)
@@ -595,7 +597,7 @@ public class ResourcesControllerTest {
             .expectStatus()
             .isOk();
 
-        String getRelationshipUri = String.format("/cloud-infrastructure/pservers/pserver/%s", hostname);
+        String getRelationshipUri = "/cloud-infrastructure/pservers/pserver/%s".formatted(hostname);
         String responseBody = webClient.get()
             .uri(uriBuilder ->
                 uriBuilder
@@ -651,14 +653,14 @@ public class ResourcesControllerTest {
         String hostname = "590a8943-1200-43b3-825b-75dde6b8f44d";
         String physicalLocationId = "e13d4587-19ad-4bf5-80f5-c021efb5b61f";
 
-        String pserverUri = String.format("/cloud-infrastructure/pservers/pserver/%s", hostname);
-        String cloudRegionUri = String.format("/cloud-infrastructure/complexes/complex/%s", physicalLocationId);
+        String pserverUri = "/cloud-infrastructure/pservers/pserver/%s".formatted(hostname);
+        String cloudRegionUri = "/cloud-infrastructure/complexes/complex/%s".formatted(physicalLocationId);
 
         doSetupResource(pserverUri, pserverData);
         doSetupResource(cloudRegionUri, complexData);
 
         String getRelationshipMockRequestUri =
-                String.format("/cloud-infrastructure/pservers/pserver/%s/relationship-list", hostname);
+                "/cloud-infrastructure/pservers/pserver/%s/relationship-list".formatted(hostname);
         webClient.get()
             .uri(getRelationshipMockRequestUri)
             .exchange()
@@ -676,18 +678,16 @@ public class ResourcesControllerTest {
         String tenant = "tenant01";
         String vserver = "vserver01";
 
-        String pserverUri = String.format("/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true", hostname);
-        String vserverUri = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s?skip-related-to=true", cloudRegionId);
+        String pserverUri = "/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true".formatted(hostname);
+        String vserverUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s?skip-related-to=true".formatted(cloudRegionId);
 
         // PUT the resources
         putResourceWithQueryParam(pserverUri, pserverData);
         putResourceWithQueryParam(vserverUri, vserverData);
 
         String pserverMockRequestUri =
-                String.format("/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true", hostname);
-        String vserverMockRequestUri = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s?skip-related-to=true",
+                "/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true".formatted(hostname);
+        String vserverMockRequestUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s?skip-related-to=true".formatted(
                 cloudRegionId, tenant, vserver);
 
         // === GET - related-to-property should not exist ===
@@ -702,13 +702,12 @@ public class ResourcesControllerTest {
 
         // === Clean up (DELETE) ===
         // vserver
-        String deleteUri = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s",
+        String deleteUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s".formatted(
                 cloudRegionId, tenant, vserver);
         deleteServerObject(vserverMockRequestUri, deleteUri, "vserver");
 
         // pserver
-        deleteUri = String.format("/cloud-infrastructure/pservers/pserver/%s", hostname);
+        deleteUri = "/cloud-infrastructure/pservers/pserver/%s".formatted(hostname);
         deleteServerObject(pserverMockRequestUri, deleteUri, "pserver");
     }
 
@@ -722,16 +721,15 @@ public class ResourcesControllerTest {
         String tenant = "tenant02";
         String vserver = "vserver02";
 
-        String pserverUri = String.format("/cloud-infrastructure/pservers/pserver/%s", hostname);
-        String vserverUri = String.format("/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s", cloudRegionId);
+        String pserverUri = "/cloud-infrastructure/pservers/pserver/%s".formatted(hostname);
+        String vserverUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s".formatted(cloudRegionId);
 
         // PUT the resources
         doSetupResource(pserverUri, pserverData);
         doSetupResource(vserverUri, vserverData);
 
-        String pserverMockRequestUri = String.format("/cloud-infrastructure/pservers/pserver/%s", hostname);
-        String vserverMockRequestUri = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s",
+        String pserverMockRequestUri = "/cloud-infrastructure/pservers/pserver/%s".formatted(hostname);
+        String vserverMockRequestUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s".formatted(
                 cloudRegionId, tenant, vserver);
 
         // === GET - related-to-property should not exist ===
@@ -746,13 +744,12 @@ public class ResourcesControllerTest {
 
         // === Clean up (DELETE) ===
         // vserver
-        String deleteUri = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s",
+        String deleteUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s".formatted(
                 cloudRegionId, tenant, vserver);
         deleteServerObject(vserverMockRequestUri, deleteUri, "vserver");
 
         // pserver
-        deleteUri = String.format("/cloud-infrastructure/pservers/pserver/%s", hostname);
+        deleteUri = "/cloud-infrastructure/pservers/pserver/%s".formatted(hostname);
         deleteServerObject(pserverMockRequestUri, deleteUri, "pserver");
     }
 
@@ -766,20 +763,18 @@ public class ResourcesControllerTest {
         String tenant = "tenant03";
         String vserver = "vserver03";
 
-        String pserverUri = String
-                .format("/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true&format=resource", hostname);
-        String vserverUri = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s?skip-related-to=true&format=resource",
+        String pserverUri = "/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true&format=resource"
+                .formatted(hostname);
+        String vserverUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s?skip-related-to=true&format=resource".formatted(
                 cloudRegionId);
 
         // PUT the resources
         putResourceWithQueryParam(pserverUri, pserverData);
         putResourceWithQueryParam(vserverUri, vserverData);
 
-        String pserverMockRequestUri = String
-                .format("/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true&format=resource", hostname);
-        String vserverMockRequestUri = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s?skip-related-to=true&format=resource",
+        String pserverMockRequestUri = "/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true&format=resource"
+                .formatted(hostname);
+        String vserverMockRequestUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s?skip-related-to=true&format=resource".formatted(
                 cloudRegionId, tenant, vserver);
 
         // === GET - related-to-property should not exist ===
@@ -794,16 +789,14 @@ public class ResourcesControllerTest {
 
         // === Clean up (DELETE) ===
         // vserver
-        String deleteUri = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s",
+        String deleteUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s".formatted(
                 cloudRegionId, tenant, vserver);
-        String vserverMockRequestUriNoFormat = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s",
+        String vserverMockRequestUriNoFormat = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s".formatted(
                 cloudRegionId, tenant, vserver);
         deleteServerObject(vserverMockRequestUriNoFormat, deleteUri, "vserver");
 
         // pserver
-        deleteUri = String.format("/cloud-infrastructure/pservers/pserver/%s", hostname);
+        deleteUri = "/cloud-infrastructure/pservers/pserver/%s".formatted(hostname);
         deleteServerObject(pserverMockRequestUri, deleteUri, "pserver");
     }
 
@@ -817,20 +810,16 @@ public class ResourcesControllerTest {
         String tenant = "tenant04";
         String vserver = "vserver04";
 
-        String pserverUri = String.format(
-                "/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true&format=resource_and_url", hostname);
-        String vserverUri = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s?skip-related-to=true&format=resource_and_url",
+        String pserverUri = "/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true&format=resource_and_url".formatted(hostname);
+        String vserverUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s?skip-related-to=true&format=resource_and_url".formatted(
                 cloudRegionId);
 
         // PUT the resources
         putResourceWithQueryParam(pserverUri, pserverData);
         putResourceWithQueryParam(vserverUri, vserverData);
 
-        String pserverMockRequestUri = String.format(
-                "/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true&format=resource_and_url", hostname);
-        String vserverMockRequestUri = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s?skip-related-to=true&format=resource_and_url",
+        String pserverMockRequestUri = "/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true&format=resource_and_url".formatted(hostname);
+        String vserverMockRequestUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s?skip-related-to=true&format=resource_and_url".formatted(
                 cloudRegionId, tenant, vserver);
 
         // === GET - related-to-property should not exist ===
@@ -845,16 +834,14 @@ public class ResourcesControllerTest {
 
         // === Clean up (DELETE) ===
         // vserver
-        String deleteUri = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s",
+        String deleteUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s".formatted(
                 cloudRegionId, tenant, vserver);
-        String vserverMockRequestUriNoFormat = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s",
+        String vserverMockRequestUriNoFormat = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s".formatted(
                 cloudRegionId, tenant, vserver);
         deleteServerObject(vserverMockRequestUriNoFormat, deleteUri, "vserver");
 
         // pserver
-        deleteUri = String.format("/cloud-infrastructure/pservers/pserver/%s", hostname);
+        deleteUri = "/cloud-infrastructure/pservers/pserver/%s".formatted(hostname);
         deleteServerObject(pserverMockRequestUri, deleteUri, "pserver");
     }
 
@@ -868,18 +855,16 @@ public class ResourcesControllerTest {
         String tenant = "tenant05";
         String vserver = "vserver05";
 
-        String pserverUri = String.format("/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true", hostname);
-        String vserverUri = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s?skip-related-to=true", cloudRegionId);
+        String pserverUri = "/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true".formatted(hostname);
+        String vserverUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s?skip-related-to=true".formatted(cloudRegionId);
 
         // PUT the resources
         putResourceWithQueryParam(pserverUri, pserverData);
         putResourceWithQueryParam(vserverUri, vserverData);
 
         String pserverMockRequestUri =
-                String.format("/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true", hostname);
-        String vserverMockRequestUri = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers?vserver-selflink=somelink05&skip-related-to=true",
+                "/cloud-infrastructure/pservers/pserver/%s?skip-related-to=true".formatted(hostname);
+        String vserverMockRequestUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers?vserver-selflink=somelink05&skip-related-to=true".formatted(
                 cloudRegionId, tenant, vserver);
 
         // === GET - related-to-property should not exist ===
@@ -894,16 +879,14 @@ public class ResourcesControllerTest {
 
         // === Clean up (DELETE) ===
         // vserver
-        String deleteUri = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s",
+        String deleteUri = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s".formatted(
                 cloudRegionId, tenant, vserver);
-        String vserverMockRequestUriNoFormat = String.format(
-                "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s",
+        String vserverMockRequestUriNoFormat = "/cloud-infrastructure/cloud-regions/cloud-region/test-aic/%s/tenants/tenant/%s/vservers/vserver/%s".formatted(
                 cloudRegionId, tenant, vserver);
         deleteServerObject(vserverMockRequestUriNoFormat, deleteUri, "vserver");
 
         // pserver
-        deleteUri = String.format("/cloud-infrastructure/pservers/pserver/%s", hostname);
+        deleteUri = "/cloud-infrastructure/pservers/pserver/%s".formatted(hostname);
         deleteServerObject(pserverMockRequestUri, deleteUri, "pserver");
     }
 
index 030e870..2159516 100644 (file)
@@ -33,12 +33,12 @@ import java.util.Collections;
 import java.util.List;
 import java.util.UUID;
 
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedHashMap;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
index 4c2a0c9..b2d459c 100644 (file)
@@ -24,9 +24,9 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.UnsupportedEncodingException;
 
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.UriInfo;
+import jakarta.ws.rs.core.MultivaluedHashMap;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.UriInfo;
 
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
index 2118d04..f3c778e 100644 (file)
@@ -11,7 +11,7 @@ server.servlet.context-path=/
 
 spring.jersey.application-path=${schema.uri.base.path}
 
-spring.sleuth.enabled=false
+management.tracing.enabled=false
 
 spring.autoconfigure.exclude=\
   org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
@@ -77,7 +77,8 @@ management.endpoint.metrics.enabled=true
 management.endpoint.prometheus.enabled=true
 management.endpoints.enabled-by-default=true
 management.endpoints.web.exposure.include=info, health, prometheus
-management.metrics.web.server.request.autotime.enabled=false
+# This property is deprecated: Should be applied at the ObservationRegistry level.
+# management.metrics.web.server.request.autotime.enabled=false
 scrape.uri.metrics=true
 
 aai.notifications.enabled=false
diff --git a/pom.xml b/pom.xml
index c1d916a..361f704 100644 (file)
--- a/pom.xml
+++ b/pom.xml
     <parent>
         <groupId>org.onap.aai.aai-common</groupId>
         <artifactId>aai-parent</artifactId>
-        <version>1.15.4</version>
+        <version>1.16.0-SNAPSHOT</version>
     </parent>
     <groupId>org.onap.aai.resources</groupId>
     <artifactId>resources</artifactId>
-    <version>1.15.4-SNAPSHOT</version>
+    <version>1.16.0-SNAPSHOT</version>
     <name>aai-resources</name>
     <packaging>pom</packaging>
     <modules>
         <module>aai-resources</module>
     </modules>
     <properties>
-        <maven.compiler.release>11</maven.compiler.release>
+        <maven.compiler.release>17</maven.compiler.release>
         <!--
             Nexus Proxy Properties and Snapshot Locations
             Ideally this can be overwritten at runtime per internal environment specific values at runtime
@@ -49,7 +49,7 @@
         <staging.path>/content/repositories/staging/</staging.path>
         <!-- GMaven plugin uses this property to figure out the name of the docker tag -->
         <aai.project.version>${project.version}</aai.project.version>
-        <aai.common.version>1.15.4</aai.common.version>
+        <aai.common.version>1.16.0-SNAPSHOT</aai.common.version>
         <aai.schema.service.version>1.12.7</aai.schema.service.version>
     </properties>
     <build>