Merge "Added SDC SDKs section to Read the Docs"
[sdc.git] / openecomp-be / lib / openecomp-sdc-translator-lib / openecomp-sdc-translator-core / src / main / java / org / openecomp / sdc / translator / services / heattotosca / ConsolidationDataUtil.java
index 4e92372..5d1bb1c 100644 (file)
@@ -31,8 +31,10 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolida
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
+import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -153,10 +155,7 @@ public class ConsolidationDataUtil {
 
     if(isNestedResourceIdOccuresInDifferentNestedFiles(context, nestedHeatFileName,
         nestedNodeTemplateId)){
-      throw new CoreException((new ErrorCode.ErrorCodeBuilder())
-          .withMessage("Resource with id "
-              + nestedNodeTemplateId + " occures more than once in different addOn "
-              + "files").build());
+      throw new CoreException(new DuplicateResourceIdsInDifferentFilesErrorBuilder(nestedNodeTemplateId).build());
     }
 
     ConsolidationData consolidationData = context.getConsolidationData();
@@ -189,7 +188,8 @@ public class ConsolidationDataUtil {
   private static boolean isNestedResourceIdOccuresInDifferentNestedFiles(TranslationContext context,
                                                                          String nestedHeatFileName,
                                                                          String nestedNodeTemplateId) {
-    return context.getAllTranslatedResourceIdsFromDiffNestedFiles(nestedHeatFileName).contains(nestedNodeTemplateId);
+    return Objects.nonNull(nestedHeatFileName)
+        && context.getAllTranslatedResourceIdsFromDiffNestedFiles(nestedHeatFileName).contains(nestedNodeTemplateId);
   }
 
   /**
@@ -283,6 +283,7 @@ public class ConsolidationDataUtil {
       ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
           requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
           requirementId, requirementAssignment);
+
     }
   }
 
@@ -311,6 +312,10 @@ public class ConsolidationDataUtil {
     EntityConsolidationData entityConsolidationData = null;
     TranslationContext translationContext = translateTo.getContext();
     ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
+
+    translationContext.updateRequirementAssignmentIdIndex(ToscaUtil.getServiceTemplateFileName
+        (translateTo.getServiceTemplate()), translateTo.getResourceId(), requirementId);
+
     RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData(
         requirementId, requirementAssignment);
 
@@ -324,17 +329,24 @@ public class ConsolidationDataUtil {
           serviceTemplate, translateTo.getTranslatedId());
     } else if (consolidationEntityType == ConsolidationEntityType.VFC_NESTED
         || consolidationEntityType == ConsolidationEntityType.NESTED) {
-      //ConnectedOut data for nested is not updated
-      return;
+      entityConsolidationData =
+          getNestedTemplateConsolidationData(translationContext, serviceTemplate,
+              null,
+              translateTo.getTranslatedId());
     }
 
-    if (entityConsolidationData.getNodesConnectedOut() == null) {
-      entityConsolidationData.setNodesConnectedOut(new HashMap<>());
+    if(Objects.isNull(entityConsolidationData)){
+      return;
     }
+    if (entityConsolidationData != null) {
+      if (entityConsolidationData.getNodesConnectedOut() == null) {
+        entityConsolidationData.setNodesConnectedOut(new HashMap<>());
+      }
 
-    entityConsolidationData.getNodesConnectedOut()
-        .computeIfAbsent(nodeTemplateId, k -> new ArrayList<>())
-        .add(requirementAssignmentData);
+      entityConsolidationData.getNodesConnectedOut()
+          .computeIfAbsent(nodeTemplateId, k -> new ArrayList<>())
+          .add(requirementAssignmentData);
+    }
   }
 
   /**
@@ -385,14 +397,16 @@ public class ConsolidationDataUtil {
           serviceTemplate, translateTo.getHeatFileName(), dependentNodeTemplateId);
     }
 
-    if (entityConsolidationData.getNodesConnectedIn() == null) {
-      entityConsolidationData.setNodesConnectedIn(new HashMap<>());
-    }
+    if (entityConsolidationData != null) {
+      if (entityConsolidationData.getNodesConnectedIn() == null) {
+        entityConsolidationData.setNodesConnectedIn(new HashMap<>());
+      }
 
-    entityConsolidationData.getNodesConnectedIn()
-        .computeIfAbsent(sourceNodeTemplateId, k -> new ArrayList<>())
-        .add(requirementAssignmentData);
+      entityConsolidationData.getNodesConnectedIn()
+          .computeIfAbsent(sourceNodeTemplateId, k -> new ArrayList<>())
+          .add(requirementAssignmentData);
 
+    }
   }
 
   /**