From 6c682e71e580cf051e7ab30ed7a89b03ca46277b Mon Sep 17 00:00:00 2001 From: aribeiro Date: Tue, 30 Nov 2021 08:43:42 +0000 Subject: [PATCH] Fix generated tosca and Required fields validation Fix Incorrect properties entry on the interface operation implementation definition and Required fields validation. Issue-ID: SDC-3796 Signed-off-by: aribeiro Change-Id: Ib6624fb884181612b2d94970d3cca28af839151d --- .../sdc/be/tosca/InterfacesOperationsConverter.java | 6 +++--- .../sdc/be/tosca/model/ToscaArtifactDefinition.java | 3 +-- .../interface-operation-handler.component.ts | 17 ++++++++++++----- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/InterfacesOperationsConverter.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/InterfacesOperationsConverter.java index 52e7562bbe..919a5bca00 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/InterfacesOperationsConverter.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/InterfacesOperationsConverter.java @@ -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 propertiesMap = new HashMap<>(); - properties.forEach(propertyDefinition -> propertiesMap.put(propertyDefinition.getName(), propertyDefinition)); + final Map propertiesMap = new HashMap<>(); + properties.stream().filter(propertyDataDefinition -> StringUtils.isNotEmpty(propertyDataDefinition.getValue())) + .forEach(propertyDataDefinition -> propertiesMap.put(propertyDataDefinition.getName(), propertyDataDefinition.getValue())); toscaArtifactDefinition.setProperties(propertiesMap); } } diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/model/ToscaArtifactDefinition.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/model/ToscaArtifactDefinition.java index f49d0478b9..689dc91d23 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/model/ToscaArtifactDefinition.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/model/ToscaArtifactDefinition.java @@ -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 properties; + private Map properties; } diff --git a/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/interface-operation-handler.component.ts b/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/interface-operation-handler.component.ts index 0b0efde1bf..6e4ae45487 100644 --- a/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/interface-operation-handler.component.ts +++ b/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/interface-operation-handler.component.ts @@ -67,6 +67,7 @@ export class InterfaceOperationHandlerComponent { toscaArtifactTypes: Array = []; 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 => { -- 2.16.6