============LICENSE_END=========================================================
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-parent</artifactId>
- <version>1.15.5</version>
+ <version>1.16.1</version>
</parent>
<groupId>org.onap.aai</groupId>
<artifactId>babel</artifactId>
- <version>1.13.7-SNAPSHOT</version>
+ <version>1.13.8-SNAPSHOT</version>
<packaging>jar</packaging>
<name>aai-babel</name>
<description>ONAP AAI Babel Microservice</description>
<properties>
+ <jakarta-servlet.version>5.0.0</jakarta-servlet.version>
+ <maven.compiler.release>17</maven.compiler.release>
<!-- Spring boot version -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<sonar.jacoco.itReportPath />
<sonar.jacoco.reportMissing.force.zero />
- <jacoco-maven-plugin.version>0.8.11</jacoco-maven-plugin.version>
+ <jacoco-maven-plugin.version>0.8.13</jacoco-maven-plugin.version>
<sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
<sonar.coverage.jacoco.xmlReportPaths>${project.reporting.outputDirectory}/jacoco-ut/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
<!-- java 11 related properties -->
<maven-javadoc-plugin.version>3.2.0</maven-javadoc-plugin.version>
- <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
+ <maven-compiler-plugin.version>3.14.0</maven-compiler-plugin.version>
<maven-compiler-plugin.source>17</maven-compiler-plugin.source>
<maven-compiler-plugin.target>17</maven-compiler-plugin.target>
<maven-compiler-plugin.test.source>17</maven-compiler-plugin.test.source>
<aai.common.version>1.9.4</aai.common.version>
<groovy.version>3.0.13</groovy.version>
- <spring-cloud.version>2021.0.9</spring-cloud.version>
<commons.compress.version>1.27.0</commons.compress.version>
<commons.io.version>2.16.1</commons.io.version>
<commons.codec.version>1.15</commons.codec.version>
- <jaxb.version>2.3.0</jaxb.version>
<javax.ws.rs.version>2.1.1</javax.ws.rs.version>
<mvn.jaxb2.version>0.15.1</mvn.jaxb2.version>
<aai-schema.group.id>org.onap.aai.schema-service</aai-schema.group.id>
- <aai-schema.version>1.12.10</aai-schema.version>
+ <aai-schema.version>1.13.1-SNAPSHOT</aai-schema.version>
<commons.lang3.version>3.12.0</commons.lang3.version>
<aai.rest.client.version>1.6.4</aai.rest.client.version>
<common.logging.version>1.13.0</common.logging.version>
<jakarta.activation.version>1.2.2</jakarta.activation.version>
<!-- This will be used for the docker images as the default format of maven build has issues -->
<maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
- <jakarta.xml.bind-api.version>3.0.1</jakarta.xml.bind-api.version>
- <jaxb-runtime.version>3.0.1</jaxb-runtime.version>
+ <jakarta.xml.bind-api.version>4.0.2</jakarta.xml.bind-api.version>
+ <jaxb-runtime.version>3.0.2</jaxb-runtime.version>
+ <jaxb.plugin.version>4.0.8</jaxb.plugin.version>
+ <logback.version>1.4.14</logback.version>
+ <logstash.logback.encoder.version>6.6</logstash.logback.encoder.version>
+ <slf4j.api.version>2.0.9</slf4j.api.version>
</properties>
<profiles>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-tomcat</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
+ <version>${logback.version}</version>
<scope>compile</scope>
</dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-core</artifactId>
- </dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
- <groupId>javax.ws.rs</groupId>
- <artifactId>javax.ws.rs-api</artifactId>
+ <groupId>net.logstash.logback</groupId>
+ <artifactId>logstash-logback-encoder</artifactId>
+ <version>${logstash.logback.encoder.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents.client5</groupId>
+ <artifactId>httpclient5</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.janino</groupId>
+ <artifactId>janino</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>jakarta.ws.rs</groupId>
+ <artifactId>jakarta.ws.rs-api</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>rest-client</artifactId>
<version>${aai.rest.client.version}</version>
</dependency>
+ <dependency>
+ <groupId>jakarta.servlet</groupId>
+ <artifactId>jakarta.servlet-api</artifactId>
+ <version>6.0.0</version>
+ <scope>provided</scope>
+ </dependency>
+
<!-- Testing -->
<dependency>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.xml.ws</groupId>
- <artifactId>jaxws-api</artifactId>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-core</artifactId>
- <version>${jaxb.version}</version>
+ <groupId>jakarta.xml.bind</groupId>
+ <artifactId>jakarta.xml.bind-api</artifactId>
</dependency>
<dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb.version}</version>
+ <groupId>jakarta.xml.ws</groupId>
+ <artifactId>jakarta.xml.ws-api</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.activation</groupId>
<artifactId>jakarta.activation-api</artifactId>
</dependency>
<dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-sleuth</artifactId>
+ <groupId>io.micrometer</groupId>
+ <artifactId>micrometer-tracing-bridge-otel</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.ws</groupId>
+ <artifactId>jaxws-rt</artifactId>
+ <version>4.0.3</version>
+ <scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-sleuth-zipkin</artifactId>
+ <groupId>io.opentelemetry</groupId>
+ <artifactId>opentelemetry-exporter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
- <version>1.18.32</version>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>2.0.9</version>
- </dependency>
- <dependency>
- <groupId>jakarta.xml.bind</groupId>
- <artifactId>jakarta.xml.bind-api</artifactId>
- <version>${jakarta.xml.bind-api.version}</version>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- <version>${jaxb-runtime.version}</version>
- </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j.api.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.glassfish.jaxb</groupId>
+ <artifactId>jaxb-runtime</artifactId>
+ <version>${jaxb-runtime.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jvnet.jaxb</groupId>
+ <artifactId>jaxb-plugins-runtime</artifactId>
+ <version>${jaxb.plugin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jvnet.jaxb</groupId>
+ <artifactId>jaxb-plugin-annotate</artifactId>
+ <version>${jaxb.plugin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.aai.schema-service</groupId>
+ <artifactId>aai-annotations</artifactId>
+ <version>${aai-schema.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-server</artifactId>
+ </dependency>
</dependencies>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>${spring-cloud.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
<build>
<plugins>
<plugin>
</executions>
</plugin>
<plugin>
- <groupId>org.jvnet.jaxb2.maven2</groupId>
- <artifactId>maven-jaxb2-plugin</artifactId>
- <version>${mvn.jaxb2.version}</version>
+ <groupId>org.jvnet.jaxb</groupId>
+ <artifactId>jaxb-maven-plugin</artifactId>
+ <version>${jaxb.plugin.version}</version>
<executions>
<execution>
<phase>process-sources</phase>
<arg>-Xannotate</arg>
</args>
<plugins>
+ <!-- JAXB4 plugins for Jakarta compatibility -->
<plugin>
- <groupId>org.jvnet.jaxb2_commons</groupId>
- <artifactId>jaxb2-basics-annotate</artifactId>
- <version>0.6.4</version>
- </plugin>
- <!-- Add the dependencies with your annotations as 'plugins' below -->
- <plugin>
- <groupId>org.jvnet.jaxb2_commons</groupId>
- <artifactId>jaxb2-annotate-plugin-test-annox-annotations</artifactId>
- <version>1.0.0</version>
+ <groupId>org.jvnet.jaxb</groupId>
+ <artifactId>jaxb-plugins</artifactId>
+ <version>4.0.8</version>
</plugin>
</plugins>
</configuration>
<version>${maven-compiler-plugin.version}</version>
<inherited>true</inherited>
<configuration>
- <source>${maven-compiler-plugin.source}</source>
- <target>${maven-compiler-plugin.target}</target>
<testSource>${maven-compiler-plugin.test.source}</testSource>
<testTarget>${maven-compiler-plugin.test.target}</testTarget>
</configuration>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
- <version>${jacoco-maven-plugin.version}</version>
<configuration>
<!-- Note: This exclusion list should match <sonar.exclusions> property
above -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
- <version>3.1.2</version>
<configuration>
<!-- Sets the VM argument line used when unit tests are run. -->
<reuseForks>false</reuseForks>
package org.onap.aai.auth;
+import java.io.Serial;
+
public class AAIAuthException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
public AAIAuthException(String string) {
package org.onap.aai.auth;
import java.security.cert.X509Certificate;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import javax.security.auth.x500.X500Principal;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.core.HttpHeaders;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.core.HttpHeaders;
import org.onap.aai.babel.config.BabelAuthConfig;
import org.onap.aai.babel.logging.LogHelper;
import org.onap.aai.cl.api.Logger;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.Path;
-import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
private static Optional<String> locateConfigFile(String authPolicyFile) throws IOException {
if (authPolicyFile != null) {
List<Path> paths = new ArrayList<>();
- paths.add(Paths.get("."));
+ paths.add(Path.of("."));
String configHome = System.getProperty("CONFIG_HOME");
if (configHome == null) {
configHome = System.getProperty("APP_HOME") + "/appconfig";
}
- paths.add(Paths.get(configHome));
- paths.add(Paths.get(configHome).resolve("auth"));
+ paths.add(Path.of(configHome));
+ paths.add(Path.of(configHome).resolve("auth"));
for (Path path : paths) {
File authFile = path.resolve(authPolicyFile).toFile();
*/
package org.onap.aai.babel;
-import javax.ws.rs.ApplicationPath;
+import jakarta.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;
import org.onap.aai.babel.service.GenerateArtifactsControllerImpl;
import org.onap.aai.babel.service.InfoService;
*/
package org.onap.aai.babel.csar;
+import java.io.Serial;
+
/**
* This class represents an exception encountered when attempting to convert the YAML files in a CSAR archive into XML.
*/
public class CsarConverterException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
/**
*/
package org.onap.aai.babel.csar.extractor;
+import java.io.Serial;
+
/** This class represents an exception encountered when processing an archive in memory. */
public class InvalidArchiveException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
/**
*/
package org.onap.aai.babel.csar.vnfcatalog;
+import java.io.Serial;
+
/**
* This class represents a scenario when there are invalid number of Nodes found during processing.
*/
class InvalidNumberOfNodesException extends Exception {
/** Default ID */
+ @Serial
private static final long serialVersionUID = 1L;
InvalidNumberOfNodesException(String message) {
*/
package org.onap.aai.babel.csar.vnfcatalog;
+import java.io.Serial;
+
/**
* This class represents an exception raised when trying to extract VNFCatalog data out of a CSAR file.
*/
public class ToscaToCatalogException extends Exception {
/** Defaulted */
+ @Serial
private static final long serialVersionUID = 1L;
/**
import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory;
import org.onap.sdc.toscaparser.api.NodeTemplate;
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response;
/**
* This class is responsible for extracting Virtual Network Function (VNF) information from a TOSCA 1.1 CSAR package.
NodeTemplate vnfConfigurationNode = vnfConfigs.get(0);
applicationLogger.info(ApplicationMsgs.DISTRIBUTION_EVENT,
- String.format("Found VNF Configuration node \"%s\"", vnfConfigurationNode));
+ "Found VNF Configuration node \"%s\"".formatted(vnfConfigurationNode));
if (vnfConfigs.size() > 1) {
throw new InvalidNumberOfNodesException("Only one VNF configuration node is allowed however "
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.ext.Provider;
-import javax.ws.rs.core.PathSegment;
-import javax.ws.rs.core.Response;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerRequestFilter;
+import jakarta.ws.rs.core.Response.Status;
+import jakarta.ws.rs.ext.Provider;
+import jakarta.ws.rs.core.PathSegment;
+import jakarta.ws.rs.core.Response;
import java.io.IOException;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.core.UriInfo;
-import javax.ws.rs.core.MultivaluedMap;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerRequestFilter;
+import jakarta.ws.rs.core.UriInfo;
+import jakarta.ws.rs.core.MultivaluedMap;
import java.io.IOException;
import java.util.UUID;
applicationLogger.startAudit(headers, servletRequest);
applicationLogger.info(ApplicationMsgs.BABEL_REQUEST_PAYLOAD,
"Received request: " + headers + requestBody);
- applicationLogger.debug(String.format(
- "Received request. UriInfo \"%s\", HttpHeaders \"%s\", ServletRequest \"%s\", Request \"%s\"", uriInfo,
+ applicationLogger.debug("Received request. UriInfo \"%s\", HttpHeaders \"%s\", ServletRequest \"%s\", Request \"%s\"".formatted(uriInfo,
headers, servletRequest, requestBody));
// Additional name/value pairs according to EELF guidelines
package org.onap.aai.babel.logging;
import com.att.eelf.i18n.EELFResourceManager;
+import com.att.eelf.i18n.EELFResolvableErrorEnum;
import org.onap.aai.cl.eelf.LogMessageEnum;
-public enum ApplicationMsgs implements LogMessageEnum {
+public enum ApplicationMsgs implements LogMessageEnum, EELFResolvableErrorEnum {
DISTRIBUTION_EVENT, //
MESSAGE_AUDIT, //
import java.util.function.BiConsumer;
import java.util.function.Consumer;
-import javax.servlet.ServletRequest;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response.Status;
+import jakarta.servlet.ServletRequest;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response.Status;
import org.apache.commons.lang3.time.StopWatch;
import org.onap.aai.babel.request.RequestHeaders;
clientHost = servletRequest.getRemoteHost();
clientIPAddress = servletRequest.getRemoteAddr();
- if (!partnerName.isPresent()) {
+ if (partnerName.isEmpty()) {
partnerName = Optional.ofNullable(clientHost);
}
}
log.debug("Getting TOSCA Mappings Configuration");
File file = new File(configLocation);
if (!file.exists()) {
- throw new IllegalArgumentException(String.format(GENERATOR_AAI_CONFIGFILE_NOT_FOUND, configLocation));
+ throw new IllegalArgumentException(GENERATOR_AAI_CONFIGFILE_NOT_FOUND.formatted(configLocation));
}
GroupConfiguration config;
}
if (resourceModel.hasWidgetType("ALLOTTED_RESOURCE") && !foundProvidingService) {
- throw new XmlArtifactGenerationException(String.format(GENERATOR_AAI_PROVIDING_SERVICE_MISSING,
+ throw new XmlArtifactGenerationException(GENERATOR_AAI_PROVIDING_SERVICE_MISSING.formatted(
Optional.ofNullable(resourceModel.getModelId()).orElse("<null ID>")));
}
}
*/
private List<Resource> generateResourcesAndWidgets(final ArrayList<NodeTemplate> memberNodes,
final Resource groupModel) throws XmlArtifactGenerationException {
- log.debug(String.format("Processing member nodes for Group %s (invariant UUID %s)", //
+ log.debug("Processing member nodes for Group %s (invariant UUID %s)".formatted( //
groupModel.getModelName(), groupModel.getModelId()));
List<Resource> resources = new ArrayList<>();
String nodeTypeName = nodeTemplate.getType();
final String metadataType = nodeTemplate.getMetaData().getValue("type");
- log.debug(String.format("Get model for %s (metadata type %s)", nodeTypeName, metadataType));
+ log.debug("Get model for %s (metadata type %s)".formatted(nodeTypeName, metadataType));
Resource memberModel = Model.getModelFor(nodeTypeName, metadataType);
if (memberModel != null) {
memberModel.populateModelIdentificationInformation(nodeTemplate.getMetaData().getAllProperties());
- log.debug(String.format("Generating grouped %s (%s) from TOSCA type %s",
+ log.debug("Generating grouped %s (%s) from TOSCA type %s".formatted(
memberModel.getClass().getSuperclass().getSimpleName(), memberModel.getClass(), nodeTypeName));
addRelatedModel(groupModel, memberModel);
if (nodeProperties == null || nodeProperties.get("providing_service_uuid") == null
|| nodeProperties.get("providing_service_invariant_uuid") == null) {
throw new IllegalArgumentException(
- String.format(GENERATOR_AAI_PROVIDING_SERVICE_METADATA_MISSING, resourceModel.getModelId()));
+ GENERATOR_AAI_PROVIDING_SERVICE_METADATA_MISSING.formatted(resourceModel.getModelId()));
}
Map<String, String> properties = populateStringProperties(nodeProperties);
properties.put(VERSION, "1.0");
package org.onap.aai.babel.request;
import java.util.Optional;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MultivaluedMap;
/** Bean to represent the ECOMP request/transaction IDs required for EELF logging. */
public class RequestHeaders {
*/
package org.onap.aai.babel.service;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
import org.onap.aai.auth.AAIAuthException;
import org.onap.aai.babel.service.data.BabelRequest;
import java.util.Base64;
import java.util.List;
-import javax.ws.rs.core.*;
-import javax.ws.rs.core.Response.Status;
+import jakarta.ws.rs.core.*;
+import jakarta.ws.rs.core.Response.Status;
import org.apache.commons.lang3.time.StopWatch;
import org.onap.aai.babel.csar.CsarConverterException;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.time.temporal.Temporal;
-import javax.ws.rs.DefaultValue;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
+import jakarta.ws.rs.DefaultValue;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
import org.springframework.stereotype.Service;
/**
*/
package org.onap.aai.babel.util;
+import java.io.Serial;
+
/** This exception is thrown when the request fails validation. */
public class RequestValidationException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
/**
import org.onap.aai.babel.xml.generator.data.GenerationData;
import org.onap.aai.babel.xml.generator.data.GeneratorUtil;
import org.onap.aai.babel.xml.generator.data.GroupType;
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response;
/**
* This class is responsible for generating XML model artifacts from a collection of CSAR artifacts.
package org.onap.aai.babel.xml.generator;
+import java.io.Serial;
+
/**
* This class represents a fatal exception encountered when generating an Artifact.
*
*/
public class XmlArtifactGenerationException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
/**
String configLocation = System.getProperty(ArtifactGeneratorToscaParser.PROPERTY_TOSCA_MAPPING_FILE);
if (configLocation == null) {
throw new IllegalArgumentException(
- String.format(ArtifactGeneratorToscaParser.GENERATOR_AAI_CONFIGLOCATION_NOT_FOUND,
+ ArtifactGeneratorToscaParser.GENERATOR_AAI_CONFIGLOCATION_NOT_FOUND.formatted(
ArtifactGeneratorToscaParser.PROPERTY_TOSCA_MAPPING_FILE));
}
ArrayList<String> members = group.getMembers();
if (members != null && members.contains(nodeTemplate.getName())
&& WidgetConfigurationUtil.isSupportedInstanceGroup(group.getType())) {
- log.debug(String.format("Adding group %s (type %s) with members %s", group.getName(),
+ log.debug("Adding group %s (type %s) with members %s".formatted(group.getName(),
group.getType(), members));
Resource groupModel = parser.createInstanceGroupModel(
} else {
String versionRegex = "^\\d*\\.\\d*$";
if (!(serviceVersion.matches(versionRegex))) {
- throw new IllegalArgumentException(String.format(GENERATOR_AAI_INVALID_SERVICE_VERSION));
+ throw new IllegalArgumentException(GENERATOR_AAI_INVALID_SERVICE_VERSION.formatted());
}
}
return serviceVersion;
import java.io.StringWriter;
import java.util.Collection;
import java.util.List;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
+import jakarta.xml.bind.JAXBContext;
+import jakarta.xml.bind.JAXBException;
+import jakarta.xml.bind.Marshaller;
import org.onap.aai.babel.logging.ApplicationMsgs;
import org.onap.aai.babel.logging.LogHelper;
import org.onap.aai.babel.xml.generator.XmlArtifactGenerationException;
*/
package org.onap.aai.babel.xml.generator.error;
+import java.io.Serial;
+
public class IllegalAccessException extends RuntimeException {
+ @Serial
private static final long serialVersionUID = 1L;
public IllegalAccessException(String message) {
@Override
public boolean equals(Object obj) {
- if (obj instanceof Resource) {
- return getModelNameVersionId().equals(((Resource) obj).getModelNameVersionId());
+ if (obj instanceof Resource resource) {
+ return getModelNameVersionId().equals(resource.getModelNameVersionId());
}
return false;
}
@Override
public boolean equals(Object obj) {
boolean isEqual = false;
- if (obj instanceof Widget) {
- Widget other = (Widget) obj;
+ if (obj instanceof Widget other) {
if (getId().equals(other.getId())) {
other.keys.addAll(this.keys);
isEqual = true;
spring.main.allow-bean-definition-overriding=true
server.servlet.context-path=/services/babel-service
logging.config=${CONFIG_HOME}/logback.xml
+# Logging pattern containing traceId and spanId; no longer provided through Sleuth by default
+logging.pattern.level="%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]"
tosca.mappings.config=${CONFIG_HOME}/tosca-mappings.json
spring.application.name=aai-babel
-spring.sleuth.enabled=true
+management.tracing.enabled=true
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
management.endpoints.web.exposure.include=*
<appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
<!-- allow only events with a level below INFO, that is TRACE and DEBUG -->
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
- <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">
- <expression><![CDATA[e.level.toInt() < INFO.toInt()]]></expression>
- </evaluator>
- <OnMismatch>DENY</OnMismatch>
- <OnMatch>NEUTRAL</OnMatch>
- </filter>
+ <evaluator class="ch.qos.logback.classic.boolex.JaninoEventEvaluator">
+ <expression>throwable instanceof java.io.IOException</expression>
+ </evaluator>
+ <OnMatch>DENY</OnMatch>
+ <OnMismatch>NEUTRAL</OnMismatch>
+</filter>
<queueSize>256</queueSize>
<appender-ref ref="STDOUT" />
<includeCallerData>false</includeCallerData>
import java.io.IOException;
import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.core.PathSegment;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.core.PathSegment;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.UriInfo;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.nio.file.Paths;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
Path cachedLog = cachedLogMap.get(filenamePrefix);
if (cachedLog == null) {
- Optional<Path> latestFilePath = Files.list(Paths.get(logDirectory))
+ Optional<Path> latestFilePath = Files.list(Path.of(logDirectory))
.filter(f -> Files.isDirectory(f) == false && f.getFileName().toString().startsWith(filenamePrefix))
.max(Comparator.comparingLong(f -> f.toFile().lastModified()));
if (latestFilePath.isPresent()) {
import com.att.eelf.configuration.EELFManager;
import java.io.IOException;
import java.util.Arrays;
-import javax.servlet.ServletRequest;
-import javax.ws.rs.core.MultivaluedMap;
+import jakarta.servlet.ServletRequest;
+import jakarta.ws.rs.core.MultivaluedMap;
import org.apache.commons.lang3.time.StopWatch;
import org.junit.jupiter.api.Assertions;
import java.util.Map.Entry;
import java.util.Optional;
import javax.security.auth.x500.X500Principal;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MultivaluedHashMap;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.UriInfo;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MultivaluedHashMap;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MultivaluedHashMap;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.onap.aai.babel.request.RequestHeaders;
import java.net.URL;
import java.nio.charset.Charset;
import java.nio.file.Files;
-import java.nio.file.Paths;
+import java.nio.file.Path;
import java.util.Base64;
import java.util.HashMap;
import java.util.List;
}
public String readstringFromFile(String resourceFile) throws IOException, URISyntaxException {
- return Files.lines(Paths.get(getResource(resourceFile).toURI())).collect(Collectors.joining());
+ return Files.lines(Path.of(getResource(resourceFile).toURI())).collect(Collectors.joining());
}
/**
-spring.sleuth.enabled=false
+# Logging pattern containing traceId and spanId; no longer provided through Sleuth by default
+logging.pattern.level="%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]"
+management.tracing.enabled=false
server.port= 0
spring.main.allow-bean-definition-overriding= true
+logging.level.root=INFO
-[{"name":"AAI-29NFOD_S-service-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v30\">\n <model-invariant-id>29NFOD_S-invariant-id</model-invariant-id>\n <model-type>service</model-type>\n <model-role>Network L1-3</model-role>\n <model-vers>\n <model-ver>\n <model-version-id>29NFOD_S-version-id</model-version-id>\n <model-name>29NFOD_S</model-name>\n <model-version>1.0</model-version>\n <model-description>29NFOD</model-description>\n <model-elements>\n <model-element>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements>\n <model-element>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>29NFOD 0-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>29NFOD 0-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n </model-elements>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>service-instance-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>service-instance-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n </model-elements>\n </model-ver>\n </model-vers>\n</model>"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v30\">\n <model-invariant-id>29NFOD 0-invariant-id</model-invariant-id>\n <model-type>resource</model-type>\n <model-vers>\n <model-ver>\n <model-version-id>29NFOD 0-version-id</model-version-id>\n <model-name>29NFOD</model-name>\n <model-version>1.0</model-version>\n <model-description>29NFOD</model-description>\n <model-elements>\n <model-element>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>generic-vnf-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>generic-vnf-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n </model-elements>\n </model-ver>\n </model-vers>\n</model>"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}]
+[{"name":"AAI-29NFOD_S-service-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v30\">\n <model-invariant-id>29NFOD_S-invariant-id</model-invariant-id>\n <model-type>service</model-type>\n <model-role>Network L1-3</model-role>\n <model-vers>\n <model-ver>\n <model-version-id>29NFOD_S-version-id</model-version-id>\n <model-name>29NFOD_S</model-name>\n <model-version>1.0</model-version>\n <model-description>29NFOD</model-description>\n <model-elements>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>service-instance-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>service-instance-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>29NFOD 0-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>29NFOD 0-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n </model-element>\n </model-elements>\n </model-element>\n </model-elements>\n </model-ver>\n </model-vers>\n</model>"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v30\">\n <model-invariant-id>29NFOD 0-invariant-id</model-invariant-id>\n <model-type>resource</model-type>\n <model-vers>\n <model-ver>\n <model-version-id>29NFOD 0-version-id</model-version-id>\n <model-name>29NFOD</model-name>\n <model-version>1.0</model-version>\n <model-description>29NFOD</model-description>\n <model-elements>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>generic-vnf-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>generic-vnf-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n </model-element>\n </model-elements>\n </model-ver>\n </model-vers>\n</model>"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}]
\ No newline at end of file
-[{"name":"AAI-29NFOD_S-service-0.1.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v30\">\n <model-invariant-id>29NFOD_S-invariant-id</model-invariant-id>\n <model-type>service</model-type>\n <model-role>Network L1-3</model-role>\n <model-vers>\n <model-ver>\n <model-version-id>29NFOD_S-version-id</model-version-id>\n <model-name>29NFOD_S</model-name>\n <model-version>0.1</model-version>\n <model-description>29NFOD</model-description>\n <model-elements>\n <model-element>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements>\n <model-element>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>29NFOD 0-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>29NFOD 0-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n </model-elements>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>service-instance-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>service-instance-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n </model-elements>\n </model-ver>\n </model-vers>\n</model>"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v30\">\n <model-invariant-id>29NFOD 0-invariant-id</model-invariant-id>\n <model-type>resource</model-type>\n <model-vers>\n <model-ver>\n <model-version-id>29NFOD 0-version-id</model-version-id>\n <model-name>29NFOD</model-name>\n <model-version>1.0</model-version>\n <model-description>29NFOD</model-description>\n <model-elements>\n <model-element>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>generic-vnf-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>generic-vnf-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n </model-elements>\n </model-ver>\n </model-vers>\n</model>"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}]
+[{"name":"AAI-29NFOD_S-service-0.1.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v30\">\n <model-invariant-id>29NFOD_S-invariant-id</model-invariant-id>\n <model-type>service</model-type>\n <model-role>Network L1-3</model-role>\n <model-vers>\n <model-ver>\n <model-version-id>29NFOD_S-version-id</model-version-id>\n <model-name>29NFOD_S</model-name>\n <model-version>0.1</model-version>\n <model-description>29NFOD</model-description>\n <model-elements>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>service-instance-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>service-instance-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>29NFOD 0-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>29NFOD 0-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n </model-element>\n </model-elements>\n </model-element>\n </model-elements>\n </model-ver>\n </model-vers>\n</model>"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v30\">\n <model-invariant-id>29NFOD 0-invariant-id</model-invariant-id>\n <model-type>resource</model-type>\n <model-vers>\n <model-ver>\n <model-version-id>29NFOD 0-version-id</model-version-id>\n <model-name>29NFOD</model-name>\n <model-version>1.0</model-version>\n <model-description>29NFOD</model-description>\n <model-elements>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>generic-vnf-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>generic-vnf-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n </model-element>\n </model-elements>\n </model-ver>\n </model-vers>\n</model>"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}]
\ No newline at end of file
-[{"name":"AAI-Vscpaas_Test-service-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v30\">\n <model-invariant-id>a8db6285-20ca-4fd3-9c85-e267bdb013f9</model-invariant-id>\n <model-type>service</model-type>\n <model-role>Network L4+</model-role>\n <model-vers>\n <model-ver>\n <model-version-id>7f7f6fa4-275a-488f-8b3e-691a0765d57e</model-version-id>\n <model-name>Vscpaas_Test</model-name>\n <model-version>1.0</model-version>\n <model-description>Vscpaas_Test</model-description>\n <model-elements>\n <model-element>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements>\n <model-element>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>2e42bac2-318a-410c-b8ff-3b3a31351be7</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>b2b88a73-5c55-4984-99dd-a35c55935d14</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n </model-elements>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>service-instance-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>service-instance-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n </model-elements>\n </model-ver>\n </model-vers>\n</model>"},{"name":"AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v30\">\n <model-invariant-id>6f288081-b321-47c9-b038-6de70079a3bf</model-invariant-id>\n <model-type>resource</model-type>\n <model-vers>\n <model-ver>\n <model-version-id>06258c44-ab48-4b4b-a5db-16892f7d1e76</model-version-id>\n <model-name>ScpTestVsp..asc_heat-int2..module-0</model-name>\n <model-version>1</model-version>\n <model-description></model-description>\n <model-elements>\n <model-element>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements>\n <model-element>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements>\n <model-element>\n <new-data-del-flag>F</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>image-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>image-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n <model-element>\n <new-data-del-flag>F</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>flavor-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>flavor-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n <model-element>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>vnfc-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>vnfc-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n <model-element>\n <new-data-del-flag>F</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>tenant-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>tenant-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n </model-elements>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>vserver-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>vserver-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n <model-element>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>l3-network-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>l3-network-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n </model-elements>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>vf-module-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>vf-module-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n </model-elements>\n </model-ver>\n </model-vers>\n</model>"},{"name":"AAI-SCP-Test-VSP-resource-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v30\">\n <model-invariant-id>b2b88a73-5c55-4984-99dd-a35c55935d14</model-invariant-id>\n <model-type>resource</model-type>\n <model-vers>\n <model-ver>\n <model-version-id>2e42bac2-318a-410c-b8ff-3b3a31351be7</model-version-id>\n <model-name>SCP-Test-VSP</model-name>\n <model-version>1.0</model-version>\n <model-description>SCP Test VSP</model-description>\n <model-elements>\n <model-element>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements>\n <model-element>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>06258c44-ab48-4b4b-a5db-16892f7d1e76</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>6f288081-b321-47c9-b038-6de70079a3bf</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n </model-elements>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>generic-vnf-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>generic-vnf-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n </model-element>\n </model-elements>\n </model-ver>\n </model-vers>\n</model>"}]
+[{"name":"AAI-Vscpaas_Test-service-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v30\">\n <model-invariant-id>a8db6285-20ca-4fd3-9c85-e267bdb013f9</model-invariant-id>\n <model-type>service</model-type>\n <model-role>Network L4+</model-role>\n <model-vers>\n <model-ver>\n <model-version-id>7f7f6fa4-275a-488f-8b3e-691a0765d57e</model-version-id>\n <model-name>Vscpaas_Test</model-name>\n <model-version>1.0</model-version>\n <model-description>Vscpaas_Test</model-description>\n <model-elements>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>service-instance-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>service-instance-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>2e42bac2-318a-410c-b8ff-3b3a31351be7</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>b2b88a73-5c55-4984-99dd-a35c55935d14</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n </model-element>\n </model-elements>\n </model-element>\n </model-elements>\n </model-ver>\n </model-vers>\n</model>"},{"name":"AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v30\">\n <model-invariant-id>6f288081-b321-47c9-b038-6de70079a3bf</model-invariant-id>\n <model-type>resource</model-type>\n <model-vers>\n <model-ver>\n <model-version-id>06258c44-ab48-4b4b-a5db-16892f7d1e76</model-version-id>\n <model-name>ScpTestVsp..asc_heat-int2..module-0</model-name>\n <model-version>1</model-version>\n <model-description></model-description>\n <model-elements>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>vf-module-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>vf-module-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>vserver-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>vserver-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>image-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>image-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>F</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n </model-element>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>flavor-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>flavor-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>F</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n </model-element>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>vnfc-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>vnfc-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n </model-element>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>tenant-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>tenant-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>F</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n </model-element>\n </model-elements>\n </model-element>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>l3-network-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>l3-network-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n </model-element>\n </model-elements>\n </model-element>\n </model-elements>\n </model-ver>\n </model-vers>\n</model>"},{"name":"AAI-SCP-Test-VSP-resource-1.0.xml","type":"MODEL","payload":"<model xmlns=\"http://org.onap.aai.inventory/v30\">\n <model-invariant-id>b2b88a73-5c55-4984-99dd-a35c55935d14</model-invariant-id>\n <model-type>resource</model-type>\n <model-vers>\n <model-ver>\n <model-version-id>2e42bac2-318a-410c-b8ff-3b3a31351be7</model-version-id>\n <model-name>SCP-Test-VSP</model-name>\n <model-version>1.0</model-version>\n <model-description>SCP Test VSP</model-description>\n <model-elements>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>generic-vnf-version-id</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>generic-vnf-invariant-id</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements>\n <model-element>\n <relationship-list>\n <relationship>\n <related-to>model-ver</related-to>\n <relationship-data>\n <relationship-key>model-ver.model-version-id</relationship-key>\n <relationship-value>06258c44-ab48-4b4b-a5db-16892f7d1e76</relationship-value>\n </relationship-data>\n <relationship-data>\n <relationship-key>model.model-invariant-id</relationship-key>\n <relationship-value>6f288081-b321-47c9-b038-6de70079a3bf</relationship-value>\n </relationship-data>\n </relationship>\n </relationship-list>\n <new-data-del-flag>T</new-data-del-flag>\n <cardinality>unbounded</cardinality>\n <model-elements/>\n </model-element>\n </model-elements>\n </model-element>\n </model-elements>\n </model-ver>\n </model-vers>\n</model>"}]
\ No newline at end of file