Fixed updating VFC 39/102839/4
authork.kedron <k.kedron@partner.samsung.com>
Tue, 3 Mar 2020 09:59:51 +0000 (10:59 +0100)
committerOfir Sonsino <ofir.sonsino@intl.att.com>
Tue, 24 Mar 2020 09:21:24 +0000 (09:21 +0000)
Added checking that newProperty.path isn't null.
Also added refreshing the returned property from the backend.

Issue-ID: SDC-2800
Signed-off-by: Krystian Kedron <k.kedron@partner.samsung.com>
Change-Id: I82449d04f3151b5233cd99fb919b47f6d05a83fa

catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java
catalog-ui/src/app/view-models/forms/property-forms/component-property-form/property-form-view-model.ts

index 51eb22d..93e31e2 100644 (file)
@@ -1697,15 +1697,18 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic {
                 }
                 Optional<CapabilityDefinition>
                         capPropDefinition = getPropertyCapabilityOfChildInstance(propertyParentUniqueId, foundResourceInstance.getCapabilities());
-                if(capPropDefinition.isPresent()) {
+                if (capPropDefinition.isPresent()) {
                     updatedPropertyValue
                             .bimap(updatedValue -> updateCapabilityPropFromUpdateInstProp(property, updatedValue,
                                     containerComponent, foundResourceInstance, capPropDefinition.get().getType(),
                                     capPropDefinition.get().getName()), Either::right);
-                }
-                else {
-                    updatedPropertyValue.bimap(updatedValue -> updatePropertyOnContainerComponent(property, updatedValue,
-                            containerComponent, foundResourceInstance), Either::right);
+                } else {
+                    updatedPropertyValue.bimap(
+                            updatedValue -> {
+                                componentInstanceProperty.setValue(updatedValue);
+                                return updatePropertyOnContainerComponent(property, updatedValue,
+                                        containerComponent, foundResourceInstance);
+                            }, Either::right);
                     updatedProperties.add(componentInstanceProperty);
                 }
             }
index 3d1ac3d..609997c 100644 (file)
@@ -290,7 +290,8 @@ export class PropertyFormViewModel {
                         let myValueString:string = JSON.stringify(this.$scope.myValue);
                         property.value = myValueString;
                     }
-                    this.updateInstanceProperties(property.resourceInstanceUniqueId, [property]).subscribe((propertiesFromBE) => onPropertySuccess(propertiesFromBE[0]), onPropertyFaild);
+                    this.updateInstanceProperties(property.resourceInstanceUniqueId, [property]).subscribe((propertiesFromBE) => onPropertySuccess(propertiesFromBE[0]),
+                            error => onPropertyFaild(error));
                 } else {
                     if (!this.$scope.editPropertyModel.property.simpleType && !this.$scope.isSimpleType(property.type)) {
                         let myValueString:string = JSON.stringify(this.$scope.myValue);
@@ -298,7 +299,7 @@ export class PropertyFormViewModel {
                     } else {
                         this.$scope.editPropertyModel.property.defaultValue = this.$scope.editPropertyModel.property.value;
                     }
-                    this.addOrUpdateProperty(property).subscribe(onPropertySuccess, onPropertyFaild);
+                    this.addOrUpdateProperty(property).subscribe(onPropertySuccess, error => onPropertyFaild(error));
                 }
             }
         };
@@ -387,21 +388,23 @@ export class PropertyFormViewModel {
             const okButton = {testId: "OK", text: "OK", type: SdcUiCommon.ButtonType.info, callback: onOk, closeModal: true} as SdcUiComponents.ModalButtonComponent;
             this.modalService.openInfoModal(title, message, 'delete-modal', [okButton]);
         };
-    }
+    };
 
     private updateInstanceProperties = (componentInstanceId:string, properties:PropertyModel[]):Observable<PropertyModel[]> => {
 
         return this.ComponentInstanceServiceNg2.updateInstanceProperties(this.workspaceService.metadata.componentType, this.workspaceService.metadata.uniqueId, componentInstanceId, properties)
             .map(newProperties => {
                 newProperties.forEach((newProperty) => {
-                    if(newProperty.path[0] === newProperty.resourceInstanceUniqueId) newProperty.path.shift();
-                    // find exist instance property in parent component for update the new value ( find bu uniqueId & path)
-                    let existProperty: PropertyModel = <PropertyModel>_.find(this.compositionService.componentInstancesProperties[newProperty.resourceInstanceUniqueId], {
-                        uniqueId: newProperty.uniqueId,
-                        path: newProperty.path
-                    });
-                    let index = this.compositionService.componentInstancesProperties[newProperty.resourceInstanceUniqueId].indexOf(existProperty);
-                    this.compositionService.componentInstancesProperties[newProperty.resourceInstanceUniqueId][index] = newProperty;
+                    if (!_.isNil(newProperty.path)) {
+                        if (newProperty.path[0] === newProperty.resourceInstanceUniqueId) newProperty.path.shift();
+                        // find exist instance property in parent component for update the new value ( find bu uniqueId & path)
+                        let existProperty: PropertyModel = <PropertyModel>_.find(this.compositionService.componentInstancesProperties[newProperty.resourceInstanceUniqueId], {
+                            uniqueId: newProperty.uniqueId,
+                            path: newProperty.path
+                        });
+                        let index = this.compositionService.componentInstancesProperties[newProperty.resourceInstanceUniqueId].indexOf(existProperty);
+                        this.compositionService.componentInstancesProperties[newProperty.resourceInstanceUniqueId][index] = newProperty;
+                    }
                 });
                 return newProperties;
             });