<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>
-FROM eclipse-temurin:11-jre-alpine
+FROM eclipse-temurin:17-jre-alpine
USER nobody
ENV SERVER_PORT=8447
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;
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;
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;
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) {
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
import io.micrometer.core.annotation.Timed;
-import javax.ws.rs.Path;
+import jakarta.ws.rs.Path;
import org.onap.aai.restcore.HttpMethod;
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;
import io.micrometer.core.annotation.Timed;
-import javax.ws.rs.Path;
+import jakarta.ws.rs.Path;
import org.onap.aai.restcore.HttpMethod;
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;
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;
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;
@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
@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);
}
@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();
@Override
public Response process() {
return resourcesService.getLegacy(versionParam, uri, depthParam, cleanUp, headers, info, req,
- new HashSet<String>(), pageable, roles);
+ new HashSet<String>(), pageable);
}
});
}
@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);
}
/**
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);
- }
}
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;
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;
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;
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;
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;
}
@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) {
.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) {
import java.net.URI;
import java.util.List;
-import javax.ws.rs.core.*;
+import jakarta.ws.rs.core.*;
public class BulkUriInfo implements UriInfo {
@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) {
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'");
+ }
+
}
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;
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;
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;
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;
*/
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;
}
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;
}
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");
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;
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;
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;
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=\
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
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());
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;
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());
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;
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());
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;
}
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 {
return true;
}
- if (clientHttpResponse.getRawStatusCode() % 100 == 5) {
+ if (clientHttpResponse.getStatusCode().value() % 100 == 5) {
logger.debug("Call returned a error " + clientHttpResponse.getStatusText());
return true;
}
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;
+++ /dev/null
-/**
- * ============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();
- }
-}
+++ /dev/null
-/**
- * ============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;
-
-}
+++ /dev/null
-/**
- * ============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();
- }
-}
+++ /dev/null
-/**
- * ============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()));
- }
-}
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;
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;
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;
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;
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;
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;
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);
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,
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;
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;
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;
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;
private HttpServletRequest request;
@InjectMocks
- private ExceptionHandler handler = new ExceptionHandler();
+ private ExceptionHandler handler;
@BeforeEach
public void setup() {
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;
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;
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;
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;
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;
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;
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)
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()
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() {
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)
.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
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)
.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
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()
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 ===
// === 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");
}
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 ===
// === 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");
}
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 ===
// === 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");
}
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 ===
// === 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");
}
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 ===
// === 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");
}
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;
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;
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,\
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
<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
<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>