aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/onap/aai/babel/csar/CsarToXmlConverter.java2
-rw-r--r--src/main/java/org/onap/aai/babel/csar/extractor/YamlExtractor.java6
-rw-r--r--src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java36
-rw-r--r--src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java31
-rw-r--r--src/main/java/org/onap/aai/babel/xml/generator/model/Resource.java19
-rw-r--r--src/test/java/org/onap/aai/babel/csar/extractor/YamlExtractorTest.java8
-rw-r--r--src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java3
-rw-r--r--src/test/java/org/onap/aai/babel/util/ArtifactTestUtils.java8
8 files changed, 68 insertions, 45 deletions
diff --git a/src/main/java/org/onap/aai/babel/csar/CsarToXmlConverter.java b/src/main/java/org/onap/aai/babel/csar/CsarToXmlConverter.java
index 9e1ff6e..6115f8f 100644
--- a/src/main/java/org/onap/aai/babel/csar/CsarToXmlConverter.java
+++ b/src/main/java/org/onap/aai/babel/csar/CsarToXmlConverter.java
@@ -75,7 +75,7 @@ public class CsarToXmlConverter {
logger.debug(xmlArtifacts.size() + " XML artifact(s) have been generated");
} catch (InvalidArchiveException e) {
throw new CsarConverterException(
- "An error occurred trying to extract the YMAL files from the csar file : " + e);
+ "An error occurred trying to extract the YAML files from the CSAR file : " + e);
} catch (XmlArtifactGenerationException e) {
throw new CsarConverterException(
"An error occurred trying to generate XML files from a collection of YAML files : " + e);
diff --git a/src/main/java/org/onap/aai/babel/csar/extractor/YamlExtractor.java b/src/main/java/org/onap/aai/babel/csar/extractor/YamlExtractor.java
index 15d77a1..424e661 100644
--- a/src/main/java/org/onap/aai/babel/csar/extractor/YamlExtractor.java
+++ b/src/main/java/org/onap/aai/babel/csar/extractor/YamlExtractor.java
@@ -75,11 +75,11 @@ public class YamlExtractor {
}
}
if (ymlFiles.isEmpty()) {
- throw new InvalidArchiveException("No valid YAML files were found in the csar file.");
+ throw new InvalidArchiveException("No valid YAML files were found in the CSAR file.");
}
} catch (IOException e) {
throw new InvalidArchiveException(
- "An error occurred trying to create a ZipFile. Is the content being converted really a csar file?",
+ "An error occurred trying to create a ZipFile. Is the content being converted really a CSAR file?",
e);
}
@@ -90,7 +90,7 @@ public class YamlExtractor {
/**
* Throw an error if the supplied parameters are not valid.
- *
+ *
* @param archive
* @param name
* @param version
diff --git a/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java b/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java
index 0777e51..2816cb5 100644
--- a/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java
+++ b/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java
@@ -351,10 +351,13 @@ public class ArtifactGeneratorToscaParser {
*/
private void processVfModule(List<Resource> resources, Model vfModel, Group groupDefinition,
NodeTemplate serviceNode, Resource groupModel) throws XmlArtifactGenerationException {
- groupModel.populateModelIdentificationInformation(
- mergeProperties(groupDefinition.getMetadata().getAllProperties(), groupDefinition.getProperties()));
+ Metadata metadata = groupDefinition.getMetadata();
+ Map<String, String> mergedProperties =
+ mergeProperties(metadata == null ? Collections.emptyMap() : metadata.getAllProperties(),
+ groupDefinition.getProperties());
+ groupModel.populateModelIdentificationInformation(mergedProperties);
SubstitutionMappings substitutionMappings = serviceNode.getSubMappingToscaTemplate();
if (substitutionMappings != null) {
processVfModuleGroup(groupModel, getVfModuleMembers(substitutionMappings,
@@ -457,29 +460,34 @@ public class ArtifactGeneratorToscaParser {
* parent Resource
* @param metaData
* for populating the Resource IDs
- * @param resourceNode
- * any Model (will be ignored if not a Resource)
+ * @param childResource
+ * a child Resource (will be ignored if this is a Widget type)
* @param nodeProperties
* the node properties
* @return whether or not a ProvidingService was processed
*/
- private boolean processModel(Model resourceModel, Metadata metaData, Resource resourceNode,
+ private boolean processModel(Model resourceModel, Metadata metaData, Resource childResource,
Map<String, Property> nodeProperties) {
- boolean foundProvidingService = resourceNode != null
- && (boolean) Optional.ofNullable(resourceNode.getProperties().get("providingService")).orElse(false);
+ boolean isProvidingService = childResource != null
+ && (boolean) Optional.ofNullable(childResource.getProperties().get("providingService")).orElse(false);
- if (foundProvidingService) {
- processProvidingService(resourceModel, resourceNode, nodeProperties);
- } else if (resourceNode != null && resourceNode.getModelType() == ModelType.RESOURCE
- && !resourceNode.hasWidgetType("L3_NET")) {
+ if (isProvidingService) {
+ processProvidingService(resourceModel, childResource, nodeProperties);
+ } else if (childResource != null && childResource.getModelType() == ModelType.RESOURCE
+ && !childResource.hasWidgetType("L3_NET")) {
if (metaData != null) {
- resourceNode.populateModelIdentificationInformation(metaData.getAllProperties());
+ childResource.populateModelIdentificationInformation(metaData.getAllProperties());
}
- resourceModel.addResource(resourceNode);
+ resourceModel.addResource(childResource);
}
- return foundProvidingService;
+ return isProvidingService;
}
+ /**
+ * @param resourceModel
+ * @param resourceNode
+ * @param nodeProperties
+ */
private void processProvidingService(Model resourceModel, Resource resourceNode,
Map<String, Property> nodeProperties) {
if (nodeProperties == null || nodeProperties.get("providing_service_uuid") == null
diff --git a/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java b/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java
index 32237b5..424b1a6 100644
--- a/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java
+++ b/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java
@@ -105,7 +105,7 @@ public class AaiArtifactGenerator implements ArtifactGenerator {
ISdcCsarHelper csarHelper =
SdcToscaParserFactory.getInstance().getSdcCsarHelper(csarPath.toAbsolutePath().toString());
return generateAllArtifacts(validateServiceVersion(additionalParams), csarHelper);
- } catch (SdcToscaParserException | XmlArtifactGenerationException e) {
+ } catch (SdcToscaParserException | ClassCastException | XmlArtifactGenerationException e) {
log.error(ApplicationMsgs.INVALID_CSAR_FILE, e);
return createErrorData(e);
} finally {
@@ -131,17 +131,11 @@ public class AaiArtifactGenerator implements ArtifactGenerator {
*/
public GenerationData generateAllArtifacts(final String serviceVersion, ISdcCsarHelper csarHelper)
throws XmlArtifactGenerationException {
- List<NodeTemplate> serviceNodeTemplates =
- ToscaParser.getServiceNodeTemplates(csarHelper).collect(Collectors.toList());
- if (serviceNodeTemplates == null) {
- throw new IllegalArgumentException(GENERATOR_AAI_ERROR_MISSING_SERVICE_TOSCA);
- }
-
Service serviceModel = createServiceModel(serviceVersion, csarHelper.getServiceMetadataAllProperties());
MDC.put(MDC_PARAM_MODEL_INFO, serviceModel.getModelName() + "," + getArtifactLabel(serviceModel));
- List<Resource> resources = generateResourceModels(csarHelper, serviceNodeTemplates, serviceModel);
+ List<Resource> resources = generateResourceModels(csarHelper, serviceModel);
// Generate the A&AI XML model for the Service.
final String serviceArtifact = modelGenerator.generateModelFor(serviceModel);
@@ -183,18 +177,21 @@ public class AaiArtifactGenerator implements ArtifactGenerator {
/**
* @param csarHelper
- * @param serviceNodeTemplates
* @param serviceModel
* @return the generated Models
* @throws XmlArtifactGenerationException
* if the configured widget mappings do not support processed widget type(s)
*/
- private List<Resource> generateResourceModels(ISdcCsarHelper csarHelper, List<NodeTemplate> serviceNodeTemplates,
- Service serviceModel) throws XmlArtifactGenerationException {
- final ArtifactGeneratorToscaParser parser = new ArtifactGeneratorToscaParser(csarHelper);
+ private List<Resource> generateResourceModels(ISdcCsarHelper csarHelper, Service serviceModel)
+ throws XmlArtifactGenerationException {
+ List<NodeTemplate> serviceNodeTemplates =
+ ToscaParser.getServiceNodeTemplates(csarHelper).collect(Collectors.toList());
+ if (serviceNodeTemplates == null) {
+ throw new IllegalArgumentException(GENERATOR_AAI_ERROR_MISSING_SERVICE_TOSCA);
+ }
+ final ArtifactGeneratorToscaParser parser = new ArtifactGeneratorToscaParser(csarHelper);
List<Resource> resources = new ArrayList<>();
-
final List<Group> serviceGroups = ToscaParser.getServiceLevelGroups(csarHelper);
for (NodeTemplate nodeTemplate : serviceNodeTemplates) {
if (nodeTemplate.getMetaData() != null) {
@@ -436,15 +433,17 @@ public class AaiArtifactGenerator implements ArtifactGenerator {
private int hashCodeUuId(String uuId) {
int hashcode = 0;
- for (int i = 0; i < uuId.length(); i++) {
- hashcode = 31 * hashcode + uuId.charAt(i);
+ if (uuId != null) {
+ for (int i = 0; i < uuId.length(); i++) {
+ hashcode = 31 * hashcode + uuId.charAt(i);
+ }
}
return hashcode;
}
private String truncateName(String name) {
String truncatedName = name;
- if (name.length() >= 200) {
+ if (name != null && name.length() >= 200) {
truncatedName = name.substring(0, 199);
}
return truncatedName;
diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/Resource.java b/src/main/java/org/onap/aai/babel/xml/generator/model/Resource.java
index 04c69bb..8c01a50 100644
--- a/src/main/java/org/onap/aai/babel/xml/generator/model/Resource.java
+++ b/src/main/java/org/onap/aai/babel/xml/generator/model/Resource.java
@@ -21,9 +21,12 @@
package org.onap.aai.babel.xml.generator.model;
+import com.google.common.collect.ImmutableMap;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
import org.onap.aai.babel.xml.generator.XmlArtifactGenerationException;
import org.onap.aai.babel.xml.generator.types.ModelType;
@@ -135,9 +138,19 @@ public class Resource extends Model {
@Override
public String toString() {
- return "Resource [widget type=" + getWidgetType() + ", deleteFlag=" + deleteFlag + ", modelType=" + modelType
- + ", properties=" + properties + ", vserver=" + vserver + ", addlintf=" + addlintf + ", addvolume="
- + addvolume + ", members=" + members + "]";
+ return ImmutableMap.<String, String>builder() //
+ .put("Resource", Optional.ofNullable(getModelId()).orElse("null")) //
+ .put("widget type", getWidgetType().toString()) //
+ .put("deleteFlag", Boolean.toString(deleteFlag)) //
+ .put("modelType", modelType.toString()) //
+ .put("properties", properties.toString()) //
+ .put("vserver", Optional.ofNullable(vserver).map(Widget::toString).orElse("null")) //
+ .put("addlintf", Boolean.toString(addlintf)) //
+ .put("addvolume", Boolean.toString(addvolume)) //
+ .put("members", Optional.ofNullable(members).map(List::toString).orElse("null")) //
+ .build().entrySet().stream() //
+ .map(e -> e.getKey() + "=" + e.getValue()) //
+ .collect(Collectors.joining(", "));
}
private void addVolumeWidget(Widget widget) {
diff --git a/src/test/java/org/onap/aai/babel/csar/extractor/YamlExtractorTest.java b/src/test/java/org/onap/aai/babel/csar/extractor/YamlExtractorTest.java
index 5bb7763..20c3434 100644
--- a/src/test/java/org/onap/aai/babel/csar/extractor/YamlExtractorTest.java
+++ b/src/test/java/org/onap/aai/babel/csar/extractor/YamlExtractorTest.java
@@ -2,8 +2,8 @@
* ============LICENSE_START=======================================================
* org.onap.aai
* ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 European Software Marketing Ltd.
+ * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2019 European Software Marketing Ltd.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -91,7 +91,7 @@ public class YamlExtractorTest {
@Test
public void testInvalidContentSupplied() {
invalidArgumentsTest("This is a piece of nonsense and not a zip file".getBytes(), FOO, FOO,
- "An error occurred trying to create a ZipFile. Is the content being converted really a csar file?");
+ "An error occurred trying to create a ZipFile. Is the content being converted really a CSAR file?");
}
@Test
@@ -102,7 +102,7 @@ public class YamlExtractorTest {
} catch (Exception e) {
assertTrue("An instance of InvalidArchiveException should have been thrown.",
e instanceof InvalidArchiveException);
- assertEquals("Incorrect message was returned", "No valid YAML files were found in the csar file.",
+ assertEquals("Incorrect message was returned", "No valid YAML files were found in the CSAR file.",
e.getMessage());
}
}
diff --git a/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java b/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java
index 0673d04..55311a6 100644
--- a/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java
+++ b/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java
@@ -152,8 +152,7 @@ public class TestGenerateArtifactsServiceImpl {
* if the resource cannot be loaded
*/
private Response processJsonRequest(CsarTest csar) throws IOException, URISyntaxException {
- String jsonString = csar.getJsonRequest();
- return invokeService(jsonString);
+ return invokeService(csar.getJsonRequest());
}
/**
diff --git a/src/test/java/org/onap/aai/babel/util/ArtifactTestUtils.java b/src/test/java/org/onap/aai/babel/util/ArtifactTestUtils.java
index 066911e..a98b7c2 100644
--- a/src/test/java/org/onap/aai/babel/util/ArtifactTestUtils.java
+++ b/src/test/java/org/onap/aai/babel/util/ArtifactTestUtils.java
@@ -65,7 +65,7 @@ public class ArtifactTestUtils {
/**
* Load the Widget type mappings (resource).
- *
+ *
* @throws IOException
* if the configuration file is not loaded
*/
@@ -127,7 +127,11 @@ public class ArtifactTestUtils {
}
public String loadResourceAsString(String resourceName) throws IOException {
+ try {
return IOUtils.toString(getResource(resourceName), Charset.defaultCharset());
+ } catch (NullPointerException e) {
+ throw new IllegalArgumentException("No such resource " + resourceName);
+ }
}
public String getRequestJson(String resource) throws IOException {
@@ -144,7 +148,7 @@ public class ArtifactTestUtils {
/**
* Create Properties from the content of the named resource (e.g. a file on the classpath).
- *
+ *
* @param resourceName
* the resource name
* @return Properties loaded from the named resource