Allow import of handcrafted templates with specific substitution filter format 73/136073/2
authorvasraz <vasyl.razinkov@est.tech>
Mon, 2 Oct 2023 11:28:06 +0000 (12:28 +0100)
committerMichael Morris <michael.morris@est.tech>
Tue, 3 Oct 2023 09:54:57 +0000 (09:54 +0000)
Signed-off-by: Vasyl Razinkov <vasyl.razinkov@est.tech>
Change-Id: I363e36c349aac35653de92a43cc14c9a68327c65
Issue-ID: SDC-4641

catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java

index 2d29f80..5556548 100644 (file)
@@ -257,21 +257,30 @@ public class YamlTemplateParsingHandler {
         return ImportUtils.getProperties(toscaJson).left().on(err -> new HashMap<>());
     }
 
-    private ListDataDefinition<SubstitutionFilterPropertyDataDefinition> getSubstitutionFilterProperties(Map<String, Object> toscaJson) {
-        ListDataDefinition<SubstitutionFilterPropertyDataDefinition> propertyList = new ListDataDefinition<>();
-        Map<String, Object> substitutionFilters = findFirstToscaMapElement(toscaJson, SUBSTITUTION_FILTERS).left().on(err -> new HashMap<>());
+    private ListDataDefinition<SubstitutionFilterPropertyDataDefinition> getSubstitutionFilterProperties(final Map<String, Object> toscaJson) {
+        final ListDataDefinition<SubstitutionFilterPropertyDataDefinition> propertyList = new ListDataDefinition<>();
+        final Map<String, Object> substitutionFilters = findFirstToscaMapElement(toscaJson, SUBSTITUTION_FILTERS).left().on(err -> new HashMap<>());
         if (MapUtils.isEmpty(substitutionFilters)) {
             return propertyList;
         }
-        ArrayList<Map<String, List<Map<String, Object>>>> substitutionFilterProperties =
-            (ArrayList<Map<String, List<Map<String, Object>>>>) substitutionFilters.get("properties");
+        final List<Map<String, Object>> substitutionFilterProperties = (List<Map<String, Object>>) substitutionFilters.get("properties");
         if (CollectionUtils.isEmpty(substitutionFilterProperties)) {
             return propertyList;
         }
-        for (Map<String, List<Map<String, Object>>> filterProps : substitutionFilterProperties) {
-            for (Map.Entry<String, List<Map<String, Object>>> propertyFilterEntry : filterProps.entrySet()) {
+        for (final Map<String, Object> filterProps : substitutionFilterProperties) {
+            for (final Map.Entry<String, Object> propertyFilterEntry : filterProps.entrySet()) {
                 final String propertyName = propertyFilterEntry.getKey();
-                for (Map<String, Object> filterValueMap : propertyFilterEntry.getValue()) {
+                final Object value = propertyFilterEntry.getValue();
+                if (value instanceof List) {
+                    final List<Map<String, Object>> propertyFilterEntryValue = (List<Map<String, Object>>) value;
+                    for (final Map<String, Object> filterValueMap : propertyFilterEntryValue) {
+                        final var substitutionFilterPropertyDataDefinition = new SubstitutionFilterPropertyDataDefinition();
+                        substitutionFilterPropertyDataDefinition.setName(propertyName);
+                        substitutionFilterPropertyDataDefinition.setConstraints(createSubstitutionFilterConstraints(propertyName, filterValueMap));
+                        propertyList.add(substitutionFilterPropertyDataDefinition);
+                    }
+                } else if (value instanceof Map) {
+                    final Map<String, Object> filterValueMap = (Map<String, Object>) value;
                     final var substitutionFilterPropertyDataDefinition = new SubstitutionFilterPropertyDataDefinition();
                     substitutionFilterPropertyDataDefinition.setName(propertyName);
                     substitutionFilterPropertyDataDefinition.setConstraints(createSubstitutionFilterConstraints(propertyName, filterValueMap));