Fix error importimg service with custom fns 87/134587/1
authorMichaelMorris <michael.morris@est.tech>
Thu, 18 May 2023 14:15:27 +0000 (15:15 +0100)
committerMichaelMorris <michael.morris@est.tech>
Thu, 18 May 2023 14:15:31 +0000 (15:15 +0100)
Signed-off-by: MichaelMorris <michael.morris@est.tech>
Issue-ID: SDC-4507
Change-Id: I412e411a6d19cfb83d92c0d1184de8a69f75b42f

catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/ToscaFunctionYamlParsingHandler.java
common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/ToscaGetFunctionDataDefinition.java

index 0651e35..80608a8 100644 (file)
@@ -28,6 +28,8 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.openecomp.sdc.be.config.Configuration;
 import org.openecomp.sdc.be.config.ConfigurationManager;
@@ -193,12 +195,11 @@ public class ToscaFunctionYamlParsingHandler {
     }
 
     private Optional<ToscaFunction> handelCustomFunctionGetInputType(ToscaCustomFunction toscaCustomFunction, Object functionValueObj) {
-        if (!(functionValueObj instanceof String)) {
+        if (!(functionValueObj instanceof String) && !(functionValueObj instanceof List)) {
             return Optional.empty();
         }
-        final String parameter = (String) functionValueObj;
         Map<String, Object> parameterMap = new HashMap<>();
-        parameterMap.put(ToscaFunctionType.GET_INPUT.getName(), parameter);
+        parameterMap.put(ToscaFunctionType.GET_INPUT.getName(), functionValueObj);
         buildToscaFunctionBasedOnPropertyValue(parameterMap).ifPresent(toscaFunction -> {
             if (toscaFunction instanceof ToscaFunctionParameter) {
                 toscaCustomFunction.addParameter((ToscaFunctionParameter) toscaFunction);
@@ -210,7 +211,7 @@ public class ToscaFunctionYamlParsingHandler {
     private ToscaFunctionType getCustomFunctionType(String name) {
         List<Configuration.CustomToscaFunction> customFunctions =
             ConfigurationManager.getConfigurationManager().getConfiguration().getDefaultCustomToscaFunctions();
-        if (customFunctions.isEmpty()) {
+        if (CollectionUtils.isEmpty(customFunctions)) {
             return ToscaFunctionType.CUSTOM;
         }
         Optional<Configuration.CustomToscaFunction> optionalFunc = customFunctions.stream().filter(func -> func.getName().equals(name)).findFirst();
index 0ef417f..9396188 100644 (file)
@@ -124,8 +124,9 @@ public class ToscaGetFunctionDataDefinition implements ToscaFunction, ToscaFunct
         List<Object> propertySourceOneCopy = new ArrayList<>();
         propertySourceOneCopy.add(this.propertyPathFromSource.get(0));
         if (toscaIndex != null) {
-            propertySourceCopy.add(toscaIndex);
-            propertySourceOneCopy.add(toscaIndex);
+            Object toscaIndexValue = StringUtils.isNumeric(toscaIndex.toString()) ? Integer.parseInt(toscaIndex.toString()) : toscaIndex;
+            propertySourceCopy.add(toscaIndexValue);
+            propertySourceOneCopy.add(toscaIndexValue);
         }
         if (this.propertyPathFromSource.size() == 1) {
             return Map.of(this.functionType.getFunctionName(), propertySourceOneCopy);