From 8d4bec21b1a9b1001c3771afa5c27ba1ee52b423 Mon Sep 17 00:00:00 2001 From: vasraz Date: Tue, 13 Apr 2021 17:42:16 +0100 Subject: [PATCH] Fix 'Unable to delete declared outputs' Change-Id: I11cd688f4c3ad25cbcb32e9f9b3dee782fc70fa7 Signed-off-by: Vasyl Razinkov Issue-ID: SDC-3557 (cherry picked from commit 88a3a7f6952fc5da7008b318be55636d784b3717) --- .../attribute/ComponentAttributeDeclarator.java | 146 ++++++--------- .../ComponentInstanceAttributeDeclarator.java | 28 +-- ...ComponentInstanceOutputAttributeDeclarator.java | 17 +- .../attribute/DefaultAttributeDeclarator.java | 199 +++++---------------- .../be/components/impl/AttributeBusinessLogic.java | 34 ---- 5 files changed, 113 insertions(+), 311 deletions(-) diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentAttributeDeclarator.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentAttributeDeclarator.java index 56dec5d93a..47fd74e8ce 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentAttributeDeclarator.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentAttributeDeclarator.java @@ -17,124 +17,90 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.sdc.be.components.attribute; import fj.data.Either; -import java.util.Collections; import java.util.List; import java.util.Optional; import org.apache.commons.collections.CollectionUtils; -import org.openecomp.sdc.be.components.impl.AttributeBusinessLogic; import org.openecomp.sdc.be.datatypes.elements.AttributeDataDefinition; import org.openecomp.sdc.be.datatypes.elements.GetOutputValueDataDefinition; -import org.openecomp.sdc.be.impl.ComponentsUtils; import org.openecomp.sdc.be.model.AttributeDefinition; import org.openecomp.sdc.be.model.Component; import org.openecomp.sdc.be.model.OutputDefinition; import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; -import org.openecomp.sdc.be.model.operations.impl.AttributeOperation; @org.springframework.stereotype.Component public class ComponentAttributeDeclarator extends DefaultAttributeDeclarator { - private final ToscaOperationFacade toscaOperationFacade; - private final AttributeBusinessLogic attributeBusinessLogic; - - public ComponentAttributeDeclarator(final ComponentsUtils componentsUtils, - final AttributeOperation attributeOperation, - final ToscaOperationFacade toscaOperationFacade, - final AttributeBusinessLogic attributeBusinessLogic) { -// super(componentsUtils, attributeOperation); - this.toscaOperationFacade = toscaOperationFacade; - this.attributeBusinessLogic = attributeBusinessLogic; - } - - @Override - public AttributeDataDefinition createDeclaredAttribute(final AttributeDataDefinition attributeDataDefinition) { - return new AttributeDataDefinition(attributeDataDefinition); - } + private final ToscaOperationFacade toscaOperationFacade; - @Override - public Either updateAttributesValues(final Component component, - final String propertiesOwnerId, - final List attributetypeList) { - if (CollectionUtils.isNotEmpty(attributetypeList)) { - for (AttributeDataDefinition attribute : attributetypeList) { - Either - storageStatus = toscaOperationFacade - .updateAttributeOfComponent(component, new AttributeDefinition(attribute)); - if (storageStatus.isRight()) { - return Either.right(storageStatus.right().value()); - } - } + public ComponentAttributeDeclarator(final ToscaOperationFacade toscaOperationFacade) { + this.toscaOperationFacade = toscaOperationFacade; } - return Either.left(attributetypeList); - } - - @Override - public Optional resolvePropertiesOwner(final Component component, final String propertiesOwnerId) { - return Optional.of(component); - } - @Override - public StorageOperationStatus unDeclareAttributesAsOutputs(final Component component, - final OutputDefinition output) { - AttributeDefinition attributeDefinition = new AttributeDefinition(output); - - // TODO - do we need this one - if (attributeBusinessLogic.isAttributeUsedByOperation(component, attributeDefinition)) { - return StorageOperationStatus.DECLARED_INPUT_USED_BY_OPERATION; + @Override + public AttributeDataDefinition createDeclaredAttribute(final AttributeDataDefinition attributeDataDefinition) { + return new AttributeDataDefinition(attributeDataDefinition); } - Optional attributeToUpdateCandidate = - getDeclaredAttributeByOutputId(component, output.getUniqueId()); - - if (attributeToUpdateCandidate.isPresent()) { - AttributeDefinition attributeToUpdate = attributeToUpdateCandidate.get(); - return unDeclareOutput(component, output, attributeToUpdate); + @Override + public Either updateAttributesValues(final Component component, final String propertiesOwnerId, + final List attributetypeList) { + if (CollectionUtils.isNotEmpty(attributetypeList)) { + for (AttributeDataDefinition attribute : attributetypeList) { + Either storageStatus = toscaOperationFacade + .updateAttributeOfComponent(component, new AttributeDefinition(attribute)); + if (storageStatus.isRight()) { + return Either.right(storageStatus.right().value()); + } + } + } + return Either.left(attributetypeList); } - return StorageOperationStatus.OK; - } - - private StorageOperationStatus unDeclareOutput(final Component component, - final OutputDefinition output, - final AttributeDefinition attributeToUpdate) { - prepareValueBeforeDelete(output, attributeToUpdate, Collections.emptyList()); - attributeToUpdate.setValue(output.getDefaultValue()); - Either status = toscaOperationFacade - .updateAttributeOfComponent(component, attributeToUpdate); - if (status.isRight()) { - return status.right().value(); + @Override + public Optional resolvePropertiesOwner(final Component component, final String propertiesOwnerId) { + return Optional.of(component); } - return StorageOperationStatus.OK; - } - - private Optional getDeclaredAttributeByOutputId(final Component component, final String outputId) { - List attributes = component.getAttributes(); - - if (CollectionUtils.isEmpty(attributes)) { - return Optional.empty(); + @Override + public StorageOperationStatus unDeclareAttributesAsOutputs(final Component component, final OutputDefinition output) { + final Optional attributeToUpdateCandidate = getDeclaredAttributeByOutputId(component, output.getUniqueId()); + if (attributeToUpdateCandidate.isPresent()) { + AttributeDefinition attributeToUpdate = attributeToUpdateCandidate.get(); + return unDeclareOutput(component, output, attributeToUpdate); + } + return StorageOperationStatus.OK; } - for (AttributeDefinition attributeDefinition : attributes) { - List getOutputValues = attributeDefinition.getGetOutputValues(); - if (CollectionUtils.isEmpty(getOutputValues)) { - continue; - } - - Optional getOutputCandidate = - getOutputValues.stream().filter(getOutput -> getOutput.getOutputId().equals(outputId)).findAny(); - - if (getOutputCandidate.isPresent()) { - return Optional.of(attributeDefinition); - } + private StorageOperationStatus unDeclareOutput(final Component component, final OutputDefinition output, + final AttributeDefinition attributeToUpdate) { + attributeToUpdate.setValue(output.getDefaultValue()); + Either status = toscaOperationFacade.updateAttributeOfComponent(component, attributeToUpdate); + if (status.isRight()) { + return status.right().value(); + } + return StorageOperationStatus.OK; } - return Optional.empty(); - } - + private Optional getDeclaredAttributeByOutputId(final Component component, final String outputId) { + List attributes = component.getAttributes(); + if (CollectionUtils.isEmpty(attributes)) { + return Optional.empty(); + } + for (AttributeDefinition attributeDefinition : attributes) { + List getOutputValues = attributeDefinition.getGetOutputValues(); + if (CollectionUtils.isEmpty(getOutputValues)) { + continue; + } + Optional getOutputCandidate = getOutputValues.stream() + .filter(getOutput -> getOutput.getOutputId().equals(outputId)).findAny(); + if (getOutputCandidate.isPresent()) { + return Optional.of(attributeDefinition); + } + } + return Optional.empty(); + } } diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentInstanceAttributeDeclarator.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentInstanceAttributeDeclarator.java index 8981515ea4..4c75624ec1 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentInstanceAttributeDeclarator.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentInstanceAttributeDeclarator.java @@ -17,7 +17,6 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.sdc.be.components.attribute; import fj.data.Either; @@ -28,29 +27,23 @@ import java.util.Optional; import org.apache.commons.collections4.CollectionUtils; import org.openecomp.sdc.be.components.impl.ComponentInstanceBusinessLogic; import org.openecomp.sdc.be.datatypes.elements.AttributeDataDefinition; -import org.openecomp.sdc.be.impl.ComponentsUtils; import org.openecomp.sdc.be.model.Component; import org.openecomp.sdc.be.model.ComponentInstance; import org.openecomp.sdc.be.model.ComponentInstanceAttribute; import org.openecomp.sdc.be.model.OutputDefinition; import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; -import org.openecomp.sdc.be.model.operations.impl.AttributeOperation; import org.openecomp.sdc.common.log.wrappers.Logger; @org.springframework.stereotype.Component -public class ComponentInstanceAttributeDeclarator extends - DefaultAttributeDeclarator { +public class ComponentInstanceAttributeDeclarator extends DefaultAttributeDeclarator { private static final Logger log = Logger.getLogger(ComponentInstanceAttributeDeclarator.class); private ToscaOperationFacade toscaOperationFacade; private ComponentInstanceBusinessLogic componentInstanceBusinessLogic; - public ComponentInstanceAttributeDeclarator(final ComponentsUtils componentsUtils, - final AttributeOperation attributeOperation, - final ToscaOperationFacade toscaOperationFacade, + public ComponentInstanceAttributeDeclarator(final ToscaOperationFacade toscaOperationFacade, final ComponentInstanceBusinessLogic componentInstanceBusinessLogic) { -// super(componentsUtils, attributeOperation); this.toscaOperationFacade = toscaOperationFacade; this.componentInstanceBusinessLogic = componentInstanceBusinessLogic; } @@ -61,8 +54,7 @@ public class ComponentInstanceAttributeDeclarator extends } @Override - public Either updateAttributesValues(final Component component, - final String cmptInstanceId, + public Either updateAttributesValues(final Component component, final String cmptInstanceId, final List attributetypeList) { log.debug("#updateAttributesValues - updating component instance attributes for instance {} on component {}", cmptInstanceId, component.getUniqueId()); @@ -78,17 +70,13 @@ public class ComponentInstanceAttributeDeclarator extends @Override public StorageOperationStatus unDeclareAttributesAsOutputs(final Component component, final OutputDefinition output) { - - final List componentInstancePropertiesDeclaredAsInput - = componentInstanceBusinessLogic.getComponentInstanceAttributesByOutputId(component, output.getUniqueId()); + final List componentInstancePropertiesDeclaredAsInput = componentInstanceBusinessLogic + .getComponentInstanceAttributesByOutputId(component, output.getUniqueId()); if (CollectionUtils.isEmpty(componentInstancePropertiesDeclaredAsInput)) { return StorageOperationStatus.OK; } - componentInstancePropertiesDeclaredAsInput.forEach(cmptInstanceProperty -> prepareValueBeforeDelete(output, - cmptInstanceProperty, cmptInstanceProperty.getPath())); - return toscaOperationFacade.updateComponentInstanceAttributes(component, - componentInstancePropertiesDeclaredAsInput.get(0).getComponentInstanceId(), - componentInstancePropertiesDeclaredAsInput); + return toscaOperationFacade + .updateComponentInstanceAttributes(component, componentInstancePropertiesDeclaredAsInput.get(0).getComponentInstanceId(), + componentInstancePropertiesDeclaredAsInput); } - } diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentInstanceOutputAttributeDeclarator.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentInstanceOutputAttributeDeclarator.java index 7ded7c1209..9ad7c2a9e3 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentInstanceOutputAttributeDeclarator.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentInstanceOutputAttributeDeclarator.java @@ -17,7 +17,6 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.sdc.be.components.attribute; import static org.apache.commons.collections4.CollectionUtils.isEmpty; @@ -29,14 +28,12 @@ import java.util.Map; import java.util.Optional; import org.openecomp.sdc.be.components.impl.ComponentInstanceBusinessLogic; import org.openecomp.sdc.be.datatypes.elements.AttributeDataDefinition; -import org.openecomp.sdc.be.impl.ComponentsUtils; import org.openecomp.sdc.be.model.Component; import org.openecomp.sdc.be.model.ComponentInstance; import org.openecomp.sdc.be.model.ComponentInstanceOutput; import org.openecomp.sdc.be.model.OutputDefinition; import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; -import org.openecomp.sdc.be.model.operations.impl.AttributeOperation; import org.openecomp.sdc.common.log.wrappers.Logger; @org.springframework.stereotype.Component @@ -46,11 +43,8 @@ public class ComponentInstanceOutputAttributeDeclarator extends DefaultAttribute private final ToscaOperationFacade toscaOperationFacade; private final ComponentInstanceBusinessLogic componentInstanceBusinessLogic; - public ComponentInstanceOutputAttributeDeclarator(final ComponentsUtils componentsUtils, - final AttributeOperation attributeOperation, - final ToscaOperationFacade toscaOperationFacade, + public ComponentInstanceOutputAttributeDeclarator(final ToscaOperationFacade toscaOperationFacade, final ComponentInstanceBusinessLogic componentInstanceBusinessLogic) { -// super(componentsUtils, attributeOperation); this.toscaOperationFacade = toscaOperationFacade; this.componentInstanceBusinessLogic = componentInstanceBusinessLogic; } @@ -61,8 +55,7 @@ public class ComponentInstanceOutputAttributeDeclarator extends DefaultAttribute } @Override - public Either updateAttributesValues(final Component component, - final String cmptInstanceId, + public Either updateAttributesValues(final Component component, final String cmptInstanceId, final List attributetypeList) { log.debug("#updateAttributesValues - updating component instance outputs for instance {} on component {}", cmptInstanceId, component.getUniqueId()); @@ -78,15 +71,11 @@ public class ComponentInstanceOutputAttributeDeclarator extends DefaultAttribute public StorageOperationStatus unDeclareAttributesAsOutputs(final Component component, final OutputDefinition output) { List componentInstanceInputsByInputId = componentInstanceBusinessLogic - .getComponentInstanceOutputsByOutputId(component, output - .getUniqueId()); + .getComponentInstanceOutputsByOutputId(component, output.getUniqueId()); if (isEmpty(componentInstanceInputsByInputId)) { return StorageOperationStatus.OK; } - componentInstanceInputsByInputId - .forEach(cmptInstanceInput -> prepareValueBeforeDelete(output, cmptInstanceInput, cmptInstanceInput.getPath())); return toscaOperationFacade.updateComponentInstanceOutputs(component, componentInstanceInputsByInputId.get(0).getComponentInstanceId(), componentInstanceInputsByInputId); } - } diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/DefaultAttributeDeclarator.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/DefaultAttributeDeclarator.java index e53a362508..62f4211925 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/DefaultAttributeDeclarator.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/DefaultAttributeDeclarator.java @@ -17,7 +17,6 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.sdc.be.components.attribute; import static org.openecomp.sdc.common.api.Constants.GET_ATTRIBUTE; @@ -50,14 +49,12 @@ import org.openecomp.sdc.be.model.OutputDefinition; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder; import org.openecomp.sdc.common.log.wrappers.Logger; -import org.openecomp.sdc.exception.ResponseFormat; import org.yaml.snakeyaml.Yaml; -public abstract class DefaultAttributeDeclarator - implements AttributeDeclarator { +public abstract class DefaultAttributeDeclarator implements + AttributeDeclarator { private static final Logger log = Logger.getLogger(DefaultAttributeDeclarator.class); - private static final short LOOP_PROTECTION_LEVEL = 10; private static final String UNDERSCORE = "_"; private final Gson gson = new Gson(); @@ -68,9 +65,8 @@ public abstract class DefaultAttributeDeclarator, StorageOperationStatus> declareAttributesAsOutputs(final Component component, final String propertiesOwnerId, final List attribsToDeclare) { - log.debug( - "#declarePropertiesAsInputs - declaring properties as inputs for component {} from properties owner {}", - component.getUniqueId(), propertiesOwnerId); + log.debug("#declarePropertiesAsInputs - declaring properties as inputs for component {} from properties owner {}", component.getUniqueId(), + propertiesOwnerId); return resolvePropertiesOwner(component, propertiesOwnerId) .map(propertyOwner -> declareAttributesAsOutputs(component, propertyOwner, attribsToDeclare)) .orElse(Either.right(onPropertiesOwnerNotFound(component.getUniqueId(), propertiesOwnerId))); @@ -78,31 +74,26 @@ public abstract class DefaultAttributeDeclarator updateAttributesValues(final Component component, - final String propertiesOwnerId, + protected abstract Either updateAttributesValues(final Component component, final String propertiesOwnerId, final List attributetypeList); protected abstract Optional resolvePropertiesOwner(final Component component, final String propertiesOwnerId); private StorageOperationStatus onPropertiesOwnerNotFound(final String componentId, final String propertiesOwnerId) { - log.debug("#declarePropertiesAsInputs - properties owner {} was not found on component {}", propertiesOwnerId, - componentId); + log.debug("#declarePropertiesAsInputs - properties owner {} was not found on component {}", propertiesOwnerId, componentId); return StorageOperationStatus.NOT_FOUND; } private Either, StorageOperationStatus> declareAttributesAsOutputs(final Component component, final PROPERTYOWNER propertiesOwner, final List attributesToDeclare) { - final AttributesDeclarationData attributesDeclarationData - = createOutputsAndOverrideAttributesValues(component, propertiesOwner, attributesToDeclare); - return updateAttributesValues(component, propertiesOwner.getUniqueId(), - attributesDeclarationData.getAttributesToUpdate()) - .left() + final AttributesDeclarationData attributesDeclarationData = createOutputsAndOverrideAttributesValues(component, propertiesOwner, + attributesToDeclare); + return updateAttributesValues(component, propertiesOwner.getUniqueId(), attributesDeclarationData.getAttributesToUpdate()).left() .map(updatePropsRes -> attributesDeclarationData.getOutputsToCreate()); } - private AttributesDeclarationData createOutputsAndOverrideAttributesValues(final Component component, - final PROPERTYOWNER propertiesOwner, + private AttributesDeclarationData createOutputsAndOverrideAttributesValues(final Component component, final PROPERTYOWNER propertiesOwner, final List attributesToDeclare) { final List declaredAttributes = new ArrayList<>(); final List createdInputs = attributesToDeclare.stream() @@ -111,10 +102,8 @@ public abstract class DefaultAttributeDeclarator declaredAttributes, - final ComponentInstanceAttribOutput attribOutput) { + private OutputDefinition declareAttributeOutput(final Component component, final PROPERTYOWNER propertiesOwner, + final List declaredAttributes, final ComponentInstanceAttribOutput attribOutput) { final AttributeDataDefinition attribute = resolveAttribute(declaredAttributes, attribOutput); final OutputDefinition outputDefinition = createOutput(component, propertiesOwner, attribOutput, attribute); final ATTRIBUTETYPE declaredAttribute = createDeclaredAttribute(attribute); @@ -124,40 +113,34 @@ public abstract class DefaultAttributeDeclarator attributesToCreate, - final ComponentInstanceAttribOutput attribOutput) { - final Optional resolvedAttribute = attributesToCreate.stream() - .filter(p -> p.getName().equals(attribOutput.getName())) + private AttributeDataDefinition resolveAttribute(final List attributesToCreate, final ComponentInstanceAttribOutput attribOutput) { + final Optional resolvedAttribute = attributesToCreate.stream().filter(p -> p.getName().equals(attribOutput.getName())) .findFirst(); return resolvedAttribute.isPresent() ? resolvedAttribute.get() : attribOutput; } - OutputDefinition createOutputFromAttribute(final String componentId, - final PROPERTYOWNER propertiesOwner, - final String outputName, - final ComponentInstanceAttribOutput attributeOutput, - final AttributeDataDefinition attribute) { + OutputDefinition createOutputFromAttribute(final String componentId, final PROPERTYOWNER propertiesOwner, final String outputName, + final ComponentInstanceAttribOutput attributeOutput, final AttributeDataDefinition attribute) { final String attributesName = attributeOutput.getAttributesName(); final AttributeDefinition selectedAttrib = attributeOutput.getOutput(); final String[] parsedAttribNames = attributeOutput.getParsedAttribNames(); @@ -207,7 +183,6 @@ public abstract class DefaultAttributeDeclarator mappedToscaTemplate = (Map) objValue; createOutputValue(mappedToscaTemplate, 1, parsedPropNames, outputName); - output.setValue(gson.toJson(mappedToscaTemplate)); } - } else { - jsonObject.put( - GET_ATTRIBUTE, Arrays.asList(output.getAttributes().get(0).getComponentInstanceName(), attributeDataDefinition.getName())); + jsonObject + .put(GET_ATTRIBUTE, Arrays.asList(output.getAttributes().get(0).getComponentInstanceName(), attributeDataDefinition.getName())); output.setValue(jsonObject.toJSONString()); } } - if (CollectionUtils.isEmpty(attributeDataDefinition.getGetOutputValues())) { attributeDataDefinition.setGetOutputValues(new ArrayList<>()); } final List getOutputValues = attributeDataDefinition.getGetOutputValues(); - final GetOutputValueDataDefinition getOutputValueDataDefinition = new GetOutputValueDataDefinition(); getOutputValueDataDefinition.setOutputId(output.getUniqueId()); getOutputValueDataDefinition.setOutputName(output.getName()); @@ -265,7 +233,6 @@ public abstract class DefaultAttributeDeclarator= 1) { if (i == parsedPropNames.length - 1) { final JSONObject jobProp = new JSONObject(); @@ -280,7 +247,6 @@ public abstract class DefaultAttributeDeclarator outputsToCreate; - private final List attributesToUpdate; - - AttributesDeclarationData(final List outputsToCreate, - final List attributesToUpdate) { - this.outputsToCreate = outputsToCreate; - this.attributesToUpdate = attributesToUpdate; - } - - List getOutputsToCreate() { - return outputsToCreate; - } - - List getAttributesToUpdate() { - return attributesToUpdate; - } - } - - Either prepareValueBeforeDelete(final OutputDefinition inputForDelete, - final AttributeDataDefinition inputValue, - final List pathOfComponentInstances) { - final Either deleteEither = prepareValueBeforeDelete(inputForDelete, inputValue); - -// Either findDefaultValue = propertyOperation -// .findDefaultValueFromSecondPosition(pathOfComponentInstances, inputValue.getUniqueId(), -// (String) inputValue.get_default()); -// if (findDefaultValue.isRight()) { -// deleteEither = Either.right(componentsUtils.getResponseFormat(componentsUtils -// .convertFromStorageResponse( -// DaoStatusConverter.convertJanusGraphStatusToStorageStatus(findDefaultValue.right().value())))); -// return deleteEither; -// -// } -// String defaultValue = findDefaultValue.left().value(); -// inputValue.set_default(defaultValue); -// log.debug("The returned default value in ResourceInstanceProperty is {}", defaultValue); - return deleteEither; - } - - private Either prepareValueBeforeDelete(final OutputDefinition outputForDelete, - final AttributeDataDefinition outputValue) { - final Either deleteEither = Either.left(outputForDelete); - String value = outputValue.getValue(); - final Map mappedToscaTemplate = (Map) new Yaml().load(value); - - resetOutputName(mappedToscaTemplate, outputForDelete.getName()); - - value = ""; - if (MapUtils.isNotEmpty(mappedToscaTemplate)) { - final Either result = cleanNestedMap(mappedToscaTemplate, true); - Map modifiedMappedToscaTemplate = mappedToscaTemplate; - if (result.isLeft()) { - modifiedMappedToscaTemplate = (Map) result.left().value(); - } else { - log.warn("Map cleanup failed -> {}", result.right().value()); //continue, don't break operation - } - value = gson.toJson(modifiedMappedToscaTemplate); - } - outputValue.setValue(value); - - final List getInputsValues = outputValue.getGetOutputValues(); - if (getInputsValues != null && !getInputsValues.isEmpty()) { - final Optional op = - getInputsValues.stream().filter(gi -> gi.getOutputId().equals(outputForDelete.getUniqueId())).findAny(); - op.ifPresent(getInputsValues::remove); - } - outputValue.setGetOutputValues(getInputsValues); - return deleteEither; - } - private void resetOutputName(final Map lhm1, final String outputName) { for (final Map.Entry entry : lhm1.entrySet()) { final String key = entry.getKey(); @@ -406,24 +300,6 @@ public abstract class DefaultAttributeDeclarator traverse the tosca elements and remove nested empty map properties * this only handles nested maps, other objects are left untouched (even a Set containing a map) since behaviour is unexpected @@ -449,7 +325,6 @@ public abstract class DefaultAttributeDeclarator outputsToCreate; + private final List attributesToUpdate; + + AttributesDeclarationData(final List outputsToCreate, final List attributesToUpdate) { + this.outputsToCreate = outputsToCreate; + this.attributesToUpdate = attributesToUpdate; + } + + List getOutputsToCreate() { + return outputsToCreate; + } + + List getAttributesToUpdate() { + return attributesToUpdate; + } + } } diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/AttributeBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/AttributeBusinessLogic.java index a44ed3c8c7..f07752986b 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/AttributeBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/AttributeBusinessLogic.java @@ -408,38 +408,4 @@ public class AttributeBusinessLogic extends BaseBusinessLogic { return Either.left(status.left().value().getAttributes()); } - public boolean isAttributeUsedByOperation(Component component, - AttributeDefinition propertyDefinitionEntry) { - // TODO - do we need this one - return false; - -// // Component's own interfaces -// Map interfaces = component.getInterfaces(); -// if(MapUtils.isNotEmpty(interfaces)){ -// for(Map.Entry interfaceEntry : interfaces.entrySet()) { -// if (isPropertyExistInOperationInterface(propertyDefinitionEntry, interfaceEntry.getValue())) { -// return true; -// } -// } -// } -// -// // Component's child's component interfaces -// if(isPropertyUsedInCIInterfaces(component.getComponentInstancesInterfaces(), propertyDefinitionEntry)){ -// return true; -// } -// -// // Component's parent's component interfaces -// Either, StorageOperationStatus> componentList = toscaOperationFacade.getParentComponents(component.getUniqueId()); -// if(componentList.isLeft()){ -// for (Component parentComponent : componentList.left().value()) { -// if(isPropertyUsedInCIInterfaces(parentComponent.getComponentInstancesInterfaces(), propertyDefinitionEntry)){ -// return true; -// } -// } -// } -// -// return false; - } - - } -- 2.16.6