summaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java
diff options
context:
space:
mode:
authorandre.schmid <andre.schmid@est.tech>2022-06-15 15:30:40 +0100
committerMichael Morris <michael.morris@est.tech>2022-06-22 20:36:22 +0000
commit7a7b13726c195e2944ccc59e4d5c5ade57318763 (patch)
treec22384a2abfc24adeb1c69a3696cda15c8e37548 /catalog-be/src/main/java
parentfbab79aeaccf74385c9a55b697a1055a86bdf171 (diff)
Support TOSCA get_attribute function
Adds support to TOSCA get_attribute function in the Property Assignment TOSCA Function modal. Change-Id: I73dda215a7c9d7fecf0803cc259634279c3bdfb6 Issue-ID: SDC-4053 Signed-off-by: andre.schmid <andre.schmid@est.tech>
Diffstat (limited to 'catalog-be/src/main/java')
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java30
1 files changed, 22 insertions, 8 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java
index ab01b99957..4bf81727e6 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java
@@ -107,6 +107,7 @@ import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
import org.openecomp.sdc.be.model.RequirementDefinition;
import org.openecomp.sdc.be.model.Resource;
import org.openecomp.sdc.be.model.Service;
+import org.openecomp.sdc.be.model.ToscaPropertyData;
import org.openecomp.sdc.be.model.User;
import org.openecomp.sdc.be.model.jsonjanusgraph.config.ContainerInstanceTypesData;
import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ArtifactsOperations;
@@ -2387,13 +2388,25 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic {
return;
}
+ if (toscaGetFunction.getFunctionType() == ToscaGetFunctionType.GET_ATTRIBUTE) {
+ if (toscaGetFunction.getPropertySource() == PropertySource.SELF) {
+ validateGetFunction(property, parentComponent.getAttributes(), parentComponent.getModel());
+ } else if (toscaGetFunction.getPropertySource() == PropertySource.INSTANCE) {
+ final ComponentInstance componentInstance =
+ parentComponent.getComponentInstanceById(toscaGetFunction.getSourceUniqueId())
+ .orElseThrow(ToscaGetFunctionExceptionSupplier.instanceNotFound(toscaGetFunction.getSourceName()));
+ validateGetFunction(property, componentInstance.getAttributes(), parentComponent.getModel());
+ }
+
+ return;
+ }
throw ToscaGetFunctionExceptionSupplier.functionNotSupported(toscaGetFunction.getFunctionType()).get();
}
- private <T extends PropertyDefinition, U extends PropertyDefinition> void validateGetFunction(final T property,
- final List<U> parentProperties,
- final String model) {
+ private <T extends PropertyDefinition> void validateGetFunction(final T property,
+ final List<? extends ToscaPropertyData> parentProperties,
+ final String model) {
final ToscaGetFunctionDataDefinition toscaGetFunction = property.getToscaGetFunction();
if (CollectionUtils.isEmpty(parentProperties)) {
throw ToscaGetFunctionExceptionSupplier
@@ -2402,7 +2415,7 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic {
).get();
}
final String getFunctionPropertyUniqueId = toscaGetFunction.getPropertyUniqueId();
- T referredProperty = (T) parentProperties.stream()
+ ToscaPropertyData referredProperty = parentProperties.stream()
.filter(property1 -> getFunctionPropertyUniqueId.equals(property1.getUniqueId()))
.findFirst()
.orElseThrow(ToscaGetFunctionExceptionSupplier
@@ -2423,8 +2436,9 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic {
}
}
- private <T extends PropertyDefinition> T findSubProperty(final T referredProperty, final ToscaGetFunctionDataDefinition toscaGetFunction,
- final String model) {
+ private ToscaPropertyData findSubProperty(final ToscaPropertyData referredProperty,
+ final ToscaGetFunctionDataDefinition toscaGetFunction,
+ final String model) {
final Map<String, DataTypeDefinition> dataTypeMap = loadDataTypes(model);
final List<String> propertyPathFromSource = toscaGetFunction.getPropertyPathFromSource();
DataTypeDefinition dataType = dataTypeMap.get(referredProperty.getType());
@@ -2432,10 +2446,10 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic {
throw ToscaGetFunctionExceptionSupplier
.propertyDataTypeNotFound(propertyPathFromSource.get(0), referredProperty.getType(), toscaGetFunction.getFunctionType()).get();
}
- T foundProperty = referredProperty;
+ ToscaPropertyData foundProperty = referredProperty;
for (int i = 1; i < propertyPathFromSource.size(); i++) {
final String currentPropertyName = propertyPathFromSource.get(i);
- foundProperty = (T) dataType.getProperties().stream()
+ foundProperty = dataType.getProperties().stream()
.filter(propertyDefinition -> currentPropertyName.equals(propertyDefinition.getName())).findFirst()
.orElseThrow(
ToscaGetFunctionExceptionSupplier