Bug fix for the get input tosca function of list of nested complex type 01/134901/3
authorimamSidero <imam.hussain@est.tech>
Thu, 15 Jun 2023 11:32:37 +0000 (12:32 +0100)
committerMichael Morris <michael.morris@est.tech>
Fri, 16 Jun 2023 14:55:01 +0000 (14:55 +0000)
Fixed bug regarding tosca function for list of nested complex type

Issue-ID: SDC-4538
Signed-off-by: Imam hussain <imam.hussain@est.tech>
Change-Id: I41adff984d7b7bb0f968c4ed3a24c895a546a7b9

catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-get-function/tosca-get-function.component.ts
common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/ToscaFunctionJsonDeserializer.java

index 07058ea..26098b7 100644 (file)
@@ -133,7 +133,7 @@ export class ToscaGetFunctionComponent implements OnInit, OnChanges {
                             let tempIndexValue = "0";
                             let tempIndexProperty = tempSelectedProperty;
                             let subPropertyDropdownList : Array<PropertyDropdownValue> = [];
-                            if (index%2 == 0) {
+                            if (!isNaN(Number(indexValue)) || indexValue.toLowerCase() === 'index') {
                                 tempIndexFlag = true;
                                 tempIndexValue = indexValue;
                                 tempSelectedProperty = null;
@@ -143,6 +143,9 @@ export class ToscaGetFunctionComponent implements OnInit, OnChanges {
                                         const dataTypeFound: DataTypeModel = this.dataTypeService.getDataTypeByModelAndTypeName(this.componentMetadata.model, tempIndexProperty.schemaType);
                                         this.addPropertiesToDropdown(dataTypeFound.properties, subPropertyDropdownList);
                                         tempSelectedProperty = subPropertyDropdownList.find(property => property.propertyName === this.toscaGetFunction.toscaIndexList[index+1])
+                                        if (tempSelectedProperty == null && this.toscaGetFunction.toscaIndexList[index+2]) {
+                                            tempSelectedProperty = subPropertyDropdownList.find(property => property.propertyName === this.toscaGetFunction.toscaIndexList[index+2])
+                                        }
                                     }
                                 }
                                 let tempIndexValueMap : ToscaIndexObject = {indexFlag : tempIndexFlag, nestedFlag : tempNestedFlag, indexValue: tempIndexValue, indexProperty: tempSelectedProperty, subPropertyArray: subPropertyDropdownList};
@@ -182,7 +185,7 @@ export class ToscaGetFunctionComponent implements OnInit, OnChanges {
             this.indexListValues.forEach((indexObject : ToscaIndexObject) => {
                 indexAndProperty.push(indexObject.indexValue);
                 if(indexObject.nestedFlag && indexObject.indexProperty != null) {
-                    indexAndProperty.push(indexObject.indexProperty.propertyName);
+                    indexAndProperty.push(...indexObject.indexProperty.propertyPath);
                 }
             });
             toscaGetFunction.toscaIndexList = indexAndProperty;
@@ -466,6 +469,16 @@ export class ToscaGetFunctionComponent implements OnInit, OnChanges {
                     if (this.hasSameType(dataTypeProperty)) {
                         returnFlag =  true;
                     }
+                    if (!returnFlag && this.isComplexType(dataTypeProperty.type)) {
+                        const nestedDataTypeFound: DataTypeModel = this.dataTypeService.getDataTypeByModelAndTypeName(this.componentMetadata.model, dataTypeProperty.type);
+                        if (nestedDataTypeFound && nestedDataTypeFound.properties) {
+                            nestedDataTypeFound.properties.forEach( nestedDateTypeProperty => {
+                                if (this.hasSameType(nestedDateTypeProperty)) {
+                                    returnFlag =  true;
+                                }
+                            });
+                        }
+                    }
                 });
             }
             return returnFlag;
index e234a46..9671eee 100644 (file)
@@ -159,23 +159,15 @@ public class ToscaFunctionJsonDeserializer extends StdDeserializer<ToscaFunction
             if (!jsonNode.isArray()) {
                 throw context.instantiationException(ToscaGetFunctionDataDefinition.class, "Expecting an array for toscaIndexList attribute");
             }
-            for (int index = 0; index < jsonNode.size(); index++) {
-                String textValue = jsonNode.get(index).asText();
-                if (index % 2 == 0) {
-                    if (textValue.equalsIgnoreCase("INDEX")) {
-                        toscaIndexList.add(textValue);
-                    } else {
-                        try {
-                            toscaIndexList.add(Integer.parseInt(textValue));
-                        } catch (Exception e) {
-                            throw context.instantiationException(ToscaGetFunctionDataDefinition.class,
-                                "Expecting a valid value for toscaIndex attribute");
-                        }
-                    }
+
+            jsonNode.forEach(nodeValue -> {
+                String indexValue = nodeValue.asText();
+                if (StringUtils.isNumeric(indexValue)) {
+                    toscaIndexList.add(Integer.parseInt(indexValue));
                 } else {
-                    toscaIndexList.add(textValue);
+                    toscaIndexList.add(indexValue);
                 }
-            }
+            });
         }
         return toscaIndexList;
     }