Fix empty interface operation exception 76/131376/3
authorMichaelMorris <michael.morris@est.tech>
Fri, 30 Sep 2022 11:33:48 +0000 (12:33 +0100)
committerAndr� Schmid <andre.schmid@est.tech>
Thu, 6 Oct 2022 12:59:34 +0000 (12:59 +0000)
also model not being considered when getting interface type definition during VFC import

Signed-off-by: MichaelMorris <michael.morris@est.tech>
Issue-ID: SDC-4196
Change-Id: I353d88273acad3047e163ea259e7965c2f3340c0

catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InterfaceDefinitionHandler.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InterfaceLifecycleTypeImportManager.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceImportParseLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/tosca/InterfacesOperationsConverter.java

index 291e973..aa15d8a 100644 (file)
@@ -159,6 +159,10 @@ public class InterfaceDefinitionHandler {
         final OperationDataDefinition operation = new OperationDataDefinition();
         operation.setUniqueId(UUID.randomUUID().toString());
         operation.setName(operationName);
+        
+        if (MapUtils.isEmpty(operationDefinitionMap)) {
+            return operation;
+        }
         Object operationDescription = operationDefinitionMap.get(
                 DESCRIPTION.getElementName()
         );
index b757faf..b371a8c 100644 (file)
@@ -22,12 +22,14 @@ package org.openecomp.sdc.be.components.impl;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Optional;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import javax.annotation.Resource;
 
@@ -146,8 +148,10 @@ public class InterfaceLifecycleTypeImportManager {
                 .asList(ToscaTagNamesEnum.DERIVED_FROM.getElementName(), ToscaTagNamesEnum.DESCRIPTION.getElementName(),
                     ToscaTagNamesEnum.VERSION.getElementName(), ToscaTagNamesEnum.METADATA.getElementName(),
                     ToscaTagNamesEnum.INPUTS.getElementName(), ToscaTagNamesEnum.NOTIFICATIONS.getElementName());
-            operationsMap = toscaJson.entrySet().stream().filter(interfaceEntry -> !entitySchemaEntryList.contains(interfaceEntry.getKey()))
-                .collect(Collectors.toMap(Entry::getKey, Entry::getValue));
+            
+            Stream<Entry<String, Object>> oldFormatOperations =  toscaJson.entrySet().stream().filter(interfaceEntry -> !entitySchemaEntryList.contains(interfaceEntry.getKey()));
+            operationsMap = new HashMap<>();
+            oldFormatOperations.forEach(entry -> operationsMap.put(entry.getKey(), entry.getValue()));
         }
         interfaceDef.setOperationsMap(handleOperations(operationsMap));
         return interfaceDef;
@@ -162,6 +166,9 @@ public class InterfaceLifecycleTypeImportManager {
     }
 
     private Operation createOperation(final Map<String, Object> toscaOperationMap) {
+        if (toscaOperationMap == null) {
+            return new Operation();
+        }
         final Operation operation = new Operation();
         operation.setDescription((String) toscaOperationMap.get(ToscaTagNamesEnum.DESCRIPTION.getElementName()));
         return operation;
index 92158d0..992216d 100644 (file)
@@ -3821,7 +3821,7 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
             while (intItr.hasNext() && eitherResult.isLeft()) {
                 InterfaceDefinition interfaceDefinition = intItr.next();
                 String intType = interfaceDefinition.getUniqueId();
-                Either<InterfaceDefinition, StorageOperationStatus> eitherCapTypeFound = interfaceTypeOperation.getInterface(intType);
+                Either<InterfaceDefinition, StorageOperationStatus> eitherCapTypeFound = interfaceTypeOperation.getInterface(UniqueIdBuilder.buildInterfaceTypeUid(resource.getModel(), intType));
                 if (eitherCapTypeFound.isRight()) {
                     if (eitherCapTypeFound.right().value() == StorageOperationStatus.NOT_FOUND) {
                         BeEcompErrorManager.getInstance()
index b97645c..43b88fd 100644 (file)
@@ -516,7 +516,7 @@ public class ServiceImportParseLogic {
             while (intItr.hasNext() && eitherResult.isLeft()) {
                 InterfaceDefinition interfaceDefinition = intItr.next();
                 String intType = interfaceDefinition.getUniqueId();
-                Either<InterfaceDefinition, StorageOperationStatus> eitherCapTypeFound = interfaceTypeOperation.getInterface(intType);
+                Either<InterfaceDefinition, StorageOperationStatus> eitherCapTypeFound = interfaceTypeOperation.getInterface(UniqueIdBuilder.buildInterfaceTypeUid(resource.getModel(), intType));
                 if (eitherCapTypeFound.isRight()) {
                     if (eitherCapTypeFound.right().value() == StorageOperationStatus.NOT_FOUND) {
                         BeEcompErrorManager.getInstance()
index e373f5d..ce50387 100644 (file)
@@ -298,6 +298,9 @@ public class InterfacesOperationsConverter {
                                                         final OperationDataDefinition operationDataDefinition,
                                                         final ToscaLifecycleOperationDefinition toscaOperation,
                                                         final Map<String, DataTypeDefinition> dataTypes) {
+        if (operationDataDefinition.getImplementation() == null) {
+            return;
+        }
         final String operationArtifactPath;
         final ToscaInterfaceOperationImplementation toscaInterfaceOperationImplementation = new ToscaInterfaceOperationImplementation();
         toscaInterfaceOperationImplementation.setPrimary(new ToscaArtifactDefinition());