Fix generated tosca and Required fields validation 76/125976/5
authoraribeiro <anderson.ribeiro@est.tech>
Tue, 30 Nov 2021 08:43:42 +0000 (08:43 +0000)
committerMichael Morris <michael.morris@est.tech>
Thu, 9 Dec 2021 12:50:38 +0000 (12:50 +0000)
Fix Incorrect properties entry on the interface operation implementation
definition and Required fields validation.

Issue-ID: SDC-3796
Signed-off-by: aribeiro <anderson.ribeiro@est.tech>
Change-Id: Ib6624fb884181612b2d94970d3cca28af839151d

catalog-be/src/main/java/org/openecomp/sdc/be/tosca/InterfacesOperationsConverter.java
catalog-be/src/main/java/org/openecomp/sdc/be/tosca/model/ToscaArtifactDefinition.java
catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/interface-operation-handler.component.ts

index 52e7562..919a5bc 100644 (file)
@@ -38,7 +38,6 @@ import org.apache.commons.lang3.math.NumberUtils;
 import org.openecomp.sdc.be.datatypes.elements.InputDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.OperationDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition;
-import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
 import org.openecomp.sdc.be.model.Component;
 import org.openecomp.sdc.be.model.ComponentInstance;
 import org.openecomp.sdc.be.model.DataTypeDefinition;
@@ -313,8 +312,9 @@ public class InterfacesOperationsConverter {
                                                                   final ToscaArtifactDefinition toscaArtifactDefinition) {
         final var properties = operationEntry.getValue().getImplementation().getProperties();
         if (CollectionUtils.isNotEmpty(properties)) {
-            final Map<String, PropertyDataDefinition> propertiesMap = new HashMap<>();
-            properties.forEach(propertyDefinition -> propertiesMap.put(propertyDefinition.getName(), propertyDefinition));
+            final Map<String, String> propertiesMap = new HashMap<>();
+            properties.stream().filter(propertyDataDefinition -> StringUtils.isNotEmpty(propertyDataDefinition.getValue()))
+                .forEach(propertyDataDefinition -> propertiesMap.put(propertyDataDefinition.getName(), propertyDataDefinition.getValue()));
             toscaArtifactDefinition.setProperties(propertiesMap);
         }
     }
index f49d047..689dc91 100644 (file)
@@ -23,7 +23,6 @@ package org.openecomp.sdc.be.tosca.model;
 import java.util.Map;
 import lombok.Getter;
 import lombok.Setter;
-import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
 
 @Getter
 @Setter
@@ -37,5 +36,5 @@ public class ToscaArtifactDefinition {
     private String artifact_version;
     private String checksum;
     private String checksum_algorithm;
-    private Map<String, PropertyDataDefinition> properties;
+    private Map<String, String> properties;
 }
index 0b0efde..6e4ae45 100644 (file)
@@ -67,6 +67,7 @@ export class InterfaceOperationHandlerComponent {
     toscaArtifactTypes: Array<DropdownValue> = [];
 
     enableAddArtifactImplementation: boolean;
+    propertyValueValid: boolean = true;
 
     ngOnInit() {
         this.interfaceType = this.input.selectedInterface.displayType();
@@ -166,7 +167,9 @@ export class InterfaceOperationHandlerComponent {
 
     propertyValueValidation = (propertyValue): void => {
         this.onPropertyValueChange(propertyValue);
-        this.readonly = !propertyValue.isValid;
+        this.propertyValueValid = propertyValue.isValid;
+        this.readonly = !this.propertyValueValid;
+        this.validateRequiredField();
     }
 
     onRemoveInput = (inputParam: InputOperationParameter): void => {
@@ -221,15 +224,19 @@ export class InterfaceOperationHandlerComponent {
 
     validateRequiredField = () => {
         this.readonly = true;
-        let requiredFieldSelected = this.toscaArtifactTypeSelected && this.artifactName ? true : false;
-        this.input.validityChangedCallback(requiredFieldSelected);
-        if (requiredFieldSelected) {
+        const isRequiredFieldSelected = this.isRequiredFieldsSelected();
+        this.input.validityChangedCallback(isRequiredFieldSelected);
+        if (isRequiredFieldSelected && this.propertyValueValid) {
             this.readonly = false;
         }
     }
 
+    private isRequiredFieldsSelected() {
+        return this.toscaArtifactTypeSelected && this.artifactName;
+    }
+
     private checkFormValidForSubmit = (): boolean => {
-        return this.operationToUpdate.name && this.isParamsValid();
+        return this.operationToUpdate.name && this.artifactName && this.isParamsValid();
     }
 
     private isParamsValid = (): boolean => {