import tosca bug
[sdc.git] / openecomp-be / lib / openecomp-tosca-converter-lib / openecomp-tosca-converter-core / src / main / java / org / openecomp / core / impl / GlobalSubstitutionServiceTemplate.java
index 778445c..4ff8af4 100644 (file)
@@ -67,7 +67,7 @@ public class GlobalSubstitutionServiceTemplate extends ServiceTemplate {
         setTosca_definitions_version(DEFININTION_VERSION);
     }
 
-    public Optional<Map<String, NodeType>> removeExistingGlobalTypes(Map<String, NodeType> nodes){
+    private Optional<Map<String, NodeType>> removeExistingGlobalTypes(Map<String, NodeType> nodes){
         Map<String, NodeType> nodeTypesToAdd = new HashMap<>();
         ServiceTemplate serviceTemplate = globalServiceTemplates.get("openecomp/nodes.yml");
 
@@ -75,13 +75,34 @@ public class GlobalSubstitutionServiceTemplate extends ServiceTemplate {
             return Optional.of(nodes);
         }
 
-        Map<String, NodeType> globalNodeTypes = serviceTemplate.getNode_types();
+        Map<String, NodeType> globalNodeTypes = getAllGlobalNodeTypes();
         for(Map.Entry<String, NodeType> nodeTypeEntry : nodes.entrySet()){
             if(!globalNodeTypes.containsKey(nodeTypeEntry.getKey())){
-                nodeTypesToAdd.put(nodeTypeEntry.getKey(), nodeTypeEntry.getValue());
+                Optional<NodeType> nodeType =
+                    ToscaConverterUtil
+                        .createObjectFromClass(nodeTypeEntry.getKey(), nodeTypeEntry.getValue(), NodeType.class);
+
+                nodeType
+                    .ifPresent(nodeTypeValue -> nodeTypesToAdd.put(nodeTypeEntry.getKey(), nodeTypeValue));
             }
         }
 
         return Optional.of(nodeTypesToAdd);
     }
+
+    private Map<String, NodeType> getAllGlobalNodeTypes(){
+        Map<String, NodeType> globalNodeTypes = new HashMap<>();
+
+        for(Map.Entry<String, ServiceTemplate> serviceTemplateEntry : globalServiceTemplates.entrySet()){
+            if(isNodesServiceTemplate(serviceTemplateEntry.getKey())){
+                globalNodeTypes.putAll(serviceTemplateEntry.getValue().getNode_types());
+            }
+        }
+
+        return globalNodeTypes;
+    }
+
+    private boolean isNodesServiceTemplate(String filename) {
+        return filename.endsWith("nodes.yml") || filename.endsWith("nodes.yaml");
+    }
 }