aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvasraz <vasyl.razinkov@est.tech>2021-04-13 17:42:16 +0100
committerVasyl Razinkov <vasyl.razinkov@est.tech>2021-04-13 16:50:19 +0000
commit8d4bec21b1a9b1001c3771afa5c27ba1ee52b423 (patch)
tree927372d264ee58ae6a7b9fd58529cf6a3a685fbf
parent0d13c9c476bf27eba484bb36e800244349c3dc2d (diff)
Fix 'Unable to delete declared outputs'
Change-Id: I11cd688f4c3ad25cbcb32e9f9b3dee782fc70fa7 Signed-off-by: Vasyl Razinkov <vasyl.razinkov@est.tech> Issue-ID: SDC-3557 (cherry picked from commit 88a3a7f6952fc5da7008b318be55636d784b3717)
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentAttributeDeclarator.java146
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentInstanceAttributeDeclarator.java28
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/ComponentInstanceOutputAttributeDeclarator.java17
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/attribute/DefaultAttributeDeclarator.java199
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/AttributeBusinessLogic.java34
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<Component, AttributeDataDefinition> {
- 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<?, StorageOperationStatus> updateAttributesValues(final Component component,
- final String propertiesOwnerId,
- final List<AttributeDataDefinition> attributetypeList) {
- if (CollectionUtils.isNotEmpty(attributetypeList)) {
- for (AttributeDataDefinition attribute : attributetypeList) {
- Either<AttributeDefinition, StorageOperationStatus>
- 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<Component> 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<AttributeDefinition> attributeToUpdateCandidate =
- getDeclaredAttributeByOutputId(component, output.getUniqueId());
-
- if (attributeToUpdateCandidate.isPresent()) {
- AttributeDefinition attributeToUpdate = attributeToUpdateCandidate.get();
- return unDeclareOutput(component, output, attributeToUpdate);
+ @Override
+ public Either<?, StorageOperationStatus> updateAttributesValues(final Component component, final String propertiesOwnerId,
+ final List<AttributeDataDefinition> attributetypeList) {
+ if (CollectionUtils.isNotEmpty(attributetypeList)) {
+ for (AttributeDataDefinition attribute : attributetypeList) {
+ Either<AttributeDefinition, StorageOperationStatus> 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<AttributeDefinition, StorageOperationStatus> status = toscaOperationFacade
- .updateAttributeOfComponent(component, attributeToUpdate);
- if (status.isRight()) {
- return status.right().value();
+ @Override
+ public Optional<Component> resolvePropertiesOwner(final Component component, final String propertiesOwnerId) {
+ return Optional.of(component);
}
- return StorageOperationStatus.OK;
- }
-
- private Optional<AttributeDefinition> getDeclaredAttributeByOutputId(final Component component, final String outputId) {
- List<AttributeDefinition> attributes = component.getAttributes();
-
- if (CollectionUtils.isEmpty(attributes)) {
- return Optional.empty();
+ @Override
+ public StorageOperationStatus unDeclareAttributesAsOutputs(final Component component, final OutputDefinition output) {
+ final Optional<AttributeDefinition> 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<GetOutputValueDataDefinition> getOutputValues = attributeDefinition.getGetOutputValues();
- if (CollectionUtils.isEmpty(getOutputValues)) {
- continue;
- }
-
- Optional<GetOutputValueDataDefinition> 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<AttributeDefinition, StorageOperationStatus> status = toscaOperationFacade.updateAttributeOfComponent(component, attributeToUpdate);
+ if (status.isRight()) {
+ return status.right().value();
+ }
+ return StorageOperationStatus.OK;
}
- return Optional.empty();
- }
-
+ private Optional<AttributeDefinition> getDeclaredAttributeByOutputId(final Component component, final String outputId) {
+ List<AttributeDefinition> attributes = component.getAttributes();
+ if (CollectionUtils.isEmpty(attributes)) {
+ return Optional.empty();
+ }
+ for (AttributeDefinition attributeDefinition : attributes) {
+ List<GetOutputValueDataDefinition> getOutputValues = attributeDefinition.getGetOutputValues();
+ if (CollectionUtils.isEmpty(getOutputValues)) {
+ continue;
+ }
+ Optional<GetOutputValueDataDefinition> 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<ComponentInstance, ComponentInstanceAttribute> {
+public class ComponentInstanceAttributeDeclarator extends DefaultAttributeDeclarator<ComponentInstance, ComponentInstanceAttribute> {
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<?, StorageOperationStatus> updateAttributesValues(final Component component,
- final String cmptInstanceId,
+ public Either<?, StorageOperationStatus> updateAttributesValues(final Component component, final String cmptInstanceId,
final List<ComponentInstanceAttribute> 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<ComponentInstanceAttribute> componentInstancePropertiesDeclaredAsInput
- = componentInstanceBusinessLogic.getComponentInstanceAttributesByOutputId(component, output.getUniqueId());
+ final List<ComponentInstanceAttribute> 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<?, StorageOperationStatus> updateAttributesValues(final Component component,
- final String cmptInstanceId,
+ public Either<?, StorageOperationStatus> updateAttributesValues(final Component component, final String cmptInstanceId,
final List<ComponentInstanceOutput> 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<ComponentInstanceOutput> 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<PROPERTYOWNER extends PropertiesOwner, ATTRIBUTETYPE extends AttributeDataDefinition>
- implements AttributeDeclarator {
+public abstract class DefaultAttributeDeclarator<PROPERTYOWNER extends PropertiesOwner, ATTRIBUTETYPE extends AttributeDataDefinition> 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<PROPERTYOWNER extends Propertie
public Either<List<OutputDefinition>, StorageOperationStatus> declareAttributesAsOutputs(final Component component,
final String propertiesOwnerId,
final List<ComponentInstanceAttribOutput> 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<PROPERTYOWNER extends Propertie
protected abstract ATTRIBUTETYPE createDeclaredAttribute(final AttributeDataDefinition attributeDataDefinition);
- protected abstract Either<?, StorageOperationStatus> updateAttributesValues(final Component component,
- final String propertiesOwnerId,
+ protected abstract Either<?, StorageOperationStatus> updateAttributesValues(final Component component, final String propertiesOwnerId,
final List<ATTRIBUTETYPE> attributetypeList);
protected abstract Optional<PROPERTYOWNER> 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<List<OutputDefinition>, StorageOperationStatus> declareAttributesAsOutputs(final Component component,
final PROPERTYOWNER propertiesOwner,
final List<ComponentInstanceAttribOutput> 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<ComponentInstanceAttribOutput> attributesToDeclare) {
final List<ATTRIBUTETYPE> declaredAttributes = new ArrayList<>();
final List<OutputDefinition> createdInputs = attributesToDeclare.stream()
@@ -111,10 +102,8 @@ public abstract class DefaultAttributeDeclarator<PROPERTYOWNER extends Propertie
return new AttributesDeclarationData(createdInputs, declaredAttributes);
}
- private OutputDefinition declareAttributeOutput(final Component component,
- final PROPERTYOWNER propertiesOwner,
- final List<ATTRIBUTETYPE> declaredAttributes,
- final ComponentInstanceAttribOutput attribOutput) {
+ private OutputDefinition declareAttributeOutput(final Component component, final PROPERTYOWNER propertiesOwner,
+ final List<ATTRIBUTETYPE> 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<PROPERTYOWNER extends Propertie
return outputDefinition;
}
- private OutputDefinition createOutput(final Component component,
- final PROPERTYOWNER propertiesOwner,
- final ComponentInstanceAttribOutput attribOutput,
- final AttributeDataDefinition attributeDataDefinition) {
+ private OutputDefinition createOutput(final Component component, final PROPERTYOWNER propertiesOwner,
+ final ComponentInstanceAttribOutput attribOutput, final AttributeDataDefinition attributeDataDefinition) {
String generatedInputPrefix = propertiesOwner.getNormalizedName();
if (propertiesOwner.getUniqueId().equals(attribOutput.getParentUniqueId())) {
//Creating input from property create on self using add property..Do not add the prefix
generatedInputPrefix = null;
}
-
final String generatedOutputName = generateOutputName(generatedInputPrefix, attribOutput);
- log.debug("createInput: propOwner.uniqueId={}, attribOutput.parentUniqueId={}",
- propertiesOwner.getUniqueId(), attribOutput.getParentUniqueId());
+ log.debug("createInput: propOwner.uniqueId={}, attribOutput.parentUniqueId={}", propertiesOwner.getUniqueId(),
+ attribOutput.getParentUniqueId());
return createOutputFromAttribute(component.getUniqueId(), propertiesOwner, generatedOutputName, attribOutput, attributeDataDefinition);
}
private String generateOutputName(final String outputName, final ComponentInstanceAttribOutput attribOutput) {
final String declaredInputName;
final String[] parsedPropNames = attribOutput.getParsedAttribNames();
-
if (parsedPropNames != null) {
declaredInputName = handleInputName(outputName, parsedPropNames);
} else {
final String[] propName = {attribOutput.getName()};
declaredInputName = handleInputName(outputName, propName);
}
-
return declaredInputName;
}
private String handleInputName(final String outputName, final String[] parsedPropNames) {
final StringBuilder prefix = new StringBuilder();
int startingIndex;
-
if (Objects.isNull(outputName)) {
prefix.append(parsedPropNames[0]);
startingIndex = 1;
@@ -165,29 +148,22 @@ public abstract class DefaultAttributeDeclarator<PROPERTYOWNER extends Propertie
prefix.append(outputName);
startingIndex = 0;
}
-
while (startingIndex < parsedPropNames.length) {
prefix.append(UNDERSCORE);
prefix.append(parsedPropNames[startingIndex]);
startingIndex++;
}
-
return prefix.toString();
}
- private AttributeDataDefinition resolveAttribute(final List<ATTRIBUTETYPE> attributesToCreate,
- final ComponentInstanceAttribOutput attribOutput) {
- final Optional<ATTRIBUTETYPE> resolvedAttribute = attributesToCreate.stream()
- .filter(p -> p.getName().equals(attribOutput.getName()))
+ private AttributeDataDefinition resolveAttribute(final List<ATTRIBUTETYPE> attributesToCreate, final ComponentInstanceAttribOutput attribOutput) {
+ final Optional<ATTRIBUTETYPE> 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<PROPERTYOWNER extends Propertie
outputDefinition.setInstanceUniqueId(propertiesOwner.getUniqueId());
outputDefinition.setAttributeId(attributeOutput.getUniqueId());
outputDefinition.setAttributes(Arrays.asList(attributeOutput));
-
if (attribute instanceof IComponentInstanceConnectedElement) {
((IComponentInstanceConnectedElement) attribute).setComponentInstanceId(propertiesOwner.getUniqueId());
((IComponentInstanceConnectedElement) attribute).setComponentInstanceName(propertiesOwner.getName());
@@ -216,11 +191,8 @@ public abstract class DefaultAttributeDeclarator<PROPERTYOWNER extends Propertie
return outputDefinition;
}
- private void changeOutputValueToGetAttributeValue(final String outputName,
- final String[] parsedPropNames,
- final OutputDefinition output,
- final AttributeDataDefinition attributeDataDefinition,
- final boolean complexProperty) {
+ private void changeOutputValueToGetAttributeValue(final String outputName, final String[] parsedPropNames, final OutputDefinition output,
+ final AttributeDataDefinition attributeDataDefinition, final boolean complexProperty) {
JSONObject jsonObject = new JSONObject();
final String value = attributeDataDefinition.getValue();
if (StringUtils.isEmpty(value)) {
@@ -228,36 +200,32 @@ public abstract class DefaultAttributeDeclarator<PROPERTYOWNER extends Propertie
jsonObject = createJSONValueForProperty(parsedPropNames.length - 1, parsedPropNames, jsonObject, outputName);
attributeDataDefinition.setValue(jsonObject.toJSONString());
} 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());
}
} else {
final Object objValue = new Yaml().load(value);
if (objValue instanceof Map || objValue instanceof List) {
if (!complexProperty) {
- 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());
} else {
final Map<String, Object> mappedToscaTemplate = (Map<String, Object>) 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<GetOutputValueDataDefinition> getOutputValues = attributeDataDefinition.getGetOutputValues();
-
final GetOutputValueDataDefinition getOutputValueDataDefinition = new GetOutputValueDataDefinition();
getOutputValueDataDefinition.setOutputId(output.getUniqueId());
getOutputValueDataDefinition.setOutputName(output.getName());
@@ -265,7 +233,6 @@ public abstract class DefaultAttributeDeclarator<PROPERTYOWNER extends Propertie
}
private JSONObject createJSONValueForProperty(int i, final String[] parsedPropNames, final JSONObject ooj, final String outputName) {
-
while (i >= 1) {
if (i == parsedPropNames.length - 1) {
final JSONObject jobProp = new JSONObject();
@@ -280,7 +247,6 @@ public abstract class DefaultAttributeDeclarator<PROPERTYOWNER extends Propertie
return createJSONValueForProperty(i, parsedPropNames, res, outputName);
}
}
-
return ooj;
}
@@ -319,78 +285,6 @@ public abstract class DefaultAttributeDeclarator<PROPERTYOWNER extends Propertie
return lhm1;
}
- private class AttributesDeclarationData {
-
- private final List<OutputDefinition> outputsToCreate;
- private final List<ATTRIBUTETYPE> attributesToUpdate;
-
- AttributesDeclarationData(final List<OutputDefinition> outputsToCreate,
- final List<ATTRIBUTETYPE> attributesToUpdate) {
- this.outputsToCreate = outputsToCreate;
- this.attributesToUpdate = attributesToUpdate;
- }
-
- List<OutputDefinition> getOutputsToCreate() {
- return outputsToCreate;
- }
-
- List<ATTRIBUTETYPE> getAttributesToUpdate() {
- return attributesToUpdate;
- }
- }
-
- Either<OutputDefinition, ResponseFormat> prepareValueBeforeDelete(final OutputDefinition inputForDelete,
- final AttributeDataDefinition inputValue,
- final List<String> pathOfComponentInstances) {
- final Either<OutputDefinition, ResponseFormat> deleteEither = prepareValueBeforeDelete(inputForDelete, inputValue);
-
-// Either<String, JanusGraphOperationStatus> 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<OutputDefinition, ResponseFormat> prepareValueBeforeDelete(final OutputDefinition outputForDelete,
- final AttributeDataDefinition outputValue) {
- final Either<OutputDefinition, ResponseFormat> deleteEither = Either.left(outputForDelete);
- String value = outputValue.getValue();
- final Map<String, Object> mappedToscaTemplate = (Map<String, Object>) 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<GetOutputValueDataDefinition> getInputsValues = outputValue.getGetOutputValues();
- if (getInputsValues != null && !getInputsValues.isEmpty()) {
- final Optional<GetOutputValueDataDefinition> 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<String, Object> lhm1, final String outputName) {
for (final Map.Entry<String, Object> entry : lhm1.entrySet()) {
final String key = entry.getKey();
@@ -406,24 +300,6 @@ public abstract class DefaultAttributeDeclarator<PROPERTYOWNER extends Propertie
}
}
- private Either cleanNestedMap(Map mappedToscaTemplate, final boolean deepClone) {
- if (MapUtils.isNotEmpty(mappedToscaTemplate)) {
- if (deepClone) {
- if (!(mappedToscaTemplate instanceof HashMap)) {
- return Either.right(
- "expecting mappedToscaTemplate as HashMap ,recieved " + mappedToscaTemplate.getClass()
- .getSimpleName());
- } else {
- mappedToscaTemplate = (HashMap) ((HashMap) mappedToscaTemplate).clone();
- }
- }
- return Either.left((Map) cleanEmptyNestedValuesInMap(mappedToscaTemplate, LOOP_PROTECTION_LEVEL));
- } else {
- log.debug("mappedToscaTemplate is empty ");
- return Either.right("mappedToscaTemplate is empty ");
- }
- }
-
/* Mutates the object
* Tail recurse -> 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<PROPERTYOWNER extends Propertie
if (CollectionUtils.isNotEmpty(set)) {
set.removeAll(keysToRemove);
}
-
if (isEmptyNestedMap(toscaElement)) {
return null;
}
@@ -480,4 +355,22 @@ public abstract class DefaultAttributeDeclarator<PROPERTYOWNER extends Propertie
return isEmpty;
}
+ private class AttributesDeclarationData {
+
+ private final List<OutputDefinition> outputsToCreate;
+ private final List<ATTRIBUTETYPE> attributesToUpdate;
+
+ AttributesDeclarationData(final List<OutputDefinition> outputsToCreate, final List<ATTRIBUTETYPE> attributesToUpdate) {
+ this.outputsToCreate = outputsToCreate;
+ this.attributesToUpdate = attributesToUpdate;
+ }
+
+ List<OutputDefinition> getOutputsToCreate() {
+ return outputsToCreate;
+ }
+
+ List<ATTRIBUTETYPE> 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<String, InterfaceDefinition> interfaces = component.getInterfaces();
-// if(MapUtils.isNotEmpty(interfaces)){
-// for(Map.Entry<String, InterfaceDefinition> 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<List<Component>, StorageOperationStatus> componentList = toscaOperationFacade.getParentComponents(component.getUniqueId());
-// if(componentList.isLeft()){
-// for (Component parentComponent : componentList.left().value()) {
-// if(isPropertyUsedInCIInterfaces(parentComponent.getComponentInstancesInterfaces(), propertyDefinitionEntry)){
-// return true;
-// }
-// }
-// }
-//
-// return false;
- }
-
-
}