Retrieve data types based on component model 67/123167/2
authoraribeiro <anderson.ribeiro@est.tech>
Thu, 15 Jul 2021 08:18:37 +0000 (09:18 +0100)
committeraribeiro <anderson.ribeiro@est.tech>
Fri, 6 Aug 2021 16:22:20 +0000 (17:22 +0100)
Issue-ID: SDC-3660
Signed-off-by: aribeiro <anderson.ribeiro@est.tech>
Change-Id: I09c533eb39277532b29e581e4dd57e9df952e8e6

73 files changed:
catalog-be/src/main/docker/backend/chef-repo/cookbooks/sdc-catalog-be/files/default/error-configuration.yaml
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/AnnotationBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/AttributeBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/BaseBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/DataTypesService.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/GroupBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InputsBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/PropertyBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ResourceImportManager.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceImportBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/property/PropertyDataValueMergeBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/AnnotationValidator.java
catalog-be/src/main/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtil.java
catalog-be/src/main/java/org/openecomp/sdc/be/impl/ComponentsUtils.java
catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentPropertyServlet.java
catalog-be/src/main/java/org/openecomp/sdc/be/servlets/TypesFetchServlet.java
catalog-be/src/main/java/org/openecomp/sdc/be/tosca/GroupExportParserImpl.java
catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PolicyExportParserImpl.java
catalog-be/src/main/java/org/openecomp/sdc/be/tosca/ToscaExportHandler.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ArtifactsBusinessLogicTest.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/AttributeBusinessLogicTest.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogicTest.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/DataTypesServiceTest.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/GroupBusinessLogicTest.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/InputsBusinessLogicTest.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/PolicyBusinessLogicTest.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogicTest.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ServiceImportBusinessLogicTest.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/property/PropertyDataValueMergeBusinessLogicTest.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/validation/AnnotationValidatorTest.java
catalog-be/src/test/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtilTest.java
catalog-be/src/test/java/org/openecomp/sdc/be/tosca/GroupExportParserImplTest.java
catalog-be/src/test/java/org/openecomp/sdc/be/tosca/PolicyExportParserImplTest.java
catalog-be/src/test/java/org/openecomp/sdc/be/tosca/ToscaExportHandlerTest.java
catalog-dao/src/main/java/org/openecomp/sdc/be/dao/api/ActionStatus.java
catalog-dao/src/main/java/org/openecomp/sdc/be/resources/data/DataTypeData.java
catalog-model/src/main/java/org/openecomp/sdc/be/model/DataTypeDefinition.java
catalog-model/src/main/java/org/openecomp/sdc/be/model/cache/ApplicationCache.java
catalog-model/src/main/java/org/openecomp/sdc/be/model/cache/ApplicationDataTypeCache.java
catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentInstanceOperation.java
catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/DataTypeOperation.java [new file with mode: 0644]
catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java
catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupOperation.java
catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java
catalog-model/src/test/java/org/openecomp/sdc/be/model/cache/ApplicationDataTypeCacheTest.java
catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/DataTypeOperationTest.java [new file with mode: 0644]
catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperationTest.java
catalog-ui/src/app/app.ts
catalog-ui/src/app/models/components/component.ts
catalog-ui/src/app/models/data-types.ts
catalog-ui/src/app/models/model.ts
catalog-ui/src/app/ng2/pages/attributes-outputs/attribute-creator/attribute-creator.component.ts
catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/param-row/param-row.component.ts
catalog-ui/src/app/ng2/pages/properties-assignment/declare-list/declare-list.component.ts
catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.module.ts
catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.html
catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.ts
catalog-ui/src/app/ng2/pages/properties-assignment/property-creator/property-creator.component.ts
catalog-ui/src/app/ng2/services/data-type.service.ts
catalog-ui/src/app/ng2/services/model.service.ts
catalog-ui/src/app/ng2/services/responses/component-generic-response.ts
catalog-ui/src/app/services/data-types-service.ts
catalog-ui/src/app/view-models/forms/property-forms/base-property-form/property-form-base-model.ts
catalog-ui/src/app/view-models/forms/property-forms/component-property-form/property-form-view-model.ts
catalog-ui/src/app/view-models/forms/property-forms/select-datatype-modal/select-datatype-modal-view-model.ts
catalog-ui/src/app/view-models/forms/property-forms/select-datatype-modal/select-datatype-modal-view.html
catalog-ui/src/app/view-models/workspace/tabs/general/general-view-model.ts
common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/AttributeDataDefinition.java
common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/DataTypeDataDefinition.java
common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/PropertyDataDefinition.java

index df13e80..cbbd5ee 100644 (file)
@@ -2536,3 +2536,12 @@ errors:
         message: "Error: Component '%1' with Vendor Release '%2' already exists.",
         messageId: "SVC4152"
     }
+
+    #-----------SVC4153---------------------------
+    # %1 - "Model name"
+    DATA_TYPES_NOT_LOADED: {
+        code: 500,
+        message: "Error: Could not fetch data types from data base with model %1",
+        messageId: "SVC4153"
+    }
+
index f8d4871..953f5e3 100644 (file)
@@ -54,7 +54,7 @@ public class AnnotationBusinessLogic {
                 if (isNotEmpty(inputAnnotationList)) {
                     for (Annotation annotation : inputAnnotationList) {
                         AnnotationTypeDefinition dbAnnotationTypeDefinition = annotationTypeOperations.getLatestType(annotation.getType());
-                        validateMergeAndSetAnnoProps(annotation, dbAnnotationTypeDefinition);
+                        validateMergeAndSetAnnoProps(annotation, dbAnnotationTypeDefinition, input.getModel());
                     }
                 }
                 input.setAnnotations(inputAnnotationList);
@@ -66,15 +66,16 @@ public class AnnotationBusinessLogic {
         return annotationTypeOperations;
     }
 
-    private void validateMergeAndSetAnnoProps(Annotation annotation, AnnotationTypeDefinition dbAnnotationTypeDefinition) {
-        annotationValidator.validateAnnotationsProperties(annotation, dbAnnotationTypeDefinition);
+    private void validateMergeAndSetAnnoProps(final Annotation annotation, final AnnotationTypeDefinition dbAnnotationTypeDefinition,
+                                              final String model) {
+        annotationValidator.validateAnnotationsProperties(annotation, dbAnnotationTypeDefinition, model);
         List<PropertyDataDefinition> mergedPropertiesList = mergePropsOfAnnoDataTypeWithParsedAnnoProps(annotation.getProperties(),
             dbAnnotationTypeDefinition.getProperties());
         annotation.setProperties(mergedPropertiesList);
     }
 
-    private List<PropertyDataDefinition> mergePropsOfAnnoDataTypeWithParsedAnnoProps(List<PropertyDataDefinition> annoProperties,
-                                                                                     List<PropertyDefinition> typePropertiesList) {
+    private List<PropertyDataDefinition> mergePropsOfAnnoDataTypeWithParsedAnnoProps(final List<PropertyDataDefinition> annoProperties,
+                                                                                     final List<PropertyDefinition> typePropertiesList) {
         Set<PropertyDataDefinition> mergedPropertiesSet = new HashSet<>(typePropertiesList);
         Map<String, PropertyDefinition> typePropsMap = MapUtil.toMap(typePropertiesList, PropertyDefinition::getName);
         for (PropertyDataDefinition propertyDataDefinitionObject : annoProperties) {
index 687a5d5..2380d48 100644 (file)
@@ -104,13 +104,14 @@ public class AttributeBusinessLogic extends BaseBusinessLogic {
             if (isAttributeExist(resource.getAttributes(), resourceId, newAttributeDef.getName())) {
                 return Either.right(componentsUtils.getResponseFormat(ActionStatus.ATTRIBUTE_ALREADY_EXIST, newAttributeDef.getName()));
             }
-            Map<String, DataTypeDefinition> eitherAllDataTypes = getAllDataTypes(applicationDataTypeCache);
+            // fetch DataTypes by Model Name
+            Map<String, DataTypeDefinition> allDataTypes = componentsUtils.getAllDataTypes(applicationDataTypeCache, resource.getModel());
             // validate property default values
-            Either<Boolean, ResponseFormat> defaultValuesValidation = validateAttributeDefaultValue(newAttributeDef, eitherAllDataTypes);
+            Either<Boolean, ResponseFormat> defaultValuesValidation = validateAttributeDefaultValue(newAttributeDef, allDataTypes);
             if (defaultValuesValidation.isRight()) {
                 return Either.right(defaultValuesValidation.right().value());
             }
-            handleAttributeDefaultValue(newAttributeDef, eitherAllDataTypes);
+            handleAttributeDefaultValue(newAttributeDef, allDataTypes);
             // add the new attribute to resource on graph
 
             // need to get StorageOperationStatus and convert to ActionStatus from
@@ -252,14 +253,14 @@ public class AttributeBusinessLogic extends BaseBusinessLogic {
             if (eitherAttribute.isRight()) {
                 return Either.right(eitherAttribute.right().value());
             }
-            Map<String, DataTypeDefinition> eitherAllDataTypes = getAllDataTypes(applicationDataTypeCache);
+            Map<String, DataTypeDefinition> allDataTypes = componentsUtils.getAllDataTypes(applicationDataTypeCache, resource.getModel());
             // validate attribute default values
-            Either<Boolean, ResponseFormat> defaultValuesValidation = validateAttributeDefaultValue(newAttDef, eitherAllDataTypes);
+            Either<Boolean, ResponseFormat> defaultValuesValidation = validateAttributeDefaultValue(newAttDef, allDataTypes);
             if (defaultValuesValidation.isRight()) {
                 return Either.right(defaultValuesValidation.right().value());
             }
             // add the new property to resource on graph
-            StorageOperationStatus validateAndUpdateAttribute = attributeOperation.validateAndUpdateAttribute(newAttDef, eitherAllDataTypes);
+            StorageOperationStatus validateAndUpdateAttribute = attributeOperation.validateAndUpdateAttribute(newAttDef, allDataTypes);
             if (validateAndUpdateAttribute != StorageOperationStatus.OK) {
                 log.debug("Problem while updating attribute with id {}. Reason - {}", attributeId, validateAndUpdateAttribute);
                 result = Either.right(componentsUtils
index 792e696..3cb7680 100644 (file)
@@ -118,7 +118,6 @@ public abstract class BaseBusinessLogic {
     protected AttributeOperation attributeOperation;
     protected ApplicationDataTypeCache applicationDataTypeCache;
     protected ToscaOperationFacade toscaOperationFacade;
-    protected ApplicationDataTypeCache dataTypeCache;
     protected IGroupOperation groupOperation;
     protected IGroupInstanceOperation groupInstanceOperation;
     protected InterfaceLifecycleOperation interfaceLifecycleTypeOperation;
@@ -190,11 +189,6 @@ public abstract class BaseBusinessLogic {
         this.policyTypeOperation = policyTypeOperation;
     }
 
-    @Autowired
-    public void setDataTypeCache(ApplicationDataTypeCache dataTypeCache) {
-        this.dataTypeCache = dataTypeCache;
-    }
-
     @Autowired
     public void setPropertyOperation(PropertyOperation propertyOperation) {
         this.propertyOperation = propertyOperation;
@@ -341,21 +335,12 @@ public abstract class BaseBusinessLogic {
     }
 
     <T extends PropertyDataDefinition> String updateInputPropertyObjectValue(T property) {
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypesEither = dataTypeCache.getAll();
-        if (allDataTypesEither.isRight()) {
-            JanusGraphOperationStatus status = allDataTypesEither.right().value();
-            BeEcompErrorManager.getInstance()
-                .logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + status,
-                    ErrorSeverity.ERROR);
-            throw new ByActionStatusComponentException(
-                componentsUtils.convertFromStorageResponse(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status)));
-        }
-        Map<String, DataTypeDefinition> allDataTypes = allDataTypesEither.left().value();
         String propertyType = property.getType();
         String innerType = getInnerType(property);
         // Specific Update Logic
         Either<Object, Boolean> isValid = propertyOperation
-            .validateAndUpdatePropertyValue(propertyType, property.getValue(), true, innerType, allDataTypes);
+            .validateAndUpdatePropertyValue(propertyType, property.getValue(), true, innerType,
+                componentsUtils.getAllDataTypes(applicationDataTypeCache, property.getModel()));
         String newValue = property.getValue();
         if (isValid.isRight()) {
             Boolean res = isValid.right().value();
@@ -433,21 +418,6 @@ public abstract class BaseBusinessLogic {
         return null;
     }
 
-    protected Map<String, DataTypeDefinition> getAllDataTypes(ApplicationDataTypeCache applicationDataTypeCache) {
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = applicationDataTypeCache.getAll();
-        if (allDataTypes.isRight()) {
-            JanusGraphOperationStatus operationStatus = allDataTypes.right().value();
-            if (operationStatus == JanusGraphOperationStatus.NOT_FOUND) {
-                BeEcompErrorManager.getInstance().logInternalDataError("FetchDataTypes", "Data types are not loaded", ErrorSeverity.ERROR);
-                throw new ByActionStatusComponentException(ActionStatus.DATA_TYPE_CANNOT_BE_EMPTY);
-            } else {
-                BeEcompErrorManager.getInstance().logInternalFlowError("FetchDataTypes", "Failed to fetch data types", ErrorSeverity.ERROR);
-                throw new ByActionStatusComponentException(ActionStatus.GENERAL_ERROR);
-            }
-        }
-        return allDataTypes.left().value();
-    }
-
     Either<Boolean, ResponseFormat> validatePropertyDefaultValue(IComplexDefaultValue property, Map<String, DataTypeDefinition> dataTypes) {
         String type;
         String innerType = null;
@@ -706,7 +676,8 @@ public abstract class BaseBusinessLogic {
         if (inputPathArr.length > 1) {
             inputPathArr = ArrayUtils.remove(inputPathArr, 0);
         }
-        Map<String, DataTypeDefinition> dataTypeDefinitionMap = applicationDataTypeCache.getAll().left().value();
+        final Map<String, DataTypeDefinition> dataTypeDefinitionMap =
+            componentsUtils.getAllDataTypes(applicationDataTypeCache, inputDefinition.getModel());
         String propertyType = inputDefinition.getParentPropertyType();
         for (String anInputPathArr : inputPathArr) {
             if (ToscaType.isPrimitiveType(propertyType)) {
@@ -774,4 +745,8 @@ public abstract class BaseBusinessLogic {
         }
         return result.left().value();
     }
+
+    public String getComponentModelByComponentId(final String componentId) throws BusinessLogicException {
+        return getComponent(componentId).getModel();
+    }
 }
index bce343e..e2c3df1 100644 (file)
@@ -2227,16 +2227,7 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic {
     }
 
     private <T extends PropertyDefinition> Either<String, ResponseFormat> validatePropertyObjectValue(T property, String newValue, boolean isInput) {
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypesEither = dataTypeCache.getAll();
-        if (allDataTypesEither.isRight()) {
-            JanusGraphOperationStatus status = allDataTypesEither.right().value();
-            BeEcompErrorManager.getInstance()
-                .logInternalFlowError(UPDATE_PROPERTY_CONTEXT, "Failed to update property value on instance. Status is " + status,
-                    ErrorSeverity.ERROR);
-            return Either.right(componentsUtils
-                .getResponseFormat(componentsUtils.convertFromStorageResponse(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status))));
-        }
-        Map<String, DataTypeDefinition> allDataTypes = allDataTypesEither.left().value();
+        final Map<String, DataTypeDefinition> allDataTypes = componentsUtils.getAllDataTypes(applicationDataTypeCache, property.getModel());
         String propertyType = property.getType();
         String innerType = getInnerType(property);
 
@@ -2275,16 +2266,7 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic {
     }
 
     private <T extends PropertyDefinition> Either<String, ResponseFormat> updatePropertyObjectValue(T property, boolean isInput) {
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypesEither = dataTypeCache.getAll();
-        if (allDataTypesEither.isRight()) {
-            JanusGraphOperationStatus status = allDataTypesEither.right().value();
-            BeEcompErrorManager.getInstance()
-                .logInternalFlowError(UPDATE_PROPERTY_CONTEXT, "Failed to update property value on instance. Status is " + status,
-                    ErrorSeverity.ERROR);
-            return Either.right(componentsUtils
-                .getResponseFormat(componentsUtils.convertFromStorageResponse(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status))));
-        }
-        Map<String, DataTypeDefinition> allDataTypes = allDataTypesEither.left().value();
+        final Map<String, DataTypeDefinition> allDataTypes = componentsUtils.getAllDataTypes(applicationDataTypeCache, property.getModel());
         String innerType = null;
         String propertyType = property.getType();
         ToscaPropertyType type = ToscaPropertyType.isValidType(propertyType);
@@ -2341,15 +2323,6 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic {
     }
 
     private <T extends AttributeDefinition> Either<String, ResponseFormat> updateAttributeObjectValue(final T attribute) {
-        final Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypesEither = dataTypeCache.getAll();
-        if (allDataTypesEither.isRight()) {
-            JanusGraphOperationStatus status = allDataTypesEither.right().value();
-            BeEcompErrorManager.getInstance()
-                .logInternalFlowError(UPDATE_PROPERTY_CONTEXT, "Failed to update attribute value on instance. Status is " + status,
-                    ErrorSeverity.ERROR);
-            return Either.right(componentsUtils
-                .getResponseFormat(componentsUtils.convertFromStorageResponse(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status))));
-        }
         String innerType = null;
         final String attributeType = attribute.getType();
         final ToscaPropertyType type = ToscaPropertyType.isValidType(attributeType);
@@ -2374,7 +2347,8 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic {
         // Specific Update Logic
         String newValue = attribute.getValue();
 
-        final var isValid = attributeOperation.validateAndUpdateAttributeValue(attribute, innerType, allDataTypesEither.left().value());
+        final var isValid = attributeOperation.validateAndUpdateAttributeValue(attribute, innerType,
+            componentsUtils.getAllDataTypes(applicationDataTypeCache, attribute.getModel()));
         if (isValid.isRight()) {
             final Boolean res = isValid.right().value();
             if (!Boolean.TRUE.equals(res)) {
index be61e7b..db53800 100644 (file)
@@ -40,7 +40,7 @@ public class DataTypesService {
     }
 
     public Either<Map<String, DataTypeDefinition>, ResponseFormat> getAllDataTypes(ApplicationDataTypeCache applicationDataTypeCache) {
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = applicationDataTypeCache.getAll();
+        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = applicationDataTypeCache.getAll(null);
         if (allDataTypes.isRight()) {
             JanusGraphOperationStatus operationStatus = allDataTypes.right().value();
             if (operationStatus == JanusGraphOperationStatus.NOT_FOUND) {
index 0d85675..ae9ab04 100644 (file)
@@ -1068,19 +1068,13 @@ public class GroupBusinessLogic extends BaseBusinessLogic {
                                                                       boolean fromCsar) {
         Map<String, GroupDataDefinition> groups = new HashMap<>();
         Either<List<GroupDefinition>, ResponseFormat> result = null;
-        Either<List<GroupDefinition>, StorageOperationStatus> createGroupsResult = null;
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = dataTypeCache.getAll();
-        if (allDataTypes.isRight()) {
-            JanusGraphOperationStatus status = allDataTypes.right().value();
-            BeEcompErrorManager.getInstance()
-                .logInternalFlowError("AddPropertyToGroup", "Failed to add property to group. Status is " + status, ErrorSeverity.ERROR);
-            return Either.right(componentsUtils
-                .getResponseFormat(componentsUtils.convertFromStorageResponse(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status))));
-        }
+        Either<List<GroupDefinition>, StorageOperationStatus> createGroupsResult;
+
         // handle groups and convert to tosca data
         if (groupDefinitions != null && !groupDefinitions.isEmpty()) {
             for (GroupDefinition groupDefinition : groupDefinitions) {
-                Either<GroupDefinition, ResponseFormat> handleGroupRes = handleGroup(component, groupDefinition, allDataTypes.left().value());
+                Either<GroupDefinition, ResponseFormat> handleGroupRes = handleGroup(component, groupDefinition,
+                    componentsUtils.getAllDataTypes(applicationDataTypeCache, component.getModel()));
                 if (handleGroupRes.isRight()) {
                     result = Either.right(handleGroupRes.right().value());
                     break;
@@ -1150,18 +1144,11 @@ public class GroupBusinessLogic extends BaseBusinessLogic {
         Either<List<GroupDefinition>, ResponseFormat> result = null;
         Either<List<GroupDefinition>, StorageOperationStatus> createGroupsResult = null;
         List<GroupDataDefinition> groups = new ArrayList<>();
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = dataTypeCache.getAll();
-        if (allDataTypes.isRight()) {
-            JanusGraphOperationStatus status = allDataTypes.right().value();
-            BeEcompErrorManager.getInstance()
-                .logInternalFlowError("AddPropertyToGroup", "Failed to add property to group. Status is " + status, ErrorSeverity.ERROR);
-            return Either.right(componentsUtils
-                .getResponseFormat(componentsUtils.convertFromStorageResponse(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status))));
-        }
         // handle groups and convert to tosca data
         if (groupDefinitions != null && !groupDefinitions.isEmpty()) {
             for (GroupDefinition groupDefinition : groupDefinitions) {
-                Either<GroupDefinition, ResponseFormat> handleGroupRes = handleGroup(component, groupDefinition, allDataTypes.left().value());
+                Either<GroupDefinition, ResponseFormat> handleGroupRes = handleGroup(component, groupDefinition,
+                    componentsUtils.getAllDataTypes(applicationDataTypeCache, component.getModel()));
                 if (handleGroupRes.isRight()) {
                     result = Either.right(handleGroupRes.right().value());
                     break;
index 0d9681a..28faf73 100644 (file)
@@ -289,14 +289,14 @@ public class InputsBusinessLogic extends BaseBusinessLogic {
                 }
             }
             //Validate value and Constraint of input
-            Either<Boolean, ResponseFormat> constraintValidatorResponse = validateInputValueConstraint(inputs);
+            Either<Boolean, ResponseFormat> constraintValidatorResponse = validateInputValueConstraint(inputs, component.getModel());
             if (constraintValidatorResponse.isRight()) {
                 log.error("Failed validation value and constraint of property: {}", constraintValidatorResponse.right().value());
                 return Either.right(constraintValidatorResponse.right().value());
             }
             validateCanWorkOnComponent(component, userId);
             Map<String, DataTypeDefinition> dataTypes;
-            dataTypes = getAllDataTypes(applicationDataTypeCache);
+            dataTypes = componentsUtils.getAllDataTypes(applicationDataTypeCache, component.getModel());
             List<InputDefinition> componentsOldInputs = Optional.ofNullable(component.getInputs()).orElse(Collections.emptyList());
             for (InputDefinition newInput : inputs) {
                 InputDefinition currInput = getInputFromInputsListById(componentsOldInputs, newInput);
@@ -335,7 +335,7 @@ public class InputsBusinessLogic extends BaseBusinessLogic {
         return result;
     }
 
-    private Either<Boolean, ResponseFormat> validateInputValueConstraint(List<InputDefinition> inputs) {
+    private Either<Boolean, ResponseFormat> validateInputValueConstraint(List<InputDefinition> inputs, final String model) {
         PropertyValueConstraintValidationUtil propertyValueConstraintValidationUtil = PropertyValueConstraintValidationUtil.getInstance();
         List<InputDefinition> inputDefinitions = new ArrayList<>();
         for (InputDefinition inputDefinition : inputs) {
@@ -350,7 +350,7 @@ public class InputsBusinessLogic extends BaseBusinessLogic {
             }
             inputDefinitions.add(inputDef);
         }
-        return propertyValueConstraintValidationUtil.validatePropertyConstraints(inputDefinitions, applicationDataTypeCache);
+        return propertyValueConstraintValidationUtil.validatePropertyConstraints(inputDefinitions, applicationDataTypeCache, model);
     }
 
     public Either<List<ComponentInstanceInput>, ResponseFormat> getInputsForComponentInput(String userId, String componentId, String inputId) {
@@ -571,7 +571,7 @@ public class InputsBusinessLogic extends BaseBusinessLogic {
 
         List<InputDefinition> resourceProperties = component.getInputs();
 
-        Map<String, DataTypeDefinition> dataTypes = getAllDataTypes(applicationDataTypeCache);
+        final Map<String, DataTypeDefinition> dataTypes = componentsUtils.getAllDataTypes(applicationDataTypeCache, component.getModel());
 
         for (Map.Entry<String, InputDefinition> inputDefinition : inputs.entrySet()) {
             String inputName = inputDefinition.getKey();
@@ -609,8 +609,7 @@ public class InputsBusinessLogic extends BaseBusinessLogic {
 
         log.trace("#createListInputsInGraph: enter");
 
-        Map<String, DataTypeDefinition> dataTypes = getAllDataTypes(
-            applicationDataTypeCache);
+        Map<String, DataTypeDefinition> dataTypes = componentsUtils.getAllDataTypes(applicationDataTypeCache, component.getModel());
         dataTypes.putAll(privateDataTypes);
 
         for (Map.Entry<String, InputDefinition> inputDefinition : inputs.entrySet()) {
@@ -829,7 +828,7 @@ public class InputsBusinessLogic extends BaseBusinessLogic {
                 result = Either.right(componentsUtils.getResponseFormat(ActionStatus.INPUT_ALREADY_EXIST, inputName));
                 return result;
             }
-            Map<String, DataTypeDefinition> allDataTypes = getAllDataTypes(applicationDataTypeCache);
+            Map<String, DataTypeDefinition> allDataTypes = componentsUtils.getAllDataTypes(applicationDataTypeCache, component.getModel());
             // validate input default values
             Either<Boolean, ResponseFormat> defaultValuesValidation = validatePropertyDefaultValue(newInputDefinition, allDataTypes);
             if (defaultValuesValidation.isRight()) {
index d7564ed..bbdae47 100644 (file)
@@ -78,10 +78,6 @@ public class PropertyBusinessLogic extends BaseBusinessLogic {
             artifactToscaOperation);
     }
 
-    public Map<String, DataTypeDefinition> getAllDataTypes() {
-        return getAllDataTypes(applicationDataTypeCache);
-    }
-
     /**
      * Create new property on component in graph
      *
@@ -123,7 +119,7 @@ public class PropertyBusinessLogic extends BaseBusinessLogic {
                 result = Either.right(componentsUtils.getResponseFormat(ActionStatus.PROPERTY_ALREADY_EXIST, propertyName));
                 return result;
             } else {
-                Map<String, DataTypeDefinition> allDataTypes = getAllDataTypes(applicationDataTypeCache);
+                Map<String, DataTypeDefinition> allDataTypes = componentsUtils.getAllDataTypes(applicationDataTypeCache, component.getModel());
                 // validate property default values
                 Either<Boolean, ResponseFormat> defaultValuesValidation = validatePropertyDefaultValue(newPropertyDefinition, allDataTypes);
                 if (defaultValuesValidation.isRight()) {
index 2435b5e..c401948 100644 (file)
@@ -83,7 +83,6 @@ import org.openecomp.sdc.be.config.BeEcompErrorManager;
 import org.openecomp.sdc.be.config.BeEcompErrorManager.ErrorSeverity;
 import org.openecomp.sdc.be.config.ConfigurationManager;
 import org.openecomp.sdc.be.dao.api.ActionStatus;
-import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
 import org.openecomp.sdc.be.datamodel.api.HighestFilterEnum;
 import org.openecomp.sdc.be.datamodel.utils.ArtifactUtils;
@@ -152,7 +151,6 @@ import org.openecomp.sdc.be.model.operations.api.IGroupOperation;
 import org.openecomp.sdc.be.model.operations.api.IGroupTypeOperation;
 import org.openecomp.sdc.be.model.operations.api.IInterfaceLifecycleOperation;
 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
-import org.openecomp.sdc.be.model.operations.impl.DaoStatusConverter;
 import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation;
 import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder;
 import org.openecomp.sdc.be.model.operations.utils.ComponentValidationUtils;
@@ -2301,21 +2299,10 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
         Map<String, List<AttributeDefinition>> instAttributes = new HashMap<>();
         List<RequirementCapabilityRelDef> relations = new ArrayList<>();
         Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
-        log.debug("#createResourceInstancesRelations - Before get all datatypes. ");
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = dataTypeCache.getAll();
-        if (allDataTypes.isRight()) {
-            JanusGraphOperationStatus status = allDataTypes.right().value();
-            BeEcompErrorManager.getInstance()
-                .logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + status,
-                    ErrorSeverity.ERROR);
-            loggerSupportability.log(LoggerSupportabilityActions.CREATE_RELATIONS, resource.getComponentMetadataForSupportLog(), StatusCode.ERROR,
-                "ERROR while update property value on instance. Status is: " + status);
-            throw new ByActionStatusComponentException(
-                componentsUtils.convertFromStorageResponse(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status)), yamlName);
-        }
         Resource finalResource = resource;
         uploadResInstancesMap.values().forEach(
-            i -> processComponentInstance(yamlName, finalResource, componentInstancesList, allDataTypes, instProperties, instCapabilities,
+            i -> processComponentInstance(yamlName, finalResource, componentInstancesList,
+                componentsUtils.getAllDataTypes(applicationDataTypeCache, resource.getModel()), instProperties, instCapabilities,
                 instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes, existingNodeTypesByResourceNames, instInputs, i));
         resource.getComponentInstances().stream().filter(i -> !i.isCreatedFromCsar()).forEach(
             i -> processUiComponentInstance(oldResource, i, instCapabilities, instRequirements, instDeploymentArtifacts, instArtifacts,
@@ -2536,7 +2523,7 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
     }
 
     private void processComponentInstance(String yamlName, Resource resource, List<ComponentInstance> componentInstancesList,
-                                          Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes,
+                                          Map<String, DataTypeDefinition> allDataTypes,
                                           Map<String, List<ComponentInstanceProperty>> instProperties,
                                           Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties,
                                           Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instRequirements,
@@ -2574,12 +2561,12 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
         }
         if (originResource.getResourceType() != ResourceTypeEnum.CVFC) {
             ResponseFormat addPropertiesValueToRiRes = addPropertyValuesToRi(uploadComponentInstanceInfo, resource, originResource,
-                currentCompInstance, instProperties, allDataTypes.left().value());
+                currentCompInstance, instProperties, allDataTypes);
             if (addPropertiesValueToRiRes.getStatus() != 200) {
                 throw new ByResponseFormatComponentException(addPropertiesValueToRiRes);
             }
         } else {
-            addInputsValuesToRi(uploadComponentInstanceInfo, resource, originResource, currentCompInstance, instInputs, allDataTypes.left().value());
+            addInputsValuesToRi(uploadComponentInstanceInfo, resource, originResource, currentCompInstance, instInputs, allDataTypes);
         }
     }
 
@@ -2602,7 +2589,7 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
         return originResource;
     }
 
-    private void processComponentInstanceCapabilities(Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes,
+    private void processComponentInstanceCapabilities(Map<String, DataTypeDefinition> allDataTypes,
                                                       Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties,
                                                       UploadComponentInstanceInfo uploadComponentInstanceInfo, ComponentInstance currentCompInstance,
                                                       Resource originResource) {
@@ -2612,18 +2599,18 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
             Map<String, Map<String, UploadPropInfo>> newPropertiesMap = new HashMap<>();
             originResource.getCapabilities().forEach((k, v) -> addCapabilities(originCapabilities, k, v));
             uploadComponentInstanceInfo.getCapabilities().values().forEach(l -> addCapabilitiesProperties(newPropertiesMap, l));
-            updateCapabilityPropertiesValues(allDataTypes, originCapabilities, newPropertiesMap);
+            updateCapabilityPropertiesValues(originCapabilities, newPropertiesMap, allDataTypes);
         } else {
             originCapabilities = originResource.getCapabilities();
         }
         instCapabilties.put(currentCompInstance, originCapabilities);
     }
 
-    private void updateCapabilityPropertiesValues(Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes,
-                                                  Map<String, List<CapabilityDefinition>> originCapabilities,
-                                                  Map<String, Map<String, UploadPropInfo>> newPropertiesMap) {
+    private void updateCapabilityPropertiesValues(Map<String, List<CapabilityDefinition>> originCapabilities,
+                                                  Map<String, Map<String, UploadPropInfo>> newPropertiesMap,
+                                                  Map<String, DataTypeDefinition> allDataTypes) {
         originCapabilities.values().stream().flatMap(Collection::stream).filter(c -> newPropertiesMap.containsKey(c.getName()))
-            .forEach(c -> updatePropertyValues(c.getProperties(), newPropertiesMap.get(c.getName()), allDataTypes.left().value()));
+            .forEach(c -> updatePropertyValues(c.getProperties(), newPropertiesMap.get(c.getName()), allDataTypes));
     }
 
     private void addCapabilitiesProperties(Map<String, Map<String, UploadPropInfo>> newPropertiesMap, List<UploadCapInfo> capabilities) {
@@ -4931,7 +4918,7 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
                 log.info("Invalid type for property {}", property);
                 throw new ByActionStatusComponentException(ActionStatus.INVALID_PROPERTY_TYPE, property.getType(), property.getName());
             }
-            Map<String, DataTypeDefinition> allDataTypes = getAllDataTypes(applicationDataTypeCache);
+            Map<String, DataTypeDefinition> allDataTypes = componentsUtils.getAllDataTypes(applicationDataTypeCache, property.getModel());
             type = property.getType();
             if (type.equals(ToscaPropertyType.LIST.getType()) || type.equals(ToscaPropertyType.MAP.getType())) {
                 ResponseFormat responseFormat = validateMapOrListPropertyType(property, innerType, allDataTypes);
index 6efdab4..9f1669c 100644 (file)
@@ -320,7 +320,7 @@ public class ResourceImportManager {
             if (toscaElements.isLeft()) {
                 final Map<String, Object> toscaAttributes = (Map<String, Object>) foundElements.get(0);
                 if (MapUtils.isNotEmpty(toscaAttributes)) {
-                    resource.setDataTypes(extractDataTypeFromJson(resourceBusinessLogic, toscaAttributes));
+                    resource.setDataTypes(extractDataTypeFromJson(resourceBusinessLogic, toscaAttributes, resource.getModel()));
                 }
             }
             // Derived From
@@ -914,10 +914,12 @@ public class ResourceImportManager {
     }
 
     private List<DataTypeDefinition> extractDataTypeFromJson(final ResourceBusinessLogic resourceBusinessLogic,
-                                                             final Map<String, Object> foundElements) {
+                                                             final Map<String, Object> foundElements,
+                                                             final String model) {
         final List<DataTypeDefinition> dataTypeDefinitionList = new ArrayList<>();
         if (MapUtils.isNotEmpty(foundElements)) {
-            final Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypeCacheAll = resourceBusinessLogic.dataTypeCache.getAll();
+            final Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypeCacheAll =
+                resourceBusinessLogic.applicationDataTypeCache.getAll(model);
             if (dataTypeCacheAll.isLeft()) {
                 for (final Entry<String, Object> attributeNameValue : foundElements.entrySet()) {
                     final Object value = attributeNameValue.getValue();
index 21d27f3..50cf5d8 100644 (file)
@@ -382,11 +382,11 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic {
         if (STATIC.equals(sourceValue)) {
             // Validate constraint on input value
             Either<Boolean, ResponseFormat> constraintValidationResult = validateOperationInputConstraint(operationInputDefinition, consumptionValue,
-                type);
+                type, containerService.getModel());
             if (constraintValidationResult.isRight()) {
                 return Either.right(constraintValidationResult.right().value());
             }
-            return handleConsumptionStaticValue(consumptionValue, type, operation, operationInputDefinition);
+            return handleConsumptionStaticValue(consumptionValue, type, operation, operationInputDefinition, containerService.getModel());
         }
         if (Objects.isNull(sourceValue)) {
             List<PropertyDefinition> propertyDefinitions;
@@ -523,13 +523,13 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic {
     }
 
     public Either<Operation, ResponseFormat> handleConsumptionStaticValue(String value, String type, Operation operation,
-                                                                          OperationInputDefinition operationInputDefinition) {
+                                                                          OperationInputDefinition operationInputDefinition, String model) {
         boolean isInputTypeSimilarToOperation = isAssignedValueFromValidType(type, value);
         if (!isInputTypeSimilarToOperation) {
             return Either.right(componentsUtils.getResponseFormat(ActionStatus.INVALID_CONSUMPTION_TYPE, type));
         }
         //Validate Constraint and Value
-        Either<Boolean, ResponseFormat> constraintValidationResponse = validateOperationInputConstraint(operationInputDefinition, value, type);
+        Either<Boolean, ResponseFormat> constraintValidationResponse = validateOperationInputConstraint(operationInputDefinition, value, type, model);
         if (constraintValidationResponse.isRight()) {
             return Either.right(constraintValidationResponse.right().value());
         }
@@ -538,7 +538,7 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic {
     }
 
     private Either<Boolean, ResponseFormat> validateOperationInputConstraint(OperationInputDefinition operationInputDefinition, String value,
-                                                                             String type) {
+                                                                             String type, String model) {
         ComponentInstanceProperty propertyDefinition = new ComponentInstanceProperty();
         propertyDefinition.setType(operationInputDefinition.getParentPropertyType());
         InputDefinition inputDefinition = new InputDefinition();
@@ -548,8 +548,8 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic {
         if (Objects.nonNull(operationInputDefinition.getParentPropertyType())) {
             inputDefinition.setProperties(Collections.singletonList(propertyDefinition));
         }
-        return PropertyValueConstraintValidationUtil.getInstance()
-            .validatePropertyConstraints(Collections.singletonList(inputDefinition), applicationDataTypeCache);
+        return PropertyValueConstraintValidationUtil.getInstance().validatePropertyConstraints(Collections.singletonList(inputDefinition),
+            applicationDataTypeCache, model);
     }
 
     private void addStaticValueToInputOperation(String value, Operation operation, OperationInputDefinition operationInputDefinition) {
index c0c68d6..1a5a996 100644 (file)
@@ -66,7 +66,6 @@ import org.openecomp.sdc.be.components.validation.component.ComponentValidator;
 import org.openecomp.sdc.be.config.BeEcompErrorManager;
 import org.openecomp.sdc.be.config.ConfigurationManager;
 import org.openecomp.sdc.be.dao.api.ActionStatus;
-import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
 import org.openecomp.sdc.be.datamodel.utils.ArtifactUtils;
 import org.openecomp.sdc.be.datamodel.utils.UiComponentDataConverter;
 import org.openecomp.sdc.be.datatypes.elements.GetInputValueDataDefinition;
@@ -108,6 +107,7 @@ import org.openecomp.sdc.be.model.UploadPropInfo;
 import org.openecomp.sdc.be.model.UploadReqInfo;
 import org.openecomp.sdc.be.model.UploadResourceInfo;
 import org.openecomp.sdc.be.model.User;
+import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.ToscaElement;
 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ArtifactsOperations;
 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.InterfaceOperation;
@@ -120,7 +120,6 @@ import org.openecomp.sdc.be.model.operations.api.IGroupInstanceOperation;
 import org.openecomp.sdc.be.model.operations.api.IGroupOperation;
 import org.openecomp.sdc.be.model.operations.api.IGroupTypeOperation;
 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
-import org.openecomp.sdc.be.model.operations.impl.DaoStatusConverter;
 import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation;
 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
 import org.openecomp.sdc.be.tosca.CsarUtils;
@@ -965,20 +964,14 @@ public class ServiceImportBusinessLogic {
         Map<String, Resource> originCompMap = new HashMap<>();
         List<RequirementCapabilityRelDef> relations = new ArrayList<>();
         Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
+
         log.debug("enter ServiceImportBusinessLogic createResourceInstancesRelations#createResourceInstancesRelations - Before get all datatypes. ");
-        if (serviceBusinessLogic.dataTypeCache != null) {
-            Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = serviceBusinessLogic.dataTypeCache.getAll();
-            if (allDataTypes.isRight()) {
-                JanusGraphOperationStatus status = allDataTypes.right().value();
-                BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance",
-                    "Failed to update property value on instance. Status is " + status, BeEcompErrorManager.ErrorSeverity.ERROR);
-                throw new ComponentException(componentsUtils
-                    .getResponseFormat(componentsUtils.convertFromStorageResponse(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status)),
-                        yamlName));
-            }
+        final ApplicationDataTypeCache applicationDataTypeCache = serviceBusinessLogic.applicationDataTypeCache;
+        if (applicationDataTypeCache != null) {
             Resource finalResource = resource;
             uploadResInstancesMap.values().forEach(
-                i -> processComponentInstance(yamlName, finalResource, componentInstancesList, allDataTypes, instProperties, instCapabilities,
+                i -> processComponentInstance(yamlName, finalResource, componentInstancesList,
+                    componentsUtils.getAllDataTypes(applicationDataTypeCache, finalResource.getModel()), instProperties, instCapabilities,
                     instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes, originCompMap, instInputs, i));
         }
         serviceImportParseLogic.associateComponentInstancePropertiesToComponent(yamlName, resource, instProperties);
@@ -1333,20 +1326,13 @@ public class ServiceImportBusinessLogic {
         List<RequirementCapabilityRelDef> relations = new ArrayList<>();
         Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
         log.debug("enter ServiceImportBusinessLogic  createServiceInstancesRelations#createResourceInstancesRelations - Before get all datatypes. ");
-        if (serviceBusinessLogic.dataTypeCache != null) {
-            Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = serviceBusinessLogic.dataTypeCache.getAll();
-            if (allDataTypes.isRight()) {
-                JanusGraphOperationStatus status = allDataTypes.right().value();
-                BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance",
-                    "Failed to update property value on instance. Status is " + status, BeEcompErrorManager.ErrorSeverity.ERROR);
-                throw new ComponentException(componentsUtils
-                    .getResponseFormat(componentsUtils.convertFromStorageResponse(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status)),
-                        yamlName));
-            }
+        final ApplicationDataTypeCache applicationDataTypeCache = serviceBusinessLogic.applicationDataTypeCache;
+        if (applicationDataTypeCache != null) {
             Service finalResource = service;
             uploadResInstancesMap.values().forEach(
-                i -> processComponentInstance(yamlName, finalResource, componentInstancesList, allDataTypes, instProperties, instCapabilities,
-                    instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes, originCompMap, instInputs, i));
+                i -> processComponentInstance(yamlName, finalResource, componentInstancesList,
+                    componentsUtils.getAllDataTypes(applicationDataTypeCache, finalResource.getModel()), instProperties,
+                    instCapabilities, instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes, originCompMap, instInputs, i));
         }
         serviceImportParseLogic.associateComponentInstancePropertiesToComponent(yamlName, service, instProperties);
         serviceImportParseLogic.associateComponentInstanceInputsToComponent(yamlName, service, instInputs);
@@ -1376,7 +1362,7 @@ public class ServiceImportBusinessLogic {
     }
 
     protected void processComponentInstance(String yamlName, Component component, List<ComponentInstance> componentInstancesList,
-                                            Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes,
+                                            Map<String, DataTypeDefinition> allDataTypes,
                                             Map<String, List<ComponentInstanceProperty>> instProperties,
                                             Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties,
                                             Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instRequirements,
@@ -1416,12 +1402,12 @@ public class ServiceImportBusinessLogic {
         }
         if (originResource.getResourceType() != ResourceTypeEnum.VF) {
             ResponseFormat addPropertiesValueToRiRes = addPropertyValuesToRi(uploadComponentInstanceInfo, component, originResource,
-                currentCompInstance, instProperties, allDataTypes.left().value());
+                currentCompInstance, instProperties, allDataTypes);
             if (addPropertiesValueToRiRes.getStatus() != 200) {
                 throw new ComponentException(addPropertiesValueToRiRes);
             }
         } else {
-            addInputsValuesToRi(uploadComponentInstanceInfo, component, originResource, currentCompInstance, instInputs, allDataTypes.left().value());
+            addInputsValuesToRi(uploadComponentInstanceInfo, component, originResource, currentCompInstance, instInputs, allDataTypes);
         }
     }
 
@@ -1557,7 +1543,7 @@ public class ServiceImportBusinessLogic {
         return componentsUtils.getResponseFormat(ActionStatus.OK);
     }
 
-    protected void processComponentInstanceCapabilities(Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes,
+    protected void processComponentInstanceCapabilities(Map<String, DataTypeDefinition> allDataTypes,
                                                         Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties,
                                                         UploadComponentInstanceInfo uploadComponentInstanceInfo,
                                                         ComponentInstance currentCompInstance, Resource originResource) {
@@ -1569,18 +1555,18 @@ public class ServiceImportBusinessLogic {
             originResource.getCapabilities().forEach((k, v) -> serviceImportParseLogic.addCapabilities(originCapabilities, k, v));
             uploadComponentInstanceInfo.getCapabilities().values()
                 .forEach(l -> serviceImportParseLogic.addCapabilitiesProperties(newPropertiesMap, l));
-            updateCapabilityPropertiesValues(allDataTypes, originCapabilities, newPropertiesMap);
+            updateCapabilityPropertiesValues(allDataTypes, originCapabilities, newPropertiesMap, originResource.getModel());
         } else {
             originCapabilities = originResource.getCapabilities();
         }
         instCapabilties.put(currentCompInstance, originCapabilities);
     }
 
-    protected void updateCapabilityPropertiesValues(Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes,
+    protected void updateCapabilityPropertiesValues(Map<String, DataTypeDefinition> allDataTypes,
                                                     Map<String, List<CapabilityDefinition>> originCapabilities,
-                                                    Map<String, Map<String, UploadPropInfo>> newPropertiesMap) {
+                                                    Map<String, Map<String, UploadPropInfo>> newPropertiesMap, String model) {
         originCapabilities.values().stream().flatMap(Collection::stream).filter(c -> newPropertiesMap.containsKey(c.getName()))
-            .forEach(c -> updatePropertyValues(c.getProperties(), newPropertiesMap.get(c.getName()), allDataTypes.left().value()));
+            .forEach(c -> updatePropertyValues(c.getProperties(), newPropertiesMap.get(c.getName()), allDataTypes));
     }
 
     protected void updatePropertyValues(List<ComponentInstanceProperty> properties, Map<String, UploadPropInfo> newProperties,
index 9888129..272798f 100644 (file)
@@ -43,15 +43,15 @@ public class PropertyDataValueMergeBusinessLogic {
 
     private static final Logger LOGGER = Logger.getLogger(PropertyDataValueMergeBusinessLogic.class);
     private final PropertyValueMerger propertyValueMerger;
-    private final ApplicationDataTypeCache dataTypeCache;
+    private final ApplicationDataTypeCache applicationDataTypeCache;
     private final PropertyConvertor propertyConvertor;
     private final Gson gson = new Gson();
 
     @Autowired
-    public PropertyDataValueMergeBusinessLogic(PropertyValueMerger propertyValueMerger, ApplicationDataTypeCache dataTypeCache,
+    public PropertyDataValueMergeBusinessLogic(PropertyValueMerger propertyValueMerger, ApplicationDataTypeCache applicationDataTypeCache,
                                                PropertyConvertor propertyConvertor) {
         this.propertyValueMerger = propertyValueMerger;
-        this.dataTypeCache = dataTypeCache;
+        this.applicationDataTypeCache = applicationDataTypeCache;
         this.propertyConvertor = propertyConvertor;
     }
 
@@ -60,7 +60,7 @@ public class PropertyDataValueMergeBusinessLogic {
      * @param newProp the new property to merge value into
      */
     public void mergePropertyValue(PropertyDataDefinition oldProp, PropertyDataDefinition newProp, List<String> getInputNamesToMerge) {
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypesEither = dataTypeCache.getAll();
+        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypesEither = applicationDataTypeCache.getAll(oldProp.getModel());
         if (dataTypesEither.isRight()) {
             LOGGER.debug("failed to fetch data types, skip merging of previous property values. status: {}", dataTypesEither.right().value());
         } else {
@@ -116,4 +116,5 @@ public class PropertyDataValueMergeBusinessLogic {
         String getInputEntry = "\"%s\":\"%s\"";
         return value != null && value.contains(String.format(getInputEntry, ToscaFunctions.GET_INPUT.getFunctionName(), inputName));
     }
+
 }
index b4f6bbe..a443e5f 100644 (file)
@@ -21,52 +21,49 @@ package org.openecomp.sdc.be.components.validation;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
-import org.openecomp.sdc.be.components.impl.ResourceImportManager;
 import org.openecomp.sdc.be.components.impl.utils.ExceptionUtils;
 import org.openecomp.sdc.be.datatypes.elements.Annotation;
 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
 import org.openecomp.sdc.be.impl.ComponentsUtils;
 import org.openecomp.sdc.be.model.AnnotationTypeDefinition;
-import org.openecomp.sdc.be.model.DataTypeDefinition;
 import org.openecomp.sdc.be.model.PropertyDefinition;
 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
-import org.openecomp.sdc.common.log.wrappers.Logger;
 import org.springframework.stereotype.Component;
 
 @Component
 public class AnnotationValidator {
 
-    private static final Logger log = Logger.getLogger(ResourceImportManager.class);
     private final PropertyValidator propertyValidator;
     private final ExceptionUtils exceptionUtils;
-    private final ApplicationDataTypeCache dataTypeCache;
+    private final ApplicationDataTypeCache applicationDataTypeCache;
     private final ComponentsUtils componentsUtils;
 
-    public AnnotationValidator(PropertyValidator propertyValidator, ExceptionUtils exceptionUtils, ApplicationDataTypeCache dataTypeCache,
+    public AnnotationValidator(PropertyValidator propertyValidator, ExceptionUtils exceptionUtils, ApplicationDataTypeCache applicationDataTypeCache,
                                ComponentsUtils componentsUtils) {
         this.propertyValidator = propertyValidator;
         this.exceptionUtils = exceptionUtils;
-        this.dataTypeCache = dataTypeCache;
+        this.applicationDataTypeCache = applicationDataTypeCache;
         this.componentsUtils = componentsUtils;
     }
 
-    public List<Annotation> validateAnnotationsProperties(Annotation annotation, AnnotationTypeDefinition dbAnnotationTypeDefinition) {
+    public List<Annotation> validateAnnotationsProperties(final Annotation annotation, final AnnotationTypeDefinition dbAnnotationTypeDefinition,
+                                                          final String model) {
         List<Annotation> validAnnotations = new ArrayList<>();
-        if (annotation != null && propertiesValidator(annotation.getProperties(), dbAnnotationTypeDefinition.getProperties())) {
+        if (annotation != null && propertiesValidator(annotation.getProperties(), dbAnnotationTypeDefinition.getProperties(), model)) {
             validAnnotations.add(annotation);
         }
         return validAnnotations;
     }
 
-    private boolean propertiesValidator(List<PropertyDataDefinition> properties, List<PropertyDefinition> dbAnnotationTypeDefinitionProperties) {
+    private boolean propertiesValidator(final List<PropertyDataDefinition> properties,
+                                        final List<PropertyDefinition> dbAnnotationTypeDefinitionProperties, final String model) {
         List<PropertyDefinition> propertyDefinitionsList = new ArrayList<>();
         if (properties == null || dbAnnotationTypeDefinitionProperties == null) {
             return false;
         }
         properties.stream().forEach(property -> propertyDefinitionsList.add(new PropertyDefinition(property)));
-        Map<String, DataTypeDefinition> allDataTypes = dataTypeCache.getAll().left().on(error -> exceptionUtils.rollBackAndThrow(error));
-        propertyValidator.thinPropertiesValidator(propertyDefinitionsList, dbAnnotationTypeDefinitionProperties, allDataTypes);
+        propertyValidator.thinPropertiesValidator(propertyDefinitionsList, dbAnnotationTypeDefinitionProperties,
+            applicationDataTypeCache.getAll(model).left().on(error -> exceptionUtils.rollBackAndThrow(error)));
         return true;
     }
 }
index 9569247..e7c6ef3 100644 (file)
@@ -62,10 +62,11 @@ public class PropertyValueConstraintValidationUtil {
         return new PropertyValueConstraintValidationUtil();
     }
 
-    public Either<Boolean, ResponseFormat> validatePropertyConstraints(Collection<? extends PropertyDefinition> propertyDefinitionList,
-                                                                       ApplicationDataTypeCache applicationDataTypeCache) {
+    public Either<Boolean, ResponseFormat> validatePropertyConstraints(final Collection<? extends PropertyDefinition> propertyDefinitionList,
+                                                                       final ApplicationDataTypeCache applicationDataTypeCache,
+                                                                       final String model) {
         ResponseFormatManager responseFormatManager = getResponseFormatManager();
-        dataTypeDefinitionCache = applicationDataTypeCache.getAll().left().value();
+        dataTypeDefinitionCache = applicationDataTypeCache.getAll(model).left().value();
         CollectionUtils.emptyIfNull(propertyDefinitionList).stream().filter(this::isValuePresent)
             .forEach(this::evaluatePropertyTypeForConstraintValidation);
         if (CollectionUtils.isNotEmpty(errorMessages)) {
index 607497c..3b55e67 100644 (file)
@@ -75,9 +75,11 @@ import org.openecomp.sdc.be.components.impl.exceptions.ByActionStatusComponentEx
 import org.openecomp.sdc.be.components.impl.exceptions.ByResponseFormatComponentException;
 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
 import org.openecomp.sdc.be.config.BeEcompErrorManager;
+import org.openecomp.sdc.be.config.BeEcompErrorManager.ErrorSeverity;
 import org.openecomp.sdc.be.dao.api.ActionStatus;
 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
 import org.openecomp.sdc.be.dao.graph.datatype.AdditionalInformationEnum;
+import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
 import org.openecomp.sdc.be.datamodel.utils.ConstraintConvertor;
 import org.openecomp.sdc.be.datatypes.elements.AdditionalInfoParameterInfo;
 import org.openecomp.sdc.be.datatypes.elements.RequirementNodeFilterPropertyDataDefinition;
@@ -97,6 +99,7 @@ import org.openecomp.sdc.be.model.PropertyConstraint;
 import org.openecomp.sdc.be.model.RequirementDefinition;
 import org.openecomp.sdc.be.model.Resource;
 import org.openecomp.sdc.be.model.User;
+import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
 import org.openecomp.sdc.be.model.operations.StorageException;
 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
 import org.openecomp.sdc.be.model.operations.impl.PropertyOperation.PropertyConstraintDeserialiser;
@@ -1542,4 +1545,20 @@ public class ComponentsUtils {
         return uiConstraintsMaps.stream().map(dataMap -> new com.fasterxml.jackson.databind.ObjectMapper().convertValue(dataMap, UIConstraint.class))
             .collect(Collectors.toList());
     }
+
+    public Map<String, DataTypeDefinition> getAllDataTypes(final ApplicationDataTypeCache applicationDataTypeCache, final String model) {
+        final Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = applicationDataTypeCache.getAll(model);
+        if (allDataTypes.isRight()) {
+            final var operationStatus = allDataTypes.right().value();
+            if (operationStatus == JanusGraphOperationStatus.NOT_FOUND) {
+                BeEcompErrorManager.getInstance().logInternalDataError("FetchDataTypes", "Data types are not loaded", ErrorSeverity.ERROR);
+                throw new ByActionStatusComponentException(ActionStatus.DATA_TYPES_NOT_LOADED, model);
+            } else {
+                BeEcompErrorManager.getInstance().logInternalFlowError("FetchDataTypes", "Failed to fetch data types", ErrorSeverity.ERROR);
+                throw new ByActionStatusComponentException(ActionStatus.GENERAL_ERROR);
+            }
+        }
+        return allDataTypes.left().value();
+    }
+
 }
index 6d82e2b..fec5dd8 100644 (file)
@@ -315,9 +315,10 @@ public class ComponentPropertyServlet extends BeGenericServlet {
                 ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT);
                 return buildErrorResponse(responseFormat);
             }
-            //Validate value and Constraint of property
+            //Validate value and Constraint of property and Fetch all data types from cache
             Either<Boolean, ResponseFormat> constraintValidatorResponse = PropertyValueConstraintValidationUtil.getInstance()
-                .validatePropertyConstraints(properties.values(), applicationDataTypeCache);
+                .validatePropertyConstraints(properties.values(), applicationDataTypeCache,
+                    propertyBusinessLogic.getComponentModelByComponentId(componentId));
             if (constraintValidatorResponse.isRight()) {
                 log.error("Failed validation value and constraint of property: {}", constraintValidatorResponse.right().value());
                 return buildErrorResponse(constraintValidatorResponse.right().value());
index ac195f9..9d38174 100644 (file)
@@ -120,7 +120,8 @@ public class TypesFetchServlet extends AbstractValidationsServlet {
         @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
         @ApiResponse(responseCode = "404", description = "Data types not found")})
     @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE)
-    public Response getAllDataTypesServlet(@Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) {
+    public Response getAllDataTypesServlet(@Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId,
+                                           @Parameter(description = "model") @QueryParam("model") String modelName) {
         Wrapper<Response> responseWrapper = new Wrapper<>();
         Wrapper<User> userWrapper = new Wrapper<>();
         init();
@@ -128,7 +129,8 @@ public class TypesFetchServlet extends AbstractValidationsServlet {
         if (responseWrapper.isEmpty()) {
             String url = request.getMethod() + " " + request.getRequestURI();
             log.debug("Start handle request of {} - modifier id is {}", url, userId);
-            Map<String, DataTypeDefinition> dataTypes = propertyBusinessLogic.getAllDataTypes();
+            final Map<String, DataTypeDefinition> dataTypes = resourceBusinessLogic.getComponentsUtils()
+                .getAllDataTypes(resourceBusinessLogic.getApplicationDataTypeCache(), modelName);
             String dataTypeJson = gson.toJson(dataTypes);
             Response okResponse = buildOkResponse(getComponentsUtils().getResponseFormat(ActionStatus.OK), dataTypeJson);
             responseWrapper.setInnerElement(okResponse);
index 0b0ecd2..3042087 100644 (file)
@@ -66,17 +66,17 @@ public class GroupExportParserImpl implements GroupExportParser {
     private static final Logger log = Logger.getLogger(GroupExportParserImpl.class);
     private final PropertyConvertor propertyConvertor;
     private Map<String, DataTypeDefinition> dataTypes;
-    private ApplicationDataTypeCache dataTypeCache;
+    private ApplicationDataTypeCache applicationDataTypeCache;
 
     @Autowired
-    public GroupExportParserImpl(ApplicationDataTypeCache dataTypeCache, PropertyConvertor propertyConvertor) {
-        this.dataTypeCache = dataTypeCache;
+    public GroupExportParserImpl(ApplicationDataTypeCache applicationDataTypeCache, PropertyConvertor propertyConvertor) {
+        this.applicationDataTypeCache = applicationDataTypeCache;
         this.propertyConvertor = propertyConvertor;
         this.dataTypes = getDataTypes();
     }
 
     private Map<String, DataTypeDefinition> getDataTypes() {
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypesEither = dataTypeCache.getAll();
+        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypesEither = applicationDataTypeCache.getAll(null);
         if (dataTypesEither.isRight()) {
             log.error("Failed to retrieve all data types {}", dataTypesEither.right().value());
             throw new SdcResourceNotFoundException();
@@ -86,7 +86,7 @@ public class GroupExportParserImpl implements GroupExportParser {
 
     @EventListener
     public void onDataTypesCacheChangedEvent(ApplicationDataTypeCache.DataTypesCacheChangedEvent dataTypesCacheChangedEvent) {
-        dataTypes = dataTypesCacheChangedEvent.getNewData();
+        dataTypes = dataTypesCacheChangedEvent.getNewData().get(null);
         log.debug("Data types cache updated.");
     }
 
index d544d34..7fe8e94 100644 (file)
@@ -52,19 +52,19 @@ import org.springframework.context.event.EventListener;
 public class PolicyExportParserImpl implements PolicyExportParser {
 
     private static final Logger log = Logger.getLogger(PolicyExportParserImpl.class);
-    private ApplicationDataTypeCache dataTypeCache;
+    private ApplicationDataTypeCache applicationDataTypeCache;
     private Map<String, DataTypeDefinition> dataTypes;
     private PropertyConvertor propertyConvertor;
 
     @Autowired
-    public PolicyExportParserImpl(ApplicationDataTypeCache dataTypeCache, PropertyConvertor propertyConvertor) {
-        this.dataTypeCache = dataTypeCache;
+    public PolicyExportParserImpl(ApplicationDataTypeCache applicationDataTypeCache, PropertyConvertor propertyConvertor) {
+        this.applicationDataTypeCache = applicationDataTypeCache;
         this.propertyConvertor = propertyConvertor;
         this.dataTypes = getDataTypes();
     }
 
     private Map<String, DataTypeDefinition> getDataTypes() {
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypesEither = dataTypeCache.getAll();
+        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypesEither = applicationDataTypeCache.getAll(null);
         if (dataTypesEither.isRight()) {
             log.error("Failed to retrieve all data types {}", dataTypesEither.right().value());
             throw new SdcResourceNotFoundException();
@@ -74,7 +74,7 @@ public class PolicyExportParserImpl implements PolicyExportParser {
 
     @EventListener
     public void onDataTypesCacheChangedEvent(ApplicationDataTypeCache.DataTypesCacheChangedEvent dataTypesCacheChangedEvent) {
-        dataTypes = dataTypesCacheChangedEvent.getNewData();
+        dataTypes = dataTypesCacheChangedEvent.getNewData().get(null);
         log.debug("Data types cache updated.");
     }
 
index 3fe3bd5..ef5192c 100644 (file)
@@ -157,7 +157,7 @@ public class ToscaExportHandler {
         .of("Service Function", "Service Role", "Naming Policy", "Service Type");
     private static final YamlUtil yamlUtil = new YamlUtil();
     private static final String COULD_NOT_PARSE_COMPONENT_ATTRIBUTES_COMPONENT_UNIQUE_ID = "Could not parse component '{}' attributes. Component unique id '{}'.";
-    private ApplicationDataTypeCache dataTypeCache;
+    private ApplicationDataTypeCache applicationDataTypeCache;
     private ToscaOperationFacade toscaOperationFacade;
     private CapabilityRequirementConverter capabilityRequirementConverter;
     private PolicyExportParser policyExportParser;
@@ -170,7 +170,7 @@ public class ToscaExportHandler {
     private InterfacesOperationsConverter interfacesOperationsConverter;
 
     @Autowired
-    public ToscaExportHandler(final ApplicationDataTypeCache dataTypeCache,
+    public ToscaExportHandler(final ApplicationDataTypeCache applicationDataTypeCache,
                               final ToscaOperationFacade toscaOperationFacade,
                               final CapabilityRequirementConverter capabilityRequirementConverter,
                               final PolicyExportParser policyExportParser,
@@ -181,7 +181,7 @@ public class ToscaExportHandler {
                               final OutputConverter outputConverter,
                               final InterfaceLifecycleOperation interfaceLifecycleOperation,
                               final InterfacesOperationsConverter interfacesOperationsConverter) {
-        this.dataTypeCache = dataTypeCache;
+        this.applicationDataTypeCache = applicationDataTypeCache;
         this.toscaOperationFacade = toscaOperationFacade;
         this.capabilityRequirementConverter = capabilityRequirementConverter;
         this.policyExportParser = policyExportParser;
@@ -323,7 +323,7 @@ public class ToscaExportHandler {
         if (MapUtils.isNotEmpty(proxyInterfaceTypes)) {
             toscaNode.setInterface_types(proxyInterfaceTypes);
         }
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypesEither = dataTypeCache.getAll();
+        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypesEither = applicationDataTypeCache.getAll(component.getModel());
         if (dataTypesEither.isRight()) {
             log.debug("Failed to retrieve all data types {}", dataTypesEither.right().value());
             return Either.right(ToscaError.GENERAL_ERROR);
@@ -701,7 +701,7 @@ public class ToscaExportHandler {
         List<String> allGlobalInterfaceTypes = lifecycleTypeEither.left().value().values().stream().map(InterfaceDataDefinition::getType)
             .collect(Collectors.toList());
         toscaNode.setInterface_types(addInterfaceTypeElement(component, allGlobalInterfaceTypes));
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypesEither = dataTypeCache.getAll();
+        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypesEither = applicationDataTypeCache.getAll(component.getModel());
         if (dataTypesEither.isRight()) {
             log.debug("Failed to fetch all data types :", dataTypesEither.right().value());
             return Either.right(ToscaError.GENERAL_ERROR);
@@ -1182,7 +1182,7 @@ public class ToscaExportHandler {
         String derivedFrom = ((Resource) origComponent).getToscaResourceName();
 
         toscaNodeType.setDerived_from(derivedFrom);
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypesEither = dataTypeCache.getAll();
+        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypesEither = applicationDataTypeCache.getAll(origComponent.getModel());
         if (dataTypesEither.isRight()) {
             log.debug("Failed to retrieve all data types {}", dataTypesEither.right().value());
         }
index 834964b..341dce9 100644 (file)
@@ -246,7 +246,7 @@ public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock {
         when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(eitherCreate);
         when(toscaOperationFacade.validateCsarUuidUniqueness(Mockito.anyString())).thenReturn(StorageOperationStatus.OK);
         Map<String, DataTypeDefinition> emptyDataTypes = new HashMap<String, DataTypeDefinition>();
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.left(emptyDataTypes));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(emptyDataTypes));
         when(mockJanusGraphDao.commit()).thenReturn(JanusGraphOperationStatus.OK);
 
         Either<Component, StorageOperationStatus> resourceStorageOperationStatusEither = Either
index 7b0b40c..7db449d 100644 (file)
@@ -135,7 +135,7 @@ public class AttributeBusinessLogicTest extends BaseBusinessLogicMock {
         Map<String, DataTypeDefinition> data = new HashMap<>();
         data.put("ONE", new DataTypeDefinition());
         Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = Either.left(data);
-        when(applicationDataTypeCache.getAll()).thenReturn(allDataTypes);
+        when(applicationDataTypeCache.getAll(null)).thenReturn(allDataTypes);
 
         when(attributeOperation.isAttributeDefaultValueValid(any(), any())).thenReturn(true);
         Either<AttributeDefinition, ResponseFormat> response;
@@ -237,7 +237,7 @@ public class AttributeBusinessLogicTest extends BaseBusinessLogicMock {
         Map<String, DataTypeDefinition> data = new HashMap<>();
         data.put("ONE", new DataTypeDefinition());
         Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = Either.left(data);
-        when(applicationDataTypeCache.getAll()).thenReturn(allDataTypes);
+        when(applicationDataTypeCache.getAll(null)).thenReturn(allDataTypes);
 
         when(attributeOperation.isAttributeDefaultValueValid(any(), any())).thenReturn(true);
         Either<AttributeDefinition, ResponseFormat> response;
index 5c8b6ce..a2996c5 100644 (file)
@@ -186,7 +186,7 @@ class ComponentInstanceBusinessLogicTest {
     @Mock
     private JanusGraphDao janusGraphDao;
     @Mock
-    private ApplicationDataTypeCache dataTypeCache;
+    private ApplicationDataTypeCache applicationDataTypeCache;
     @Mock
     private PropertyOperation propertyOperation;
     @Mock
@@ -321,7 +321,7 @@ class ComponentInstanceBusinessLogicTest {
             .thenReturn(Either.left(component));
         when(graphLockOperation.lockComponent(containerComponentID, NodeTypeEnum.ResourceInstance))
             .thenReturn(StorageOperationStatus.OK);
-        when(dataTypeCache.getAll()).thenReturn(Either.left(types));
+        when(componentsUtils.getAllDataTypes(applicationDataTypeCache, component.getModel())).thenReturn(types);
         when(propertyOperation.validateAndUpdatePropertyValue(property.getType(), "newVal", true, null, types))
             .thenReturn(Either.left("newVal"));
         when(propertyOperation.validateAndUpdateRules("string", property.getRules(),
@@ -420,7 +420,7 @@ class ComponentInstanceBusinessLogicTest {
             .thenReturn(Either.left(component));
         when(graphLockOperation.lockComponent(containerComponentID, NodeTypeEnum.ResourceInstance))
             .thenReturn(StorageOperationStatus.OK);
-        when(dataTypeCache.getAll()).thenReturn(Either.left(types));
+        when(componentsUtils.getAllDataTypes(applicationDataTypeCache, component.getModel())).thenReturn(types);
         when(propertyOperation.validateAndUpdatePropertyValue(property.getType(), "newVal", true, null, types))
             .thenReturn(Either.right(false));
         when(componentsUtils.convertFromStorageResponse(StorageOperationStatus.BAD_REQUEST))
index 0349985..46326c3 100644 (file)
 
 package org.openecomp.sdc.be.components.impl;
 
+import static org.mockito.Mockito.when;
+
 import fj.data.Either;
+import java.util.HashMap;
+import java.util.Map;
 import junit.framework.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -30,11 +34,6 @@ import org.openecomp.sdc.be.impl.ComponentsUtils;
 import org.openecomp.sdc.be.model.DataTypeDefinition;
 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
 
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.mockito.Mockito.when;
-
 public class DataTypesServiceTest {
     ApplicationDataTypeCache applicationDataTypeCache = Mockito.mock(ApplicationDataTypeCache.class);
     ComponentsUtils componentsUtils = Mockito.mock(ComponentsUtils.class);
@@ -48,7 +47,7 @@ public class DataTypesServiceTest {
     public void setup() {
         mapreturn.put("Demo",new DataTypeDefinition());
         allDataTypes = Either.left(mapreturn);
-        when(applicationDataTypeCache.getAll()).thenReturn(allDataTypes);
+        when(applicationDataTypeCache.getAll(null)).thenReturn(allDataTypes);
 
     }
 
@@ -60,7 +59,7 @@ public class DataTypesServiceTest {
     @Test
     public void getAllDataTypes_failure() {
         allDataTypes = Either.right(janusGraphOperationStatus);
-        when(applicationDataTypeCache.getAll()).thenReturn(allDataTypes);
+        when(applicationDataTypeCache.getAll(null)).thenReturn(allDataTypes);
         Assert.assertEquals(true,dataTypesService.getAllDataTypes(applicationDataTypeCache).isRight());
     }
 
index 2520e44..e7cadc4 100644 (file)
@@ -95,7 +95,7 @@ class GroupBusinessLogicTest {
     @InjectMocks
     private GroupBusinessLogic test;
     @Mock
-    private ApplicationDataTypeCache dataTypeCache;
+    private ApplicationDataTypeCache applicationDataTypeCache;
     @Mock
     private ComponentsUtils componentsUtils;
     @Mock
@@ -115,7 +115,7 @@ class GroupBusinessLogicTest {
 
     @BeforeEach
     public void setUp() throws Exception {
-        test.setDataTypeCache(dataTypeCache);
+        test.setApplicationDataTypeCache(applicationDataTypeCache);
         test.setToscaOperationFacade(toscaOperationFacade);
         test.setPropertyOperation(propertyOperation);
         test.setComponentsUtils(componentsUtils);
@@ -129,7 +129,6 @@ class GroupBusinessLogicTest {
         List<GroupDefinition> groupDefinitions = new ArrayList<>();
         GroupDefinition groupDefinition = new GroupDefinition();
         groupDefinitions.add(groupDefinition);
-        when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
         result = test.createGroups(component, groupDefinitions, true);
         assertThat(result.isRight()).isTrue();
     }
@@ -146,8 +145,8 @@ class GroupBusinessLogicTest {
         groupDefinition.setType(Constants.DEFAULT_GROUP_VF_MODULE);
         GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
         Map<String, DataTypeDefinition> map = new HashMap<>();
-        when(dataTypeCache.getAll()).thenReturn(Either.left(map));
-        when(groupTypeOperation.getLatestGroupTypeByType(Constants.DEFAULT_GROUP_VF_MODULE, null, true)).thenReturn(Either.left(groupTypeDefinition));
+        when(groupTypeOperation.getLatestGroupTypeByType(Constants.DEFAULT_GROUP_VF_MODULE, component.getModel(), true))
+            .thenReturn(Either.left(groupTypeDefinition));
         when(groupsOperation.createGroups(any(Component.class), anyMap())).thenReturn(Either.left(groupDefinitions));
         when(groupsOperation.addCalculatedCapabilitiesWithProperties(anyString(), anyMap(), anyMap())).thenReturn(StorageOperationStatus.OK);
         result = test.createGroups(component, groupDefinitions, true);
@@ -203,7 +202,6 @@ class GroupBusinessLogicTest {
         Map<String, Set<String>> excludedGroupTypesMap = new HashMap<>();
         GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
         Map<String, DataTypeDefinition> map = new HashMap<>();
-        when(dataTypeCache.getAll()).thenReturn(Either.left(map));
         when(accessValidations.validateUserCanWorkOnComponent(componentId, compTypeEnum, userId, "CreateGroup")).thenReturn(component);
 
         ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
index 308d272..b9f6bf0 100644 (file)
 
 package org.openecomp.sdc.be.components.impl;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyMap;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
 import fj.data.Either;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.junit.Before;
@@ -65,26 +84,6 @@ import org.openecomp.sdc.common.impl.ExternalConfiguration;
 import org.openecomp.sdc.common.impl.FSConfigurationSource;
 import org.openecomp.sdc.exception.ResponseFormat;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyMap;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
 
 public class InputsBusinessLogicTest {
 
@@ -467,7 +466,7 @@ public class InputsBusinessLogicTest {
         when(propertyDeclarationOrchestrator.getPropOwnerId(componentInstInputsMap)).thenReturn(COMPONENT_INSTANCE_ID);
         when(propertyDeclarationOrchestrator.declarePropertiesToListInput(service, componentInstInputsMap, listInput)).thenReturn(Either.left(listInput));
         // for BaseOperation.getAllDataTypes:
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>())); // don't use Collections.emptyMap
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>())); // don't use Collections.emptyMap
         // for BaseOperation.validatePropertyDefaultValue:
         when(propertyOperation.isPropertyTypeValid(any(), any())).thenReturn(true);
         when(propertyOperation.isPropertyInnerTypeValid(any(),any())).thenReturn(new ImmutablePair<>(listInput.getSchemaType(), true));
@@ -540,14 +539,16 @@ public class InputsBusinessLogicTest {
         when(graphLockOperation.lockComponent(COMPONENT_ID, NodeTypeEnum.Service)).thenReturn(StorageOperationStatus.OK);
         when(toscaOperationFacadeMock.addDataTypesToComponent(dataTypesMapCaptor.capture(), eq(COMPONENT_ID))).thenReturn(Either.left(new ArrayList<>()));
         when(propertyDeclarationOrchestrator.getPropOwnerId(componentInstInputsMap)).thenReturn(COMPONENT_INSTANCE_ID);
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
+        when(applicationDataTypeCache.getAll(service.getModel())).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
+        when(componentsUtilsMock.getAllDataTypes(applicationDataTypeCache, service.getModel()))
+            .thenThrow(new ByActionStatusComponentException(ActionStatus.DATA_TYPES_NOT_LOADED));
 
         try {
             Either<List<InputDefinition>, ResponseFormat> result =
                     testInstance.createListInput(USER_ID, COMPONENT_ID, ComponentTypeEnum.SERVICE, createListInputParams, true, false);
         } catch (ByActionStatusComponentException e) {
-            assertEquals(ActionStatus.DATA_TYPE_CANNOT_BE_EMPTY, e.getActionStatus());
-            verify(applicationDataTypeCache, times(1)).getAll();
+            assertEquals(ActionStatus.DATA_TYPES_NOT_LOADED, e.getActionStatus());
+            verify(componentsUtilsMock, times(1)).getAllDataTypes(applicationDataTypeCache, service.getModel());
             return;
         }
         fail();
@@ -563,7 +564,7 @@ public class InputsBusinessLogicTest {
         when(graphLockOperation.lockComponent(COMPONENT_ID, NodeTypeEnum.Service)).thenReturn(StorageOperationStatus.OK);
         when(toscaOperationFacadeMock.addDataTypesToComponent(dataTypesMapCaptor.capture(), eq(COMPONENT_ID))).thenReturn(Either.left(new ArrayList<>()));
         when(propertyDeclarationOrchestrator.getPropOwnerId(componentInstInputsMap)).thenReturn(COMPONENT_INSTANCE_ID);
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>())); // don't use Collections.emptyMap
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>())); // don't use Collections.emptyMap
         // for BaseOperation.validatePropertyDefaultValue:
         when(propertyOperation.isPropertyTypeValid(any(), any())).thenReturn(false);
 
@@ -583,7 +584,7 @@ public class InputsBusinessLogicTest {
         when(graphLockOperation.lockComponent(COMPONENT_ID, NodeTypeEnum.Service)).thenReturn(StorageOperationStatus.OK);
         when(toscaOperationFacadeMock.addDataTypesToComponent(dataTypesMapCaptor.capture(), eq(COMPONENT_ID))).thenReturn(Either.left(new ArrayList<>()));
         when(propertyDeclarationOrchestrator.getPropOwnerId(componentInstInputsMap)).thenReturn(COMPONENT_INSTANCE_ID);
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>())); // don't use Collections.emptyMap
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>())); // don't use Collections.emptyMap
         // for BaseOperation.validatePropertyDefaultValue:
         when(propertyOperation.isPropertyTypeValid(any(), any())).thenReturn(true);
         when(propertyOperation.isPropertyInnerTypeValid(any(),any())).thenReturn(new ImmutablePair<>(listInput.getSchemaType(), true));
@@ -788,7 +789,7 @@ public class InputsBusinessLogicTest {
         when(graphLockOperation.lockComponent(COMPONENT_ID, NodeTypeEnum.Service)).thenReturn(StorageOperationStatus.OK);
         // used in validateInputValueConstraint
         Map<String, DataTypeDefinition> dataTypeMap = new HashMap<>();
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.left(dataTypeMap)); // don't use Collections.emptyMap
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(dataTypeMap)); // don't use Collections.emptyMap
         // used in updateInputObjectValue
         when(propertyOperation.validateAndUpdatePropertyValue(INPUT_TYPE, NEW_VALUE, true, null, dataTypeMap))
             .thenReturn(Either.left(NEW_VALUE));
index 627c536..a183d52 100644 (file)
 package org.openecomp.sdc.be.components.impl;
 
 
+import static org.assertj.core.api.Java6Assertions.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyMap;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.when;
+
 import fj.data.Either;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import org.apache.commons.collections.CollectionUtils;
 import org.junit.Before;
 import org.junit.BeforeClass;
@@ -70,22 +85,6 @@ import org.openecomp.sdc.common.impl.ExternalConfiguration;
 import org.openecomp.sdc.common.impl.FSConfigurationSource;
 import org.openecomp.sdc.exception.ResponseFormat;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static org.assertj.core.api.Java6Assertions.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyBoolean;
-import static org.mockito.ArgumentMatchers.anyMap;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.when;
-
 @RunWith(MockitoJUnitRunner.class)
 public class PolicyBusinessLogicTest {
 
@@ -104,7 +103,7 @@ public class PolicyBusinessLogicTest {
     @Mock
     private JanusGraphDao janusGraphDao;
     @Mock
-    private ApplicationDataTypeCache dataTypeCache;
+    private ApplicationDataTypeCache applicationDataTypeCache;
     @Mock
     private PropertyOperation propertyOperation;
     @Mock
@@ -151,7 +150,7 @@ public class PolicyBusinessLogicTest {
         businessLogic.setUserValidations(userValidations);
         businessLogic.setGraphLockOperation(graphLockOperation);
         businessLogic.setPolicyTypeOperation(policyTypeOperation);
-        businessLogic.setDataTypeCache(dataTypeCache);
+        businessLogic.setApplicationDataTypeCache(applicationDataTypeCache);
         businessLogic.setPropertyOperation(propertyOperation);
         businessLogic.setPropertyDeclarationOrchestrator(propertyDeclarationOrchestrator);
     }
@@ -205,7 +204,6 @@ public class PolicyBusinessLogicTest {
         when(toscaOperationFacade.associatePolicyToComponent(eq(COMPONENT_ID), any(PolicyDefinition.class), eq(0))).thenReturn(Either.left(policy));
         when(toscaOperationFacade.getToscaFullElement(eq(COMPONENT_ID))).thenReturn(Either.left(newResource));
         when(toscaOperationFacade.updatePolicyOfComponent(eq(COMPONENT_ID), any(PolicyDefinition.class), any(PromoteVersionEnum.class))).thenReturn(Either.left(policy));
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
         when(propertyOperation.validateAndUpdatePropertyValue(eq(null), eq(prop1), anyBoolean(), eq(null), anyMap())).thenReturn(Either.left(prop1));
         when(propertyOperation.validateAndUpdatePropertyValue(eq(null), eq(prop2), anyBoolean(), eq(null), anyMap())).thenReturn(Either.left(prop2));
 
@@ -318,7 +316,6 @@ public class PolicyBusinessLogicTest {
     @Test
     public void updatePolicyPropertiesSuccessTest(){
         stubValidateAndLockSuccess(CREATE_POLICY);
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
         String prop1 = "Name";
         String prop2 = "Type";
         when(propertyOperation.validateAndUpdatePropertyValue(eq(null), eq(prop1), anyBoolean(), eq(null), anyMap())).thenReturn(Either.left(prop1));
index f0900f7..a2893af 100644 (file)
@@ -30,11 +30,9 @@ import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyList;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.when;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
 
 import fj.data.Either;
 import java.io.File;
@@ -71,7 +69,6 @@ import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.ArtifactOpera
 import org.openecomp.sdc.be.components.impl.exceptions.ByActionStatusComponentException;
 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
 import org.openecomp.sdc.be.components.impl.generic.GenericTypeBusinessLogic;
-import org.openecomp.sdc.be.components.impl.utils.YamlTemplateParsingHandlerTest;
 import org.openecomp.sdc.be.components.lifecycle.LifecycleBusinessLogic;
 import org.openecomp.sdc.be.components.lifecycle.LifecycleChangeInfoWithAction;
 import org.openecomp.sdc.be.components.merge.resource.ResourceDataMergeBusinessLogic;
@@ -114,7 +111,6 @@ import org.openecomp.sdc.be.model.PropertyDefinition;
 import org.openecomp.sdc.be.model.RequirementDefinition;
 import org.openecomp.sdc.be.model.Resource;
 import org.openecomp.sdc.be.model.UploadComponentInstanceInfo;
-import org.openecomp.sdc.be.model.UploadReqInfo;
 import org.openecomp.sdc.be.model.User;
 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ArtifactsOperations;
@@ -181,8 +177,7 @@ public class ResourceBusinessLogicTest {
        private final CatalogOperation catalogOperation = Mockito.mock(CatalogOperation.class);
        private final ICapabilityTypeOperation capabilityTypeOperation = Mockito.mock(ICapabilityTypeOperation.class);
        private final PropertyOperation propertyOperation = Mockito.mock(PropertyOperation.class);
-    private final ApplicationDataTypeCache applicationDataTypeCache = Mockito.mock(ApplicationDataTypeCache.class);
-    private final ApplicationDataTypeCache dataTypeCache = Mockito.mock(ApplicationDataTypeCache.class);
+       private final ApplicationDataTypeCache applicationDataTypeCache = Mockito.mock(ApplicationDataTypeCache.class);
        private final WebAppContextWrapper webAppContextWrapper = Mockito.mock(WebAppContextWrapper.class);
        private final UserValidations userValidations = Mockito.mock(UserValidations.class);
        private final WebApplicationContext webAppContext = Mockito.mock(WebApplicationContext.class);
@@ -307,8 +302,7 @@ public class ResourceBusinessLogicTest {
                when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(eitherCreate);
                when(catalogOperation.updateCatalog(Mockito.any(), Mockito.any())).thenReturn(ActionStatus.OK);
                Map<String, DataTypeDefinition> emptyDataTypes = new HashMap<>();
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.left(emptyDataTypes));
-        when(dataTypeCache.getAll()).thenReturn(Either.left(emptyDataTypes));
+               when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(emptyDataTypes));
                when(mockJanusGraphDao.commit()).thenReturn(JanusGraphOperationStatus.OK);
 
                // BL object
@@ -329,8 +323,7 @@ public class ResourceBusinessLogicTest {
                bl.setGraphLockOperation(graphLockOperation);
                bl.setPropertyOperation(propertyOperation);
                bl.setJanusGraphDao(mockJanusGraphDao);
-        bl.setApplicationDataTypeCache(applicationDataTypeCache);
-        bl.setDataTypeCache(dataTypeCache);
+               bl.setApplicationDataTypeCache(applicationDataTypeCache);
                bl.setGenericTypeBusinessLogic(genericTypeBusinessLogic);
                bl.setCatalogOperations(catalogOperation);
                toscaOperationFacade.setNodeTypeOperation(nodeTypeOperation);
@@ -440,7 +433,7 @@ public class ResourceBusinessLogicTest {
                }
                return resource;
        }
-       
+
           private Resource createResourceObjectWithModel(boolean afterCreate) {
                Resource resource = new Resource();
                resource.setName(RESOURCE_NAME);
@@ -1454,19 +1447,19 @@ public class ResourceBusinessLogicTest {
        public void createResourceFromCsarTest() {
                bl.createResourceFromCsar(resourceResponse, user, new HashMap<>(), "");
        }
-       
+
        @Test()
     public void testCreateResourceFromCsarWithModel() throws URISyntaxException, ZipException {
-        
+
         final File csarFile = new File(
                 ResourceBusinessLogicTest.class.getClassLoader().getResource("csars/nonOnapCsar.csar").toURI());
         final Map<String, byte[]> csar = ZipUtils.readZip(csarFile, false);
-        
+
        String resourceYml =  new String(csar.get("Definitions/my_vnf.yaml"));
-        
+
        YamlTemplateParsingHandler yamlTemplateParser = new YamlTemplateParsingHandler(mockJanusGraphDao, null, Mockito.mock(AnnotationBusinessLogic.class), null);
        final ParsedToscaYamlInfo parsedToscaYamlInfo =  yamlTemplateParser.parseResourceInfoFromYAML("Definitions/my_vnf.yml", resourceYml, Collections.EMPTY_MAP, Collections.EMPTY_MAP, "myVnf", resourceResponse);
-        
+
         when(toscaOperationFacade.getLatestByToscaResourceName(anyString())).thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
         Resource vduCp = new Resource();
         vduCp.setToscaResourceName("tosca.nodes.nfv.VduCp");
@@ -1498,7 +1491,7 @@ public class ResourceBusinessLogicTest {
         vduCp.getProperties().add(roleProp);
         when(toscaOperationFacade.getByToscaResourceNameMatchingVendorRelease("tosca.nodes.nfv.VduCp", "1.0.0")).thenReturn(Either.left(vduCp));
 
-        
+
         when(yamlTemplateParsingHandler.parseResourceInfoFromYAML(any(), any(), any(), any(), any(), any())).thenReturn(parsedToscaYamlInfo);
 
         UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
@@ -1509,7 +1502,7 @@ public class ResourceBusinessLogicTest {
         resourceResponse.setModel("testModel");
         resourceResponse.setResourceType(ResourceTypeEnum.VF);
         resourceResponse.setProperties(new ArrayList<>());
-        
+
         Resource derivedFrom = new Resource();
         List<PropertyDefinition> properties = new ArrayList<>();
         PropertyDefinition baseTypeProp = new PropertyDefinition();
@@ -1518,7 +1511,7 @@ public class ResourceBusinessLogicTest {
         properties.add(baseTypeProp);
         derivedFrom.setProperties(properties );
         when(genericTypeBusinessLogic.fetchDerivedFromGenericType(any(), eq("tosca.nodes.nfv.VNF"))).thenReturn(Either.left(derivedFrom));
-        
+
         when(toscaOperationFacade
         .validateComponentNameAndModelExists("myVnf", "testModel", ResourceTypeEnum.VF, ComponentTypeEnum.RESOURCE)).thenReturn(Either.left(false));
 
@@ -1528,6 +1521,7 @@ public class ResourceBusinessLogicTest {
         when(toscaOperationFacade.associateDeploymentArtifactsToInstances(any(), any(), any())).thenReturn(StorageOperationStatus.OK);
         when(toscaOperationFacade.associateInstAttributeToComponentToInstances(any(), any())).thenReturn(StorageOperationStatus.OK);
         when(toscaOperationFacade.associateResourceInstances(any(Component.class), anyString(), anyList())).thenReturn(Either.left(Collections.EMPTY_LIST));
+               when(applicationDataTypeCache.getAll(resourceResponse.getModel())).thenReturn(Either.left(emptyDataTypes));
 
         doAnswer(invocation -> {
             Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instReqs = invocation.getArgument(1);
@@ -1538,10 +1532,10 @@ public class ResourceBusinessLogicTest {
         }).
         when(toscaOperationFacade).associateOrAddCalculatedCapReq(any(), any(), any());
 
-        
+
         when(toscaOperationFacade.updateCalculatedCapabilitiesRequirements(any(), any(), any())).thenReturn(StorageOperationStatus.OK);
         when(groupBusinessLogic.validateUpdateVfGroupNames(any(), any())).thenReturn(Either.left(Collections.EMPTY_MAP));
-        
+
         ComponentInstance ci = new ComponentInstance();
         List<ComponentInstance> cis = new ArrayList<>();
         cis.add(ci);
@@ -1558,10 +1552,10 @@ public class ResourceBusinessLogicTest {
         doAnswer(invocation -> {
             return Either.left(resourceResponse);
         }).when(toscaOperationFacade).getToscaFullElement("myVnf");
-        
-        
+
+
         Resource result = bl.createResourceFromCsar(resourceResponse, user, csar, "1234");
-        
+
         assertEquals("myDomain.myVnf", result.getToscaResourceName());
         List<String> propIds = result.getProperties().stream().map(prop -> prop.getUniqueId()).collect(Collectors.toList());
         assertTrue(propIds.contains("myVnf.propInBase"));
@@ -1573,7 +1567,7 @@ public class ResourceBusinessLogicTest {
         assertTrue(propIds.contains("myVnf.provider"));
         assertTrue(propIds.contains("myVnf.software_version"));
         assertTrue(propIds.contains("myVnf.vnfm_info"));
-        
+
         final List<String> reqsName = new ArrayList<>();
 
         final List<ComponentInstance> cisWithExtReq = result.getComponentInstances().stream().filter(instance -> instance.getRequirements().get("tosca.nodes.nfv.VduCp").get(0).isExternal()).collect(Collectors.toList());
index 6655ee2..adfd5de 100644 (file)
 package org.openecomp.sdc.be.components.impl;
 
 
+import static org.assertj.core.api.Java6Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.anyBoolean;
+import static org.mockito.Mockito.anyList;
+import static org.mockito.Mockito.anyMap;
+import static org.mockito.Mockito.anyString;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 import fj.data.Either;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.EnumMap;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.collections.map.HashedMap;
 import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -42,7 +68,35 @@ import org.openecomp.sdc.be.externalapi.servlet.ArtifactExternalServlet;
 import org.openecomp.sdc.be.impl.ComponentsUtils;
 import org.openecomp.sdc.be.impl.ServletUtils;
 import org.openecomp.sdc.be.info.NodeTypeInfoToUpdateArtifacts;
-import org.openecomp.sdc.be.model.*;
+import org.openecomp.sdc.be.model.ArtifactDefinition;
+import org.openecomp.sdc.be.model.AttributeDefinition;
+import org.openecomp.sdc.be.model.CapabilityDefinition;
+import org.openecomp.sdc.be.model.Component;
+import org.openecomp.sdc.be.model.ComponentInstance;
+import org.openecomp.sdc.be.model.ComponentInstanceInput;
+import org.openecomp.sdc.be.model.ComponentInstanceProperty;
+import org.openecomp.sdc.be.model.ComponentMetadataDefinition;
+import org.openecomp.sdc.be.model.ComponentParametersView;
+import org.openecomp.sdc.be.model.DataTypeDefinition;
+import org.openecomp.sdc.be.model.GroupDefinition;
+import org.openecomp.sdc.be.model.IPropertyInputCommon;
+import org.openecomp.sdc.be.model.InputDefinition;
+import org.openecomp.sdc.be.model.InterfaceDefinition;
+import org.openecomp.sdc.be.model.LifecycleStateEnum;
+import org.openecomp.sdc.be.model.NodeTypeInfo;
+import org.openecomp.sdc.be.model.Operation;
+import org.openecomp.sdc.be.model.ParsedToscaYamlInfo;
+import org.openecomp.sdc.be.model.PolicyDefinition;
+import org.openecomp.sdc.be.model.PropertyDefinition;
+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.UploadComponentInstanceInfo;
+import org.openecomp.sdc.be.model.UploadPropInfo;
+import org.openecomp.sdc.be.model.UploadReqInfo;
+import org.openecomp.sdc.be.model.UploadResourceInfo;
+import org.openecomp.sdc.be.model.User;
 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
 import org.openecomp.sdc.be.model.operations.api.ICapabilityTypeOperation;
 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
@@ -55,33 +109,6 @@ import org.openecomp.sdc.common.api.ArtifactTypeEnum;
 import org.openecomp.sdc.common.api.Constants;
 import org.openecomp.sdc.exception.ResponseFormat;
 
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.nio.file.FileSystems;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.EnumMap;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static org.assertj.core.api.Java6Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.anyBoolean;
-import static org.mockito.Mockito.anyList;
-import static org.mockito.Mockito.anyMap;
-import static org.mockito.Mockito.anyString;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
 class ServiceImportBusinessLogicTest extends ServiceImportBussinessLogicBaseTestSetup {
     private final static String DEFAULT_ICON = "defaulticon";
 
@@ -829,7 +856,7 @@ class ServiceImportBusinessLogicTest extends ServiceImportBussinessLogicBaseTest
         uploadComponentInstanceInfo.setName("zxjTestImportServiceAb");
         Assertions.assertNotNull(resource);
         Assertions.assertNotNull(yamlName);
-        sIB1.processComponentInstance(yamlName, resource, componentInstancesList, allDataTypes, instProperties,
+        sIB1.processComponentInstance(yamlName, resource, componentInstancesList, allDataTypes.left().value(), instProperties,
                 instCapabilties, instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes,
                 originCompMap, instInputs, uploadComponentInstanceInfo);
     }
@@ -854,7 +881,7 @@ class ServiceImportBusinessLogicTest extends ServiceImportBussinessLogicBaseTest
         uploadComponentInstanceInfo.setName("zxjTestImportServiceAb0");
 
         Assertions.assertThrows(ComponentException.class, () -> sIB1.processComponentInstance(yamlName,
-                resource, componentInstancesList, allDataTypes, instProperties, instCapabilties,
+                resource, componentInstancesList, null, instProperties, instCapabilties,
                 instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes, originCompMap,
                 instInputs, uploadComponentInstanceInfo));
     }
@@ -1175,7 +1202,7 @@ class ServiceImportBusinessLogicTest extends ServiceImportBussinessLogicBaseTest
         uploadComponentInstanceInfo.setName("zxjTestImportServiceAb");
         Assertions.assertNotNull(service);
 
-        sIB1.processComponentInstance(yamlName, service, componentInstancesList, allDataTypes,
+        sIB1.processComponentInstance(yamlName, service, componentInstancesList, allDataTypes.left().value(),
                 instProperties, instCapabilties, instRequirements, instDeploymentArtifacts,
                 instArtifacts, instAttributes, originCompMap, instInputs,
                 uploadComponentInstanceInfo);
@@ -1201,7 +1228,7 @@ class ServiceImportBusinessLogicTest extends ServiceImportBussinessLogicBaseTest
         uploadComponentInstanceInfo.setName("zxjTestImportServiceAb0");
 
         Assertions.assertThrows(ComponentException.class, () -> sIB1.processComponentInstance(yamlName,
-                service, componentInstancesList, allDataTypes, instProperties, instCapabilties,
+                service, componentInstancesList, null, instProperties, instCapabilties,
                 instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes, originCompMap,
                 instInputs, uploadComponentInstanceInfo));
     }
@@ -1382,7 +1409,7 @@ class ServiceImportBusinessLogicTest extends ServiceImportBussinessLogicBaseTest
         ComponentInstance currentCompInstance = new ComponentInstance();
         Resource originResource = createParseResourceObject(false);
         Assertions.assertNotNull(originResource);
-        sIB1.processComponentInstanceCapabilities(allDataTypes, instCapabilties,
+        sIB1.processComponentInstanceCapabilities(null, instCapabilties,
                 uploadComponentInstanceInfo, currentCompInstance, originResource);
     }
 
@@ -1395,7 +1422,7 @@ class ServiceImportBusinessLogicTest extends ServiceImportBussinessLogicBaseTest
         Resource originResource = createParseResourceObject(false);
         Assertions.assertNotNull(originResource);
 
-        sIB1.processComponentInstanceCapabilities(allDataTypes, instCapabilties, uploadComponentInstanceInfo,
+        sIB1.processComponentInstanceCapabilities(null, instCapabilties, uploadComponentInstanceInfo,
                 currentCompInstance, originResource);
     }
 
@@ -1405,7 +1432,7 @@ class ServiceImportBusinessLogicTest extends ServiceImportBussinessLogicBaseTest
         Map<String, List<CapabilityDefinition>> originCapabilities = new HashMap<>();
         Map<String, Map<String, UploadPropInfo>> newPropertiesMap = new HashMap<>();
         Assertions.assertNull(allDataTypes);
-        sIB1.updateCapabilityPropertiesValues(allDataTypes, originCapabilities, newPropertiesMap);
+        sIB1.updateCapabilityPropertiesValues(null, originCapabilities, newPropertiesMap, null);
     }
 
     @Test
index bded51d..400b20c 100644 (file)
@@ -178,7 +178,7 @@ public class PropertyDataValueMergeBusinessLogicTest {
         myType.setProperties(Arrays.asList(mac_range_plan, mac_count_required));
         Map<String, DataTypeDefinition> dataTypes = Collections.singletonMap(myType.getName(), myType);
 
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.left(dataTypes));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(dataTypes));
         
         testInstance.mergePropertyValue(oldProp, newProp, Collections.emptyList());
         
@@ -230,7 +230,7 @@ public class PropertyDataValueMergeBusinessLogicTest {
         myType.setProperties(Arrays.asList(mac_range_plan, mymap, mac_count_required));
         Map<String, DataTypeDefinition> dataTypes = Collections.singletonMap(myType.getName(), myType);
 
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.left(dataTypes));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(dataTypes));
         
         testInstance.mergePropertyValue(oldProp, newProp, Collections.emptyList());
         
@@ -264,7 +264,7 @@ public class PropertyDataValueMergeBusinessLogicTest {
         PropertyDataDefinition newProp = createProp("prop1", "list", "myType", "[{\"prop2\":{\"prop3\":false}}]");
 
         Map<String, DataTypeDefinition> dataTypes = buildDataTypes();
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.left(dataTypes));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(dataTypes));
         testInstance.mergePropertyValue(oldProp, newProp, Collections.emptyList());
         assertEquals("myType", "[{\"prop2\":{\"prop3\":false}}]", newProp.getValue());
     }
@@ -300,7 +300,7 @@ public class PropertyDataValueMergeBusinessLogicTest {
         myType.setName("myType");
         
         Map<String, DataTypeDefinition> dataTypes = buildDataTypes();
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.left(dataTypes));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(dataTypes));
         testInstance.mergePropertyValue(oldProp, newProp, Collections.emptyList());
         assertEquals("lprop",  "[{\"prop2\":{\"prop4\":45,\"prop3\":true},\"prop1\":\"val1\"},{\"prop2\":{\"prop3\":false},\"prop1\":\"val2\"}]", newProp.getValue());
     }
@@ -311,7 +311,7 @@ public class PropertyDataValueMergeBusinessLogicTest {
         PropertyDataDefinition newProp = createProp("value_spec", "list", "json", "[{\"prop22\":{\"prop221\":45,\"prop222\":\"val222\",\"prop223\":\"false\"}}]");
 
         Map<String, DataTypeDefinition> dataTypes = buildDataTypes();
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.left(dataTypes));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(dataTypes));
         testInstance.mergePropertyValue(oldProp, newProp, Collections.emptyList());
         assertEquals("value_spec", "[{\"prop22\":{\"prop223\":\"false\",\"prop221\":45,\"prop222\":\"val222\"}}]", newProp.getValue());
     }
@@ -397,7 +397,7 @@ public class PropertyDataValueMergeBusinessLogicTest {
         Map<String, DataTypeDefinition> dataTypes = Stream.of(complexType, myType, myInnerType)
                                                            .collect(Collectors.toMap(DataTypeDefinition::getName, Function.identity()));
         
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.left(dataTypes));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(dataTypes));
         
         testInstance.mergePropertyValue(oldProp, newProp, Collections.emptyList());
         
@@ -525,14 +525,14 @@ public class PropertyDataValueMergeBusinessLogicTest {
     }
 
     private void testMergeProps(PropertyDataDefinition oldProp, PropertyDataDefinition newProp, String expectedValue,  List<String> getInputsToMerge) {
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.left(Collections.emptyMap()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(Collections.emptyMap()));
         testInstance.mergePropertyValue(oldProp, newProp, getInputsToMerge);
         assertEquals(expectedValue, newProp.getValue());
     }
 
 
     private String getMergedMapProp(PropertyDataDefinition oldProp, PropertyDataDefinition newProp, List<String> getInputsToMerge) {
-        when(applicationDataTypeCache.getAll()).thenReturn(Either.left(Collections.emptyMap()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(Collections.emptyMap()));
         testInstance.mergePropertyValue(oldProp, newProp, getInputsToMerge);
         return newProp.getValue();
     }
index 4b33e2d..9577bc6 100644 (file)
  */
 package org.openecomp.sdc.be.components.validation;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
 import fj.data.Either;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -36,14 +43,6 @@ import org.openecomp.sdc.be.model.DataTypeDefinition;
 import org.openecomp.sdc.be.model.PropertyDefinition;
 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
 @RunWith(MockitoJUnitRunner.class)
 public class AnnotationValidatorTest {
 
@@ -62,7 +61,7 @@ public class AnnotationValidatorTest {
     @Mock
     private ComponentsUtils componentsUtils;
     @Mock
-    private ApplicationDataTypeCache dataTypeCache;
+    private ApplicationDataTypeCache applicationDataTypeCache;
     @Mock
     private PropertyValidator propertyValidator;
     @Mock
@@ -70,10 +69,10 @@ public class AnnotationValidatorTest {
 
     @Before
     public void setUp() throws Exception {
-        annotationValidator = new AnnotationValidator(propertyValidator, exceptionUtils, dataTypeCache, componentsUtils);
+        annotationValidator = new AnnotationValidator(propertyValidator, exceptionUtils, applicationDataTypeCache, componentsUtils);
         allData = Collections.emptyMap();
         Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> cacheResponse = Either.left(allData);
-        Mockito.when(dataTypeCache.getAll()).thenReturn(cacheResponse);
+        Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(cacheResponse);
         annotationTypeProperties = Collections.emptyList();
         propertyDataDefinitions = new ArrayList<>();
     }
@@ -85,8 +84,7 @@ public class AnnotationValidatorTest {
         List<PropertyDefinition> properties = new ArrayList<>();
         properties.add(new PropertyDefinition(propertyDataDefinition));
 
-        List<Annotation> annotations = annotationValidator
-            .validateAnnotationsProperties(annotation, annotationTypeDefinition);
+        List<Annotation> annotations = annotationValidator.validateAnnotationsProperties(annotation, annotationTypeDefinition, null);
 
         Mockito.verify(propertyValidator).thinPropertiesValidator(properties, annotationTypeProperties, allData);
         assertThat(annotations.get(0), is(annotation));
index acb3d39..a8dcf8a 100644 (file)
 
 package org.openecomp.sdc.be.datamodel.utils;
 
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.reflect.TypeToken;
 import fj.data.Either;
+import java.io.BufferedReader;
+import java.io.File;
+import java.lang.reflect.Type;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -44,21 +58,6 @@ import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade
 import org.openecomp.sdc.be.model.operations.impl.PropertyOperation;
 import org.openecomp.sdc.exception.ResponseFormat;
 
-import java.io.BufferedReader;
-import java.io.File;
-import java.lang.reflect.Type;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.when;
-
 public class PropertyValueConstraintValidationUtilTest {
 
        @Mock
@@ -75,7 +74,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
        @Before
        public void init() {
-               MockitoAnnotations.initMocks(this);
+               MockitoAnnotations.openMocks(this);
                ResponseFormatManager responseFormatManagerMock = Mockito.mock(ResponseFormatManager.class);
                when(responseFormatManagerMock.getResponseFormat(any())).thenReturn(new ResponseFormat());
                when(responseFormatManagerMock.getResponseFormat(any(), any())).thenReturn(new ResponseFormat());
@@ -88,7 +87,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void primitiveValueSuccessTest() {
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("integer");
@@ -96,7 +95,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isLeft());
        }
@@ -104,15 +103,14 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void primitiveValueFailTest() {
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("integer");
                propertyDefinition.setValue("abcd");
 
-               Either<Boolean, ResponseFormat> responseEither =
-                               propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+               Either<Boolean, ResponseFormat> responseEither = propertyValueConstraintValidationUtil.validatePropertyConstraints(
+                       Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isRight());
        }
@@ -120,7 +118,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void complexWithValidValueSuccessTest() {
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("org.openecomp.datatypes.heat.network.neutron.Subnet");
@@ -128,7 +126,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+                                       Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isLeft());
        }
@@ -136,15 +134,14 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void complexWithValidValueFailTest() {
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("org.openecomp.datatypes.heat.network.neutron.Subnet");
                propertyDefinition.setValue("{\"prefixlen\":\"5\"}");
 
-               Either<Boolean, ResponseFormat> responseEither =
-                               propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+               Either<Boolean, ResponseFormat> responseEither = propertyValueConstraintValidationUtil
+                       .validatePropertyConstraints(Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isRight());
        }
@@ -152,7 +149,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void complexWithListWithPrimitiveValueSuccessTest() {
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("org.openecomp.datatypes.heat.network.neutron.Subnet");
@@ -160,7 +157,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isLeft());
        }
@@ -168,7 +165,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void complexWithListWithPrimitiveValueFailTest() {
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("org.openecomp.datatypes.heat.network.neutron.Subnet");
@@ -176,7 +173,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isRight());
        }
@@ -184,7 +181,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void complexWithMapWithPrimitiveValueSuccessTest() {
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("org.openecomp.datatypes.heat.network.neutron.Subnet");
@@ -192,7 +189,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isLeft());
        }
@@ -200,7 +197,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void complexWithMapWithPrimitiveValueFailTest() {
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("org.openecomp.datatypes.heat.network.neutron.Subnet");
@@ -208,7 +205,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isRight());
        }
@@ -216,7 +213,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void inputValidValueSuccessTest() {
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                InputDefinition inputDefinition = new InputDefinition();
                inputDefinition.setInputPath("propetyName#ipv6_ra_mode");
@@ -228,7 +225,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(inputDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(inputDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isLeft());
        }
@@ -236,7 +233,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void inputValidValueFailTest() {
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                InputDefinition inputDefinition = new InputDefinition();
                inputDefinition.setInputPath("propetyName#ipv6_ra_mode");
@@ -247,7 +244,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(inputDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(inputDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isRight());
        }
@@ -255,7 +252,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void serviceConsumptionValidValueSuccessTest() {
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("org.openecomp.datatypes.heat.network.neutron.Subnet");
@@ -264,14 +261,14 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isLeft());
        }
        @Test
        public void serviceConsumptionValidValueFailTest() {
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("org.openecomp.datatypes.heat.network.neutron.Subnet");
@@ -280,7 +277,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isRight());
        }
@@ -288,33 +285,30 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void bandwidthTypeValueSuccessTest(){
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("onap.datatypes.partner.bandwidth");
                propertyDefinition.setValue("{\"bandwidth_type\":\"guaranteed\"}");
                propertyDefinition.setName("bandwidth_type");
 
-               Either<Boolean, ResponseFormat> responseEither =
-                               propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
-
+               Either<Boolean, ResponseFormat> responseEither = propertyValueConstraintValidationUtil.validatePropertyConstraints(
+                       Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
                Assert.assertTrue(responseEither.isLeft());
        }
 
        @Test
        public void bandwidthTypeValueFailTest(){
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("onap.datatypes.partner.bandwidth");
                propertyDefinition.setValue("{\"bandwidth_type\":\"incorrectValue\"}");
                propertyDefinition.setName("bandwidth_type");
 
-               Either<Boolean, ResponseFormat> responseEither =
-                               propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+               Either<Boolean, ResponseFormat> responseEither = propertyValueConstraintValidationUtil.validatePropertyConstraints(
+                       Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isRight());
        }
@@ -322,7 +316,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void bandwidthDownstreamValueSuccessTest(){
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("onap.datatypes.partner.bandwidth");
@@ -331,7 +325,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isLeft());
        }
@@ -339,7 +333,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void bandwidthDownstreamValueFailTest(){
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("onap.datatypes.partner.bandwidth");
@@ -348,7 +342,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isRight());
        }
@@ -356,7 +350,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void bandwidthUpstreamValueSuccessTest(){
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("onap.datatypes.partner.bandwidth");
@@ -365,7 +359,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isLeft());
        }
@@ -373,7 +367,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void bandwidthUpstreamValueFailTest(){
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("onap.datatypes.partner.bandwidth");
@@ -382,7 +376,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isRight());
        }
@@ -390,7 +384,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void bandwidthUnitsValueSuccessTest(){
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("onap.datatypes.partner.bandwidth");
@@ -399,7 +393,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isLeft());
        }
@@ -407,7 +401,7 @@ public class PropertyValueConstraintValidationUtilTest {
        @Test
        public void bandwidthUnitsValueFailTest(){
                Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> either = Either.left(dataTypeDefinitionMap);
-               Mockito.when(applicationDataTypeCache.getAll()).thenReturn(either);
+               Mockito.when(applicationDataTypeCache.getAll(null)).thenReturn(either);
 
                PropertyDefinition propertyDefinition = new PropertyDefinition();
                propertyDefinition.setType("onap.datatypes.partner.bandwidth");
@@ -416,7 +410,7 @@ public class PropertyValueConstraintValidationUtilTest {
 
                Either<Boolean, ResponseFormat> responseEither =
                                propertyValueConstraintValidationUtil.validatePropertyConstraints(
-                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache);
+                                               Collections.singletonList(propertyDefinition), applicationDataTypeCache, null);
 
                Assert.assertTrue(responseEither.isRight());
        }
index b8f60fe..dcc5f6a 100644 (file)
 
 package org.openecomp.sdc.be.tosca;
 
+import static java.util.Collections.singletonList;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.mockito.Mockito.when;
+
 import fj.data.Either;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Stream;
 import org.apache.commons.lang3.tuple.Pair;
-
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 import org.openecomp.sdc.be.components.impl.exceptions.SdcResourceNotFoundException;
 import org.openecomp.sdc.be.components.utils.GroupDefinitionBuilder;
 import org.openecomp.sdc.be.components.utils.ResourceBuilder;
-import org.openecomp.sdc.be.model.*;
+import org.openecomp.sdc.be.model.CapabilityDefinition;
+import org.openecomp.sdc.be.model.Component;
+import org.openecomp.sdc.be.model.ComponentInstanceProperty;
+import org.openecomp.sdc.be.model.GroupDefinition;
+import org.openecomp.sdc.be.model.GroupInstance;
+import org.openecomp.sdc.be.model.Resource;
 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
 import org.openecomp.sdc.be.tosca.model.ToscaGroupTemplate;
 import org.openecomp.sdc.be.tosca.model.ToscaTemplateCapability;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Stream;
-
-import static java.util.Collections.singletonList;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.mockito.Mockito.when;
-
 @ExtendWith(MockitoExtension.class)
 public class GroupExportParserImplTest {
 
@@ -67,7 +69,7 @@ public class GroupExportParserImplTest {
        private GroupExportParser groupExportParser;
 
        @Mock
-       private ApplicationDataTypeCache dataTypeCache;
+       private ApplicationDataTypeCache applicationDataTypeCache;
        @Mock
        private Component component;
        @Mock
@@ -79,14 +81,15 @@ public class GroupExportParserImplTest {
        }
 
        private void initGroupExportParser() {
-               when(dataTypeCache.getAll()).thenReturn(Either.left(null));
-               groupExportParser = new GroupExportParserImpl(dataTypeCache, propertyConvertor);
+               when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(null));
+               groupExportParser = new GroupExportParserImpl(applicationDataTypeCache, propertyConvertor);
        }
 
        @Test
        public void failToGetAllDataTypes() {
-               when(dataTypeCache.getAll()).thenReturn(Either.right(null));
-               assertThatExceptionOfType(SdcResourceNotFoundException.class).isThrownBy(() -> groupExportParser = new GroupExportParserImpl(dataTypeCache,
+               when(applicationDataTypeCache.getAll(null)).thenReturn(Either.right(null));
+               assertThatExceptionOfType(SdcResourceNotFoundException.class).isThrownBy(() -> groupExportParser = new GroupExportParserImpl(
+                       applicationDataTypeCache,
                 propertyConvertor));
        }
 
index b499830..d7f70ae 100644 (file)
 
 package org.openecomp.sdc.be.tosca;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
+import static org.mockito.Mockito.when;
+
 import fj.data.Either;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -35,16 +44,6 @@ import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
 import org.openecomp.sdc.be.tosca.model.ToscaMetadata;
 import org.openecomp.sdc.be.tosca.model.ToscaPolicyTemplate;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
-import static org.mockito.Mockito.when;
-
 @RunWith(MockitoJUnitRunner.class)
 public class PolicyExportParserImplTest {
 
@@ -62,7 +61,7 @@ public class PolicyExportParserImplTest {
        private PolicyExportParser policiyExportParser;
     
        @Mock
-       private ApplicationDataTypeCache dataTypeCache;
+       private ApplicationDataTypeCache applicationDataTypeCache;
        @Mock
        private PropertyConvertor propertyConvertor;
        
@@ -72,17 +71,18 @@ public class PolicyExportParserImplTest {
        @Test
        public void failToGetAllDataTypes() {
                
-               when(dataTypeCache.getAll()).thenReturn(Either.right(null));
-               assertThatExceptionOfType(SdcResourceNotFoundException.class).isThrownBy(() -> policiyExportParser = new PolicyExportParserImpl(dataTypeCache,
+               when(applicationDataTypeCache.getAll(null)).thenReturn(Either.right(null));
+               assertThatExceptionOfType(SdcResourceNotFoundException.class).isThrownBy(() -> policiyExportParser = new PolicyExportParserImpl(
+                       applicationDataTypeCache,
                 propertyConvertor));
        }
        
        @Test
        public void noPoliciesInComponent() {
                
-               when(dataTypeCache.getAll()).thenReturn(Either.left(null));
+               when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(null));
                when(component.getPolicies()).thenReturn(null);
-               policiyExportParser = new PolicyExportParserImpl(dataTypeCache, propertyConvertor);
+               policiyExportParser = new PolicyExportParserImpl(applicationDataTypeCache, propertyConvertor);
                Map<String, ToscaPolicyTemplate> policies = policiyExportParser.getPolicies(component);
                assertThat(policies).isEqualTo(null);
        }
@@ -102,13 +102,13 @@ public class PolicyExportParserImplTest {
        }
 
        private void testPoliciesInComponent(List<Integer> constIndexes) {
-               when(dataTypeCache.getAll()).thenReturn(Either.left(null));
+               when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(null));
                Map<String, PolicyDefinition> policiesToAdd = getPolicies(constIndexes);
                
                when(component.getPolicies()).thenReturn(policiesToAdd);
                when(component.getComponentInstances()).thenReturn(getComponentInstances());
                when(component.getGroups()).thenReturn(getGroups());
-               policiyExportParser = new PolicyExportParserImpl(dataTypeCache, propertyConvertor);
+               policiyExportParser = new PolicyExportParserImpl(applicationDataTypeCache, propertyConvertor);
                
                Map<String, ToscaPolicyTemplate> policies = policiyExportParser.getPolicies(component);
                
index 5c8d522..38c7292 100644 (file)
@@ -129,7 +129,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
     private ToscaExportHandler testSubject;
 
     @Mock
-    private ApplicationDataTypeCache dataTypeCache;
+    private ApplicationDataTypeCache applicationDataTypeCache;
 
     @Mock
     private ToscaOperationFacade toscaOperationFacade;
@@ -236,7 +236,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
         Component component = getNewResource();
         Either<ToscaRepresentation, ToscaError> result;
 
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
         when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
             any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
         when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
@@ -249,7 +249,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
         component = getNewService();
         when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Service.class),
             any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
-        when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
 
         // default test when component is Service
         result = testSubject.exportComponent(component);
@@ -263,14 +263,14 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
 
         ((Resource) component).setInterfaces(new HashMap<>());
 
-        when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
         when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
             .thenReturn(Either.left(Collections.emptyMap()));
         // default test when convertInterfaceNodeType is right
         result = testSubject.exportComponentInterface(component, false);
         Assert.assertNotNull(result);
 
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
         when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
             any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
 
@@ -298,7 +298,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
 
         when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
             .thenReturn(Either.left(Collections.emptyMap()));
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
         // when convertRequirements is called, make it return the same value as 3rd (index=2) argument.
         when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
             any(ToscaNodeType.class))).thenAnswer(i -> Either.left(i.getArgument(2)));
@@ -392,7 +392,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
 
         component.setComponentInstances(resourceInstances);
 
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
         when(capabilityRequirementConverter.getOriginComponent(any(Map.class), any(ComponentInstance.class))).thenReturn(Either.right(false));
 
         final Map<String, ToscaProperty> map = new HashMap<>();
@@ -431,7 +431,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
             any(Component.class), any(SubstitutionMapping.class)))
             .thenReturn(Either.left(new SubstitutionMapping()));
 
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
 
         when(inputConverter.convertInputs(any(List.class), any(Map.class))).thenReturn(new HashMap<>());
 
@@ -473,7 +473,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
             .convertSubstitutionMappingRequirements(anyMap(), any(Component.class), any(SubstitutionMapping.class)))
             .thenReturn(Either.left(new SubstitutionMapping()));
 
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
 
         when(inputConverter.convertInputs(anyList(), anyMap())).thenReturn(new HashMap<>());
         final Map<String, ToscaProperty> map = new HashMap<>();
@@ -580,7 +580,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
         Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
         Either<ToscaTemplate, ToscaError> result;
 
-        when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.ALREADY_EXIST));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.right(JanusGraphOperationStatus.ALREADY_EXIST));
         when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
             .thenReturn(Either.left(Collections.emptyMap()));
         // default test
@@ -599,7 +599,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
         inputs.add(new InputDefinition());
         component.setInputs(inputs);
 
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
         when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
             .thenReturn(Either.left(Collections.emptyMap()));
 
@@ -730,7 +730,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
             .convertComponentInstanceCapabilities(any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
             .thenReturn(Either.left(new ToscaNodeTemplate()));
         when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
         when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class), any(ToscaNodeType.class)))
             .thenReturn(Either.left(new ToscaNodeType()));
         when(toscaOperationFacade.getToscaFullElement("uid")).thenReturn(Either.left(component));
@@ -854,7 +854,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
             .convertComponentInstanceCapabilities(any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
             .thenReturn(Either.left(new ToscaNodeTemplate()));
         when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
         when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class), any(ToscaNodeType.class)))
             .thenReturn(Either.left(new ToscaNodeType()));
         when(toscaOperationFacade.getToscaFullElement("uid")).thenReturn(Either.left(component));
@@ -917,7 +917,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
             .convertComponentInstanceCapabilities(any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
             .thenReturn(Either.right(ToscaError.GENERAL_ERROR));
         when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
         when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
             any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
 
@@ -968,7 +968,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
 
         when(capabilityRequirementConverter.getOriginComponent(any(Map.class), any(ComponentInstance.class))).thenReturn(Either.right(false));
         when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
         when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
             any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
 
@@ -1023,7 +1023,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
         doReturn(Either.left(component)).when(toscaOperationFacade).getToscaFullElement("id");
         when(capabilityRequirementConverter.getOriginComponent(any(Map.class), any(ComponentInstance.class))).thenReturn(Either.left(component));
         when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
         when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
             any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
         when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
@@ -1165,7 +1165,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
 
         when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
             .thenReturn(Either.left(Collections.emptyMap()));
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
         when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Service.class),
             any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
 
@@ -1198,7 +1198,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
             any(ComponentParametersView.class)))
             .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
 
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
 
         // test when getLatestByName is left
         result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
@@ -1213,7 +1213,7 @@ public class ToscaExportHandlerTest extends BeConfDependentTest {
         ComponentInstance instance = new ComponentInstance();
         ToscaNodeType result;
 
-        when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
 
         // default test
         result = Deencapsulation.invoke(testSubject, "createProxyNodeType", componentCache, origComponent,
index 50f2ae9..731ff63 100644 (file)
@@ -74,6 +74,7 @@ public enum ActionStatus {
     EMPTY_OCCURRENCES_LIST, INVALID_OCCURRENCES, NOT_TOPOLOGY_TOSCA_TEMPLATE, INVALID_NODE_TEMPLATE,
     // Data type related
     DATA_TYPE_ALREADY_EXIST, DATA_TYPE_NOR_PROPERTIES_NEITHER_DERIVED_FROM, DATA_TYPE_PROPERTIES_CANNOT_BE_EMPTY, DATA_TYPE_DERIVED_IS_MISSING, DATA_TYPE_PROPERTY_ALREADY_DEFINED_IN_ANCESTOR, DATA_TYPE_DUPLICATE_PROPERTY, DATA_TYPE_PROEPRTY_CANNOT_HAVE_SAME_TYPE_OF_DATA_TYPE, DATA_TYPE_CANNOT_HAVE_PROPERTIES, DATA_TYPE_CANNOT_BE_EMPTY, DATA_TYPE_CANNOT_BE_UPDATED_BAD_REQUEST,
+    DATA_TYPES_NOT_LOADED,
     // Policy Type related
     TARGETS_EMPTY, TARGETS_NON_VALID, POLICY_TYPE_ALREADY_EXIST,
     // Group Type related
index 95b22a8..e482fb5 100644 (file)
@@ -49,6 +49,7 @@ public class DataTypeData extends GraphNode {
         dataTypeDataDefinition.setDerivedFromName((String) properties.get(GraphPropertiesDictionary.DERIVED_FROM.getProperty()));
         dataTypeDataDefinition.setCreationTime((Long) properties.get(GraphPropertiesDictionary.CREATION_DATE.getProperty()));
         dataTypeDataDefinition.setModificationTime((Long) properties.get(GraphPropertiesDictionary.LAST_UPDATE_DATE.getProperty()));
+        dataTypeDataDefinition.setModel((String) properties.get(GraphPropertiesDictionary.MODEL.getProperty()));
     }
 
     @Override
@@ -60,6 +61,7 @@ public class DataTypeData extends GraphNode {
         addIfExists(map, GraphPropertiesDictionary.DERIVED_FROM, dataTypeDataDefinition.getDerivedFromName());
         addIfExists(map, GraphPropertiesDictionary.CREATION_DATE, dataTypeDataDefinition.getCreationTime());
         addIfExists(map, GraphPropertiesDictionary.LAST_UPDATE_DATE, dataTypeDataDefinition.getModificationTime());
+        addIfExists(map, GraphPropertiesDictionary.MODEL, dataTypeDataDefinition.getModel());
         return map;
     }
 
index 01f6cd1..bf9f4d7 100644 (file)
@@ -36,7 +36,6 @@ public class DataTypeDefinition extends DataTypeDataDefinition {
     private DataTypeDefinition derivedFrom;
     private List<PropertyConstraint> constraints;
     private List<PropertyDefinition> properties;
-    private String model;
 
     public DataTypeDefinition(final DataTypeDataDefinition dataTypeDataDefinition) {
         super(dataTypeDataDefinition);
index d0a0719..bfb20a2 100644 (file)
@@ -22,10 +22,11 @@ package org.openecomp.sdc.be.model.cache;
 import fj.data.Either;
 import java.util.Map;
 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
+import org.openecomp.sdc.be.model.DataTypeDefinition;
 
 public interface ApplicationCache<T> {
 
-    Either<Map<String, T>, JanusGraphOperationStatus> getAll();
+    Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> getAll(final String model);
 
-    Either<T, JanusGraphOperationStatus> get(String uniqueId);
+    Either<T, JanusGraphOperationStatus> get(final String model, final String uniqueId);
 }
index a1bafbc..070ebf7 100644 (file)
@@ -20,6 +20,7 @@
 package org.openecomp.sdc.be.model.cache;
 
 import fj.data.Either;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -43,6 +44,7 @@ import org.openecomp.sdc.be.config.Configuration.ApplicationL1CacheInfo;
 import org.openecomp.sdc.be.config.ConfigurationManager;
 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
 import org.openecomp.sdc.be.model.DataTypeDefinition;
+import org.openecomp.sdc.be.model.operations.impl.DataTypeOperation;
 import org.openecomp.sdc.be.model.operations.impl.PropertyOperation;
 import org.openecomp.sdc.be.resources.data.DataTypeData;
 import org.openecomp.sdc.common.log.enums.EcompLoggerErrorCode;
@@ -64,13 +66,16 @@ public class ApplicationDataTypeCache implements ApplicationCache<DataTypeDefini
     private final ScheduledExecutorService scheduledPollingService;
     @Getter(AccessLevel.PACKAGE)
     private ScheduledFuture<?> scheduledFuture = null;
-    private Map<String, DataTypeDefinition> dataTypesCacheMap = new HashMap<>();
+    private Map<String, Map<String, DataTypeDefinition>> dataTypesByModelCacheMap = new HashMap<>();
+    private final DataTypeOperation dataTypeOperation;
     private int firstRunDelayInSec = 30;
     private int pollingIntervalInSec = 60;
 
-    public ApplicationDataTypeCache(final PropertyOperation propertyOperation, final ApplicationEventPublisher applicationEventPublisher) {
+    public ApplicationDataTypeCache(final PropertyOperation propertyOperation, final ApplicationEventPublisher applicationEventPublisher,
+                                    final DataTypeOperation dataTypeOperation) {
         this.propertyOperation = propertyOperation;
         this.applicationEventPublisher = applicationEventPublisher;
+        this.dataTypeOperation = dataTypeOperation;
         scheduledPollingService = Executors
             .newScheduledThreadPool(1, new BasicThreadFactory.Builder().namingPattern("ApplicationDataTypeCacheThread-%d").build());
     }
@@ -156,32 +161,34 @@ public class ApplicationDataTypeCache implements ApplicationCache<DataTypeDefini
         }
     }
 
-    private Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> getAllDataTypesFromGraph() {
+    private Either<Map<String, Map<String, DataTypeDefinition>>, JanusGraphOperationStatus> getAllDataTypesFromGraph() {
         return propertyOperation.getAllDataTypes();
     }
 
-    @Override
-    public Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> getAll() {
+    public Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> getAll(final String model) {
         try {
             readWriteLock.readLock().lock();
-            if (MapUtils.isEmpty(dataTypesCacheMap)) {
-                return getAllDataTypesFromGraph();
+            if (MapUtils.isEmpty(dataTypesByModelCacheMap)) {
+                final var dataTypesFound = getAllDataTypesFromGraph();
+                if (dataTypesFound.isRight()) {
+                    return Either.right(dataTypesFound.right().value());
+                }
+                dataTypesByModelCacheMap = dataTypesFound.left().value();
             }
-            return Either.left(new HashMap<>(dataTypesCacheMap));
+            return Either.left(getDataTypeDefinitionMapByModel(model));
         } finally {
             readWriteLock.readLock().unlock();
         }
     }
 
     @Override
-    public Either<DataTypeDefinition, JanusGraphOperationStatus> get(String uniqueId) {
+    public Either<DataTypeDefinition, JanusGraphOperationStatus> get(final String model, final String uniqueId) {
         try {
             readWriteLock.readLock().lock();
-            if (MapUtils.isEmpty(dataTypesCacheMap)) {
+            if (MapUtils.isEmpty(dataTypesByModelCacheMap)) {
                 return propertyOperation.getDataTypeByUid(uniqueId);
             }
-
-            final Optional<DataTypeDefinition> dataTypeDefinition = dataTypesCacheMap.values().stream()
+            final Optional<DataTypeDefinition> dataTypeDefinition = getDataTypeDefinitionMapByModel(model).values().stream()
                 .filter(p -> p.getUniqueId().equals(uniqueId)).findFirst();
             if (dataTypeDefinition.isEmpty()) {
                 return propertyOperation.getDataTypeByUid(uniqueId);
@@ -192,6 +199,10 @@ public class ApplicationDataTypeCache implements ApplicationCache<DataTypeDefini
         }
     }
 
+    private Map<String, DataTypeDefinition> getDataTypeDefinitionMapByModel(final String model) {
+        return dataTypesByModelCacheMap.containsKey(model) ? dataTypesByModelCacheMap.get(model) : new HashMap<>();
+    }
+
     @Override
     public void run() {
         try {
@@ -218,10 +229,9 @@ public class ApplicationDataTypeCache implements ApplicationCache<DataTypeDefini
 
     private boolean hasDataTypesChanged() {
         final List<DataTypeData> dataTypeListFromDatabase = findAllDataTypesLazy();
-        final Map<String, DataTypeDefinition> dataTypesCacheCopyMap = copyDataTypeCache();
-
-        if (dataTypeListFromDatabase.size() != dataTypesCacheCopyMap.size()) {
-            log.debug("Total of cached data types '{}' differs from the actual '{}'", dataTypeListFromDatabase.size(),  dataTypesCacheCopyMap.size());
+        final int dataTypesCacheCopyMap = dataTypesCacheMapSize();
+        if (dataTypeListFromDatabase.size() != dataTypesCacheCopyMap) {
+            log.debug("Total of cached data types '{}' differs from the actual '{}'", dataTypeListFromDatabase.size(),  dataTypesCacheCopyMap);
             return true;
         }
 
@@ -230,13 +240,23 @@ public class ApplicationDataTypeCache implements ApplicationCache<DataTypeDefini
             return false;
         }
 
-        return hasDataTypesChanged(dataTypeListFromDatabase, dataTypesCacheCopyMap);
+        return hasDataTypesChanged(dataTypeListFromDatabase, copyDataTypeCache());
     }
 
-    private boolean hasDataTypesChanged(final List<DataTypeData> dataTypeListFromDatabase, final Map<String, DataTypeDefinition> dataTypesCacheCopyMap) {
+    private int dataTypesCacheMapSize() {
+        var count = 0;
+        for (var i = 0; i < copyDataTypeCache().size(); i++) {
+            count += new ArrayList<>(copyDataTypeCache().values()).get(i).size();
+
+        }
+        return count;
+    }
+
+    private boolean hasDataTypesChanged(final List<DataTypeData> dataTypeListFromDatabase, final Map<String, Map<String, DataTypeDefinition>> dataTypesCacheCopyMap) {
         return dataTypeListFromDatabase.stream().map(DataTypeData::getDataTypeDataDefinition).anyMatch(actualDataTypeDefinition -> {
             final String dataTypeName = actualDataTypeDefinition.getName();
-            final DataTypeDefinition cachedDataTypeDefinition = dataTypesCacheCopyMap.get(dataTypeName);
+            final String model = actualDataTypeDefinition.getModel();
+            final DataTypeDefinition cachedDataTypeDefinition = dataTypesCacheCopyMap.get(model).get(dataTypeName);
             if (cachedDataTypeDefinition == null) {
                 log.debug("Datatype '{}' is not present in the cache. ", dataTypeName);
                 return true;
@@ -245,8 +265,8 @@ public class ApplicationDataTypeCache implements ApplicationCache<DataTypeDefini
             final long cachedCreationTime = cachedDataTypeDefinition.getCreationTime() == null ? 0 : cachedDataTypeDefinition.getCreationTime();
             final long actualCreationTime = actualDataTypeDefinition.getCreationTime() == null ? 0 : actualDataTypeDefinition.getCreationTime();
             if (cachedCreationTime != actualCreationTime) {
-                log.debug("Datatype '{}' was updated. Cache/database creation time '{}'/'{}'.",
-                    dataTypeName, cachedCreationTime, actualCreationTime);
+                log.debug("Datatype '{}' with model '{}' was updated. Cache/database creation time '{}'/'{}'.",
+                    dataTypeName, model, cachedCreationTime, actualCreationTime);
                 return true;
             }
             final long cachedModificationTime =
@@ -263,23 +283,23 @@ public class ApplicationDataTypeCache implements ApplicationCache<DataTypeDefini
         });
     }
 
-    private Map<String, DataTypeDefinition> copyDataTypeCache() {
+    private Map<String, Map<String, DataTypeDefinition>> copyDataTypeCache() {
         try {
             readWriteLock.readLock().lock();
-            return new HashMap<>(this.dataTypesCacheMap);
+            return new HashMap<>(this.dataTypesByModelCacheMap);
         } finally {
             readWriteLock.readLock().unlock();
         }
     }
 
     private void refreshDataTypesCache() {
-        final Map<String, DataTypeDefinition> dataTypesDefinitionMap = findAllDataTypesEager();
+        final Map<String, Map<String, DataTypeDefinition>> dataTypesDefinitionMap = findAllDataTypesEager();
         if (dataTypesDefinitionMap.isEmpty()) {
             return;
         }
         try {
             readWriteLock.writeLock().lock();
-            dataTypesCacheMap = dataTypesDefinitionMap;
+            dataTypesByModelCacheMap = dataTypesDefinitionMap;
             onDataChangeEventEmit();
             BeEcompErrorManager.getInstance()
                 .logInternalFlowError("ReplaceDataTypesCache", "Succeed to replace the data types cache", ErrorSeverity.INFO);
@@ -288,10 +308,10 @@ public class ApplicationDataTypeCache implements ApplicationCache<DataTypeDefini
         }
     }
 
-    private Map<String, DataTypeDefinition> findAllDataTypesEager() {
+    private Map<String, Map<String, DataTypeDefinition>> findAllDataTypesEager() {
         log.trace("Fetching data types from database, eager mode");
         final long startTime = System.currentTimeMillis();
-        final Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = propertyOperation.getAllDataTypes();
+        final Either<Map<String, Map<String, DataTypeDefinition>>, JanusGraphOperationStatus> allDataTypes = propertyOperation.getAllDataTypes();
         log.trace("Finish fetching data types from database. Took {}ms", (System.currentTimeMillis() - startTime));
         if (allDataTypes.isRight()) {
             final JanusGraphOperationStatus status = allDataTypes.right().value();
@@ -306,16 +326,9 @@ public class ApplicationDataTypeCache implements ApplicationCache<DataTypeDefini
     private List<DataTypeData> findAllDataTypesLazy() {
         log.trace("Fetching data types from database, lazy mode");
         final long startTime = System.currentTimeMillis();
-        final Either<List<DataTypeData>, JanusGraphOperationStatus> allDataTypes = propertyOperation.getAllDataTypeNodes();
+        final List<DataTypeData> allDataTypes = dataTypeOperation.getAllDataTypeNodes();
         log.trace("Finish fetching data types from database. Took {}ms", (System.currentTimeMillis() - startTime));
-        if (allDataTypes.isRight()) {
-            final JanusGraphOperationStatus status = allDataTypes.right().value();
-            var errorMsg= String.format("Failed to fetch data types from database. Status is %s", status);
-            log.error(EcompLoggerErrorCode.UNKNOWN_ERROR, ApplicationDataTypeCache.class.getName(), errorMsg);
-            BeEcompErrorManager.getInstance().logInternalConnectionError(APPLICATION_DATA_TYPES_CACHE, errorMsg, ErrorSeverity.ERROR);
-            return Collections.emptyList();
-        }
-        return allDataTypes.left().value();
+        return allDataTypes;
     }
 
     private void onDataChangeEventEmit() {
@@ -329,9 +342,9 @@ public class ApplicationDataTypeCache implements ApplicationCache<DataTypeDefini
     public static class DataTypesCacheChangedEvent extends ApplicationEvent {
 
         @Getter
-        private final Map<String, DataTypeDefinition> newData;
+        private final Map<String,  Map<String, DataTypeDefinition>> newData;
 
-        public DataTypesCacheChangedEvent(final Object source, final Map<String, DataTypeDefinition> newData) {
+        public DataTypesCacheChangedEvent(final Object source, final Map<String,  Map<String, DataTypeDefinition>> newData) {
             super(source);
             this.newData = newData;
         }
index 1097e5d..97dd3ea 100644 (file)
@@ -70,7 +70,7 @@ public class ComponentInstanceOperation extends AbstractOperation {
     @Autowired
     private IInputsOperation inputOperation;
     @Autowired
-    private ApplicationDataTypeCache dataTypeCache;
+    private ApplicationDataTypeCache applicationDataTypeCache;
 
     public ComponentInstanceOperation() {
         super();
@@ -408,7 +408,8 @@ public class ComponentInstanceOperation extends AbstractOperation {
                 innerType = propDef.getType();
             }
             log.debug("Before validateAndUpdatePropertyValue");
-            Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = dataTypeCache.getAll();
+            Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes =
+                applicationDataTypeCache.getAll(resourceInstanceInput.getModel());
             if (allDataTypes.isRight()) {
                 JanusGraphOperationStatus status = allDataTypes.right().value();
                 BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance",
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/DataTypeOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/DataTypeOperation.java
new file mode 100644 (file)
index 0000000..158cb25
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2021 Nordix Foundation
+ *  ================================================================================
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+package org.openecomp.sdc.be.model.operations.impl;
+
+import fj.data.Either;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
+import org.openecomp.sdc.be.config.BeEcompErrorManager;
+import org.openecomp.sdc.be.config.BeEcompErrorManager.ErrorSeverity;
+import org.openecomp.sdc.be.dao.janusgraph.HealingJanusGraphGenericDao;
+import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
+import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
+import org.openecomp.sdc.be.model.DataTypeDefinition;
+import org.openecomp.sdc.be.resources.data.DataTypeData;
+import org.openecomp.sdc.common.log.enums.EcompLoggerErrorCode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component("dataType-operation")
+public class DataTypeOperation extends AbstractOperation {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(DataTypeOperation.class);
+
+    private final ModelOperation modelOperation;
+
+    @Autowired
+    public DataTypeOperation(final HealingJanusGraphGenericDao janusGraphGenericDao,
+                             final ModelOperation modelOperation) {
+        this.janusGraphGenericDao = janusGraphGenericDao;
+        this.modelOperation = modelOperation;
+    }
+
+    public List<DataTypeData> getAllDataTypeNodes() {
+        final List<DataTypeData> dataTypesFound = new ArrayList<>();
+        final Either<List<DataTypeData>, JanusGraphOperationStatus> getAllDataTypesWithNullModel =
+            janusGraphGenericDao.getByCriteria(NodeTypeEnum.DataType, null, DataTypeData.class);
+
+        final var dataTypesValidated = validateDataType(getAllDataTypesWithNullModel, null);
+        if (CollectionUtils.isNotEmpty(dataTypesValidated)) {
+            dataTypesFound.addAll(dataTypesValidated);
+        }
+
+        final List<DataTypeData> allDataTypeNodesWithModel = getAllDataTypesWithModel();
+        if(CollectionUtils.isNotEmpty(allDataTypeNodesWithModel)) {
+            dataTypesFound.addAll(allDataTypeNodesWithModel);
+        }
+        return dataTypesFound;
+    }
+
+    public List<DataTypeData> getAllDataTypesWithModel() {
+        final List<DataTypeData> dataTypesWithModel = new ArrayList<>();
+        modelOperation.findAllModels()
+            .forEach(model -> {
+                final var modelName = model.getName();
+                final Either<List<DataTypeData>, JanusGraphOperationStatus> getAllDataTypesByModel = janusGraphGenericDao
+                    .getByCriteriaForModel(NodeTypeEnum.DataType, null, modelName, DataTypeData.class);
+                final var dataTypesValidated = validateDataType(getAllDataTypesByModel, modelName);
+                dataTypesWithModel.addAll(dataTypesValidated);
+            });
+        return dataTypesWithModel;
+    }
+
+    private List<DataTypeData> validateDataType(final Either<List<DataTypeData>, JanusGraphOperationStatus> getDataTypes, final String modelName) {
+        if (getDataTypes.isRight() && getDataTypes.right().value() == JanusGraphOperationStatus.NOT_FOUND) {
+            return Collections.emptyList();
+        }
+        if (getDataTypes.isRight()) {
+            final var status = getDataTypes.right().value();
+            if (LOGGER.isErrorEnabled()) {
+                final var errorMsg= String.format("Failed to fetch data types from database with model %s. Status is %s", modelName, status);
+                LOGGER.error(String.valueOf(EcompLoggerErrorCode.UNKNOWN_ERROR), DataTypeOperation.class.getName(), errorMsg);
+                BeEcompErrorManager.getInstance().logInternalConnectionError(DataTypeOperation.class.getName(), errorMsg, ErrorSeverity.ERROR);
+            }
+            return Collections.emptyList();
+        }
+        return getDataTypes.left().value();
+    }
+
+    public Map<String, Map<String, DataTypeDefinition>> mapDataTypesDefinitionByModel(final Map<String, DataTypeDefinition> allDataTypes) {
+        final Map<String, DataTypeDefinition> dataTypesWithNullModelMap = new HashMap<>();
+        final Map<String, DataTypeDefinition> dataTypesWithModelMap = new HashMap<>();
+        final Map<String, Map<String, DataTypeDefinition>> dataTypesMappedByModel = new HashMap<>();
+        allDataTypes.values().stream().forEach(dataTypeDefinition -> {
+            final var model = dataTypeDefinition.getModel();
+            final var dataTypeDefinitionName = dataTypeDefinition.getName();
+            if (model == null) {
+                dataTypesWithNullModelMap.put(dataTypeDefinitionName, dataTypeDefinition);
+            } else {
+                dataTypesWithModelMap.put(dataTypeDefinitionName, dataTypeDefinition);
+                if (dataTypesMappedByModel.containsKey(model)) {
+                    dataTypesMappedByModel.get(model).put(dataTypeDefinitionName, dataTypeDefinition);
+                } else {
+                    dataTypesMappedByModel.put(model, dataTypesWithModelMap);
+                }
+            }
+        });
+        if(MapUtils.isNotEmpty(dataTypesWithNullModelMap)) {
+            dataTypesMappedByModel.put(null, dataTypesWithNullModelMap);
+        }
+        return dataTypesMappedByModel;
+    }
+
+}
index 45df37c..c463af6 100644 (file)
@@ -76,7 +76,7 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
     @Autowired
     PropertyOperation propertyOperation;
     @javax.annotation.Resource
-    private ApplicationDataTypeCache dataTypeCache;
+    private ApplicationDataTypeCache applicationDataTypeCache;
 
     public Either<List<GroupInstance>, StorageOperationStatus> getAllGroupInstances(String parentId, NodeTypeEnum parentType) {
         Either<List<GroupInstance>, StorageOperationStatus> result = null;
@@ -285,7 +285,8 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
                 innerType = propDef.getType();
             }
             log.debug("Before validateAndUpdatePropertyValue");
-            Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = dataTypeCache.getAll();
+            Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes =
+                applicationDataTypeCache.getAll(groupInstanceProperty.getModel());
             if (allDataTypes.isRight()) {
                 JanusGraphOperationStatus status = allDataTypes.right().value();
                 BeEcompErrorManager.getInstance()
@@ -388,7 +389,8 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
                 innerType = propDef.getType();
             }
             // Specific Update Logic
-            Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = dataTypeCache.getAll();
+            Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes =
+                applicationDataTypeCache.getAll(groupInstanceProerty.getModel());
             if (allDataTypes.isRight()) {
                 JanusGraphOperationStatus status = allDataTypes.right().value();
                 BeEcompErrorManager.getInstance()
index effdbeb..b9378b8 100644 (file)
@@ -72,15 +72,15 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation
     private final TopologyTemplateOperation topologyTemplateOperation;
     private final PropertyOperation propertyOperation;
     private final GroupTypeOperation groupTypeOperation;
-    private final ApplicationDataTypeCache dataTypeCache;
+    private final ApplicationDataTypeCache applicationDataTypeCache;
 
     public GroupOperation(JanusGraphDao janusGraphDao, TopologyTemplateOperation topologyTemplateOperation, PropertyOperation propertyOperation,
-                          GroupTypeOperation groupTypeOperation, ApplicationDataTypeCache dataTypeCache) {
+                          GroupTypeOperation groupTypeOperation, ApplicationDataTypeCache applicationDataTypeCache) {
         this.janusGraphDao = janusGraphDao;
         this.topologyTemplateOperation = topologyTemplateOperation;
         this.propertyOperation = propertyOperation;
         this.groupTypeOperation = groupTypeOperation;
-        this.dataTypeCache = dataTypeCache;
+        this.applicationDataTypeCache = applicationDataTypeCache;
     }
 
     private GroupDefinition convertGroupDataToGroupDefinition(GroupData groupData) {
@@ -485,7 +485,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation
         StorageOperationStatus result = null;
         String innerType =
             property.getSchema() == null ? null : property.getSchema().getProperty() == null ? null : property.getSchema().getProperty().getType();
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = dataTypeCache.getAll();
+        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = applicationDataTypeCache.getAll(property.getModel());
         Either<Object, Boolean> isValid = null;
         if (allDataTypes.isRight()) {
             JanusGraphOperationStatus status = allDataTypes.right().value();
@@ -493,8 +493,8 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation
             result = DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status);
         }
         if (result == null) {
-            isValid = propertyOperation
-                .validateAndUpdatePropertyValue(property.getType(), property.getValue(), innerType, allDataTypes.left().value());
+            isValid = propertyOperation.validateAndUpdatePropertyValue(property.getType(), property.getValue(), innerType,
+                allDataTypes.left().value());
             if (isValid.isRight()) {
                 log.debug("Failed to validate property value {}. Status is {}. ", property.getValue(), StorageOperationStatus.INVALID_PROPERTY);
                 result = StorageOperationStatus.INVALID_PROPERTY;
index 1f4fca0..726efcf 100644 (file)
@@ -21,6 +21,20 @@ package org.openecomp.sdc.be.model.operations.impl;
 
 import static org.openecomp.sdc.common.log.enums.EcompLoggerErrorCode.BUSINESS_PROCESS_ERROR;
 
+import com.fasterxml.jackson.core.ObjectCodec;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.google.common.collect.Maps;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+import fj.data.Either;
 import java.io.IOException;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
@@ -82,6 +96,7 @@ import org.openecomp.sdc.be.model.tosca.constraints.ValidValuesConstraint;
 import org.openecomp.sdc.be.model.tosca.converters.PropertyValueConverter;
 import org.openecomp.sdc.be.resources.data.ComponentInstanceData;
 import org.openecomp.sdc.be.resources.data.DataTypeData;
+import org.openecomp.sdc.be.resources.data.ModelData;
 import org.openecomp.sdc.be.resources.data.PropertyData;
 import org.openecomp.sdc.be.resources.data.PropertyValueData;
 import org.openecomp.sdc.be.resources.data.ResourceMetadataData;
@@ -89,20 +104,6 @@ import org.openecomp.sdc.be.resources.data.UniqueIdData;
 import org.openecomp.sdc.common.log.wrappers.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-import com.fasterxml.jackson.core.ObjectCodec;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.google.common.collect.Maps;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParseException;
-import com.google.gson.JsonParser;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-import fj.data.Either;
 
 @Component("property-operation")
 public class PropertyOperation extends AbstractOperation implements IPropertyOperation {
@@ -120,11 +121,14 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
     private static final String UPDATE_DATA_TYPE = "UpdateDataType";
     private static Logger log = Logger.getLogger(PropertyOperation.class.getName());
     private DerivedFromOperation derivedFromOperation;
+    private DataTypeOperation dataTypeOperation;
 
     @Autowired
-    public PropertyOperation(HealingJanusGraphGenericDao janusGraphGenericDao, DerivedFromOperation derivedFromOperation) {
+    public PropertyOperation(HealingJanusGraphGenericDao janusGraphGenericDao, DerivedFromOperation derivedFromOperation,
+                             DataTypeOperation dataTypeOperation) {
         this.janusGraphGenericDao = janusGraphGenericDao;
         this.derivedFromOperation = derivedFromOperation;
+        this.dataTypeOperation = dataTypeOperation;
     }
 
     public PropertyDefinition convertPropertyDataToPropertyDefinition(PropertyData propertyDataResult, String propertyName, String resourceId) {
@@ -1506,28 +1510,21 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
         return Either.left(true);
     }
 
-    public Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> getAllDataTypes() {
-        Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
-        Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> result = Either.left(dataTypes);
-        Either<List<DataTypeData>, JanusGraphOperationStatus> getAllDataTypes = janusGraphGenericDao
-            .getByCriteria(NodeTypeEnum.DataType, null, DataTypeData.class);
-        if (getAllDataTypes.isRight()) {
-            JanusGraphOperationStatus status = getAllDataTypes.right().value();
-            if (status != JanusGraphOperationStatus.NOT_FOUND) {
-                return Either.right(status);
-            } else {
-                return result;
-            }
-        }
-        List<DataTypeData> list = getAllDataTypes.left().value();
+    public Either<Map<String, Map<String, DataTypeDefinition>>, JanusGraphOperationStatus> getAllDataTypes() {
+        final Map<String, Map<String, DataTypeDefinition>> dataTypes = new HashMap<>();
+        Either<Map<String, Map<String, DataTypeDefinition>>, JanusGraphOperationStatus> result = Either.left(dataTypes);
+        final Map<String, DataTypeDefinition> allDataTypesFound = new HashMap<>();
+        final List<DataTypeData> list = dataTypeOperation.getAllDataTypeNodes();
         if (list != null) {
             log.trace("Number of data types to load is {}", list.size());
             List<String> collect = list.stream().map(p -> p.getDataTypeDataDefinition().getName()).collect(Collectors.toList());
             log.trace("The data types to load are {}", collect);
             for (DataTypeData dataTypeData : list) {
-                log.trace("Going to fetch data type {}. uid is {}", dataTypeData.getDataTypeDataDefinition().getName(), dataTypeData.getUniqueId());
+                final String dataTypeName = dataTypeData.getDataTypeDataDefinition().getName();
+                final String dataTypeUniqueId = dataTypeData.getUniqueId();
+                log.trace("Going to fetch data type {}. uid is {}", dataTypeName, dataTypeUniqueId);
                 Either<DataTypeDefinition, JanusGraphOperationStatus> dataTypeByUid = this
-                    .getAndAddDataTypeByUid(dataTypeData.getUniqueId(), dataTypes);
+                    .getAndAddDataTypeByUid(dataTypeUniqueId, allDataTypesFound);
                 if (dataTypeByUid.isRight()) {
                     JanusGraphOperationStatus status = dataTypeByUid.right().value();
                     if (status == JanusGraphOperationStatus.NOT_FOUND) {
@@ -1535,13 +1532,14 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                     }
                     return Either.right(status);
                 }
+                result = Either.left(dataTypeOperation.mapDataTypesDefinitionByModel(allDataTypesFound));
             }
         }
         if (log.isTraceEnabled()) {
             if (result.isRight()) {
                 log.trace("After fetching all data types {}", result);
             } else {
-                Map<String, DataTypeDefinition> map = result.left().value();
+                Map<String, Map<String, DataTypeDefinition>> map = result.left().value();
                 if (map != null) {
                     String types = map.keySet().stream().collect(Collectors.joining(",", "[", "]"));
                     log.trace("After fetching all data types {} ", types);
@@ -1577,7 +1575,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
             log.error(FAILED_TO_FETCH_PROPERTIES_OF_DATA_TYPE, uniqueId);
             return Either.right(propertiesStatus);
         }
-        allDataTypes.put(dataTypeDefinition.getName(), dataTypeDefinition);
+        allDataTypes.put(dataTypeDefinition.getUniqueId(), dataTypeDefinition);
         String derivedFrom = dataTypeDefinition.getDerivedFromName();
         if (allDataTypes.containsKey(derivedFrom)) {
             DataTypeDefinition parentDataTypeDefinition = allDataTypes.get(derivedFrom);
@@ -1606,26 +1604,28 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
             }
             DataTypeDefinition parentDataTypeDefinition = dataTypeByUid.left().value();
             dataTypeDefinition.setDerivedFrom(parentDataTypeDefinition);
+            final var model = getModel(uniqueId);
+            if (StringUtils.isNotEmpty(model)) {
+                dataTypeDefinition.setModel(model);
+            }
         }
         result = Either.left(dataTypeDefinition);
         return result;
     }
 
+    private String getModel(final String uniqueId) {
+        final Either<ImmutablePair<ModelData, GraphEdge>, JanusGraphOperationStatus> model = janusGraphGenericDao.getParentNode(
+            UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.DataType), uniqueId, GraphEdgeLabels.MODEL_ELEMENT,
+            NodeTypeEnum.Model, ModelData.class);
+        return model.isLeft() ? model.left().value().getLeft().getName() : StringUtils.EMPTY;
+    }
+
     public Either<String, JanusGraphOperationStatus> checkInnerType(PropertyDataDefinition propDataDef) {
         String propertyType = propDataDef.getType();
         ToscaPropertyType type = ToscaPropertyType.isValidType(propertyType);
         return getInnerType(type, propDataDef::getSchema);
     }
 
-    public Either<List<DataTypeData>, JanusGraphOperationStatus> getAllDataTypeNodes() {
-        final Either<List<DataTypeData>, JanusGraphOperationStatus> getAllDataTypes =
-            janusGraphGenericDao.getByCriteria(NodeTypeEnum.DataType, null, DataTypeData.class);
-        if (getAllDataTypes.isRight() && getAllDataTypes.right().value() == JanusGraphOperationStatus.NOT_FOUND) {
-            return Either.left(Collections.emptyList());
-        }
-        return getAllDataTypes;
-    }
-
     public Either<Object, Boolean> validateAndUpdatePropertyValue(String propertyType, String value, boolean isValidate, String innerType,
                                                                   Map<String, DataTypeDefinition> dataTypes) {
         log.trace("Going to validate property value and its type. type = {}, value = {}", propertyType, value);
index 9126b64..75a47db 100644 (file)
@@ -49,6 +49,7 @@ import org.openecomp.sdc.be.config.ConfigurationManager;
 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
 import org.openecomp.sdc.be.datatypes.elements.DataTypeDataDefinition;
 import org.openecomp.sdc.be.model.DataTypeDefinition;
+import org.openecomp.sdc.be.model.operations.impl.DataTypeOperation;
 import org.openecomp.sdc.be.model.operations.impl.PropertyOperation;
 import org.openecomp.sdc.be.resources.data.DataTypeData;
 import org.springframework.context.ApplicationEventPublisher;
@@ -58,6 +59,9 @@ class ApplicationDataTypeCacheTest {
     @Mock
     private PropertyOperation propertyOperation;
 
+    @Mock
+       private DataTypeOperation dataTypeOperation;
+
     @Mock
        private ApplicationEventPublisher applicationEventPublisher;
 
@@ -150,18 +154,19 @@ class ApplicationDataTypeCacheTest {
 
                final DataTypeDefinition testDataType1 = createDataTypeDefinition("test.data.type1", "test.data.type1", 101L, 1000L);
                final DataTypeDefinition testDataType2 = createDataTypeDefinition("test.data.type2", "test.data.type2", 101L, 1002L);
-               final Map<String, DataTypeDefinition> modifiedDataTypeDefinitionMap =
-                       Map.of(testDataType1.getName(), testDataType1, testDataType2.getName(), testDataType2);
+               final Map<String, DataTypeDefinition> dataTypeDefinitionMap = Map.of(testDataType1.getName(), testDataType1, testDataType2.getName(), testDataType2);
+               final Map<String, Map<String, DataTypeDefinition>> modifiedDataTypeDefinitionMap = new HashMap<>();
+               modifiedDataTypeDefinitionMap.put(null, dataTypeDefinitionMap);
                when(propertyOperation.getAllDataTypes()).thenReturn(Either.left(modifiedDataTypeDefinitionMap));
 
                final DataTypeData dataTypeData1 = createDataTypeData("test.data.type1", "test.data.type1", 101L, 101L);
                final DataTypeData dataTypeData2 = createDataTypeData("test.data.type2", "test.data.type2", 101L, 1002L);
 
-               when(propertyOperation.getAllDataTypeNodes()).thenReturn(Either.left(List.of(dataTypeData1, dataTypeData2)));
+               when(dataTypeOperation.getAllDataTypeNodes()).thenReturn(List.of(dataTypeData1, dataTypeData2));
 
                await().atMost(Duration.ofSeconds(schedulerPollIntervalInSec + 1)).until(() -> scheduledFuture.getDelay(TimeUnit.SECONDS) == 0);
                await().atMost(Duration.ofSeconds(schedulerPollIntervalInSec + 1)).until(() -> scheduledFuture.getDelay(TimeUnit.SECONDS) != 0);
-               assertDataTypeCache(modifiedDataTypeDefinitionMap);
+               assertDataTypeCache(modifiedDataTypeDefinitionMap.get(null));
        }
 
        @Test
@@ -172,17 +177,19 @@ class ApplicationDataTypeCacheTest {
                await().until(() -> scheduledFuture.getDelay(TimeUnit.SECONDS) != 0);
                assertDataTypeCache(dataTypeDefinitionMap);
 
+               final Map<String, Map<String, DataTypeDefinition>> dataTypesMappedByModel = new HashMap<>();
                final Map<String, DataTypeDefinition> modifiedDataTypeDefinitionMap = new HashMap<>();
                final DataTypeDefinition testDataType1 = createDataTypeDefinition("test.data.type1", "test.data.type1", 1L, 1L);
                modifiedDataTypeDefinitionMap.put(testDataType1.getName(), testDataType1);
                final DataTypeDefinition testDataType3 = createDataTypeDefinition("test.data.type3", "test.data.type3", 1L, 1L);
                modifiedDataTypeDefinitionMap.put(testDataType3.getName(), testDataType3);
-               when(propertyOperation.getAllDataTypes()).thenReturn(Either.left(modifiedDataTypeDefinitionMap));
+               dataTypesMappedByModel.put(null, modifiedDataTypeDefinitionMap);
+               when(propertyOperation.getAllDataTypes()).thenReturn(Either.left(dataTypesMappedByModel));
 
                final DataTypeData dataTypeData1 = createDataTypeData("test.data.type1", "test.data.type1", 1L, 1L);
                final DataTypeData dataTypeData3 = createDataTypeData("test.data.type3", "test.data.type3", 1L, 1L);
 
-               when(propertyOperation.getAllDataTypeNodes()).thenReturn(Either.left(List.of(dataTypeData1, dataTypeData3)));
+               when(dataTypeOperation.getAllDataTypeNodes()).thenReturn(List.of(dataTypeData1, dataTypeData3));
 
                await().atMost(Duration.ofSeconds(schedulerPollIntervalInSec + 1)).until(() -> scheduledFuture.getDelay(TimeUnit.SECONDS) == 0);
                await().atMost(Duration.ofSeconds(schedulerPollIntervalInSec + 1)).until(() -> scheduledFuture.getDelay(TimeUnit.SECONDS) != 0);
@@ -191,9 +198,9 @@ class ApplicationDataTypeCacheTest {
 
        @Test
        void testGetAllWithNoInitialization() {
-               final Map<String, DataTypeDefinition> dataTypeDefinitionMap = new HashMap<>();
+               final Map<String, Map<String, DataTypeDefinition>> dataTypeDefinitionMap = new HashMap<>();
                when(propertyOperation.getAllDataTypes()).thenReturn(Either.left(dataTypeDefinitionMap));
-               final Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> response = applicationDataTypeCache.getAll();
+               final Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> response = applicationDataTypeCache.getAll(null);
                assertNotNull(response);
                assertTrue(response.isLeft());
        }
@@ -202,7 +209,7 @@ class ApplicationDataTypeCacheTest {
        void testGetWhenCacheIsEmpty() {
                var dataTypeDefinition = new DataTypeDefinition();
                when(propertyOperation.getDataTypeByUid("uniqueId")).thenReturn(Either.left(dataTypeDefinition));
-               final Either<DataTypeDefinition, JanusGraphOperationStatus> dataTypeEither = applicationDataTypeCache.get("uniqueId");
+               final Either<DataTypeDefinition, JanusGraphOperationStatus> dataTypeEither = applicationDataTypeCache.get(null,  "uniqueId");
                assertNotNull(dataTypeEither);
                assertTrue(dataTypeEither.isLeft());
                assertEquals(dataTypeDefinition, dataTypeEither.left().value());
@@ -213,7 +220,8 @@ class ApplicationDataTypeCacheTest {
                defaultInit();
                final ScheduledFuture<?> scheduledFuture = applicationDataTypeCache.getScheduledFuture();
                await().atMost(Duration.ofSeconds(schedulerPollIntervalInSec + 1)).until(() -> scheduledFuture.getDelay(TimeUnit.SECONDS) != 0);
-               final Either<DataTypeDefinition, JanusGraphOperationStatus> dataTypeEither = applicationDataTypeCache.get("test.data.type1");
+               final Either<DataTypeDefinition, JanusGraphOperationStatus> dataTypeEither =
+                       applicationDataTypeCache.get(null,  "test.data.type1");
                assertNotNull(dataTypeEither);
                assertTrue(dataTypeEither.isLeft());
                final DataTypeDefinition actualDataTypeDefinition = dataTypeEither.left().value();
@@ -236,12 +244,14 @@ class ApplicationDataTypeCacheTest {
         dataTypeDefinitionMap.put(testDataType1.getName(), testDataType1);
         final DataTypeDefinition testDataType2 = createDataTypeDefinition("test.data.type2", "test.data.type2", 101L, 1001L);
         dataTypeDefinitionMap.put(testDataType2.getName(), testDataType2);
-        when(propertyOperation.getAllDataTypes()).thenReturn(Either.left(dataTypeDefinitionMap));
+               final Map<String, Map<String, DataTypeDefinition>> dataTypesMappedByModel = new HashMap<>();
+               dataTypesMappedByModel.put(null, dataTypeDefinitionMap);
+        when(propertyOperation.getAllDataTypes()).thenReturn(Either.left(dataTypesMappedByModel));
 
         final DataTypeData dataTypeData1 = createDataTypeData("test.data.type1", testDataType1.getName(), 100L, 1000L);
         final DataTypeData dataTypeData2 = createDataTypeData("test.data.type2", testDataType2.getName(), 101L, 1001L);
 
-        when(propertyOperation.getAllDataTypeNodes()).thenReturn(Either.left(List.of(dataTypeData1, dataTypeData2)));
+        when(dataTypeOperation.getAllDataTypeNodes()).thenReturn(List.of(dataTypeData1, dataTypeData2));
         applicationDataTypeCache.init();
     }
 
@@ -286,7 +296,7 @@ class ApplicationDataTypeCacheTest {
        }
 
        public void assertDataTypeCache(final Map<String, DataTypeDefinition> expectedDataTypeCache) {
-               Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypeCacheMapEither = applicationDataTypeCache.getAll();
+               Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypeCacheMapEither = applicationDataTypeCache.getAll(null);
                assertNotNull(dataTypeCacheMapEither);
                assertTrue(dataTypeCacheMapEither.isLeft());
                final Map<String, DataTypeDefinition> actualDataTypeMap = dataTypeCacheMapEither.left().value();
diff --git a/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/DataTypeOperationTest.java b/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/DataTypeOperationTest.java
new file mode 100644 (file)
index 0000000..015aedc
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2021 Nordix Foundation
+ *  ================================================================================
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+package org.openecomp.sdc.be.model.operations.impl;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.when;
+
+import fj.data.Either;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.openecomp.sdc.be.dao.janusgraph.HealingJanusGraphGenericDao;
+import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
+import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
+import org.openecomp.sdc.be.model.DataTypeDefinition;
+import org.openecomp.sdc.be.model.Model;
+import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
+import org.openecomp.sdc.be.resources.data.DataTypeData;
+import org.springframework.test.context.ContextConfiguration;
+
+@ContextConfiguration("classpath:application-context-test.xml")
+class DataTypeOperationTest {
+
+    @InjectMocks
+    private DataTypeOperation dataTypeOperation;
+    @Mock
+    private ModelOperation modelOperation;
+    @Mock
+    private HealingJanusGraphGenericDao janusGraphGenericDao;
+    @Mock
+    private ApplicationDataTypeCache applicationDataTypeCache;
+
+    private final String modelName = "ETSI-SDC-MODEL-TEST";
+    private final List<DataTypeData> dataTypesWithoutModel = new ArrayList<>();
+    private final List<DataTypeData> dataTypesWithModel = new ArrayList<>();
+    final Map<String, Map<String, DataTypeDefinition>> dataTypesMappedByModel = new HashMap<>();
+    final Map<String, DataTypeDefinition> allDataTypesFoundDefinitionMap = new HashMap<>();
+    private Model model;
+
+
+    @BeforeEach
+    void beforeEachInit() {
+        MockitoAnnotations.openMocks(this);
+        initTestData();
+    }
+
+    @Test
+    void getAllDataTypeNodesTest() {
+        when(janusGraphGenericDao.getByCriteria(NodeTypeEnum.DataType, null, DataTypeData.class))
+            .thenReturn(Either.left(dataTypesWithoutModel));
+        when(modelOperation.findAllModels()).thenReturn(Collections.singletonList(model));
+        when(janusGraphGenericDao.getByCriteriaForModel(NodeTypeEnum.DataType, null, modelName, DataTypeData.class))
+            .thenReturn(Either.left(dataTypesWithModel));
+        final var dataTypesFound = dataTypeOperation.getAllDataTypeNodes();
+        assertThat(dataTypesFound.size()).isEqualTo(4);
+        assertThat(dataTypesFound.containsAll(dataTypesWithoutModel)).isTrue();
+        assertThat(dataTypesFound.containsAll(dataTypesWithModel)).isTrue();
+    }
+
+    @Test
+    void getAllDataTypesWithModelTest() {
+        when(janusGraphGenericDao.getByCriteria(NodeTypeEnum.DataType, null, DataTypeData.class))
+            .thenReturn(Either.left(Collections.emptyList()));
+        when(modelOperation.findAllModels()).thenReturn(Collections.singletonList(model));
+        when(janusGraphGenericDao.getByCriteriaForModel(NodeTypeEnum.DataType, null, modelName, DataTypeData.class))
+            .thenReturn(Either.left(dataTypesWithModel));
+        final var dataTypesFound = dataTypeOperation.getAllDataTypeNodes();
+        assertThat(dataTypesFound.size()).isEqualTo(2);
+        assertThat(dataTypesFound.containsAll(dataTypesWithModel)).isTrue();
+        assertThat(dataTypesFound.containsAll(dataTypesWithoutModel)).isFalse();
+    }
+
+    @Test
+    void getAllDataTypeNodesWithValidationErrorTest() {
+        when(janusGraphGenericDao.getByCriteria(NodeTypeEnum.DataType, null, DataTypeData.class))
+            .thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
+        final var dataTypesFound = dataTypeOperation.getAllDataTypeNodes();
+        assertThat(dataTypesFound.isEmpty()).isTrue();
+    }
+
+    @Test
+    void getAllDataTypesWithModelWithValidationErrorTest() {
+        when(janusGraphGenericDao.getByCriteria(NodeTypeEnum.DataType, null, DataTypeData.class))
+            .thenReturn(Either.left(Collections.emptyList()));
+        when(modelOperation.findAllModels()).thenReturn(Collections.singletonList(model));
+        when(janusGraphGenericDao.getByCriteriaForModel(NodeTypeEnum.DataType, null, modelName, DataTypeData.class))
+            .thenReturn(Either.right(JanusGraphOperationStatus.GENERAL_ERROR));
+        final var dataTypesFound = dataTypeOperation.getAllDataTypeNodes();
+        assertThat(dataTypesFound).isEmpty();
+    }
+
+    @Test
+    void mapDataTypesDefinitionByModelTest() {
+        final var allDataTypesMappedByModel =
+            dataTypeOperation.mapDataTypesDefinitionByModel(allDataTypesFoundDefinitionMap);
+        assertThat(allDataTypesMappedByModel.get(modelName).size()).isEqualTo(2);
+        assertThat(allDataTypesMappedByModel.get(null)).isNotEmpty();
+    }
+
+
+    private void initTestData() {
+        model = new Model(modelName);
+        final String TEST_DATA_TYPE_001 = "test.data.type001";
+        final String TEST_DATA_TYPE_002 = "test.data.type002";
+        final String TEST_DATA_TYPE_003 = "test.data.type003";
+        final String TEST_DATA_TYPE_004 = "test.data.type004";
+        final DataTypeData dataTypeData1 = createDataTypeData("test.data.type1", TEST_DATA_TYPE_001, 101L,
+            101L, null);
+        final DataTypeData dataTypeData2 = createDataTypeData("test.data.type2", TEST_DATA_TYPE_002, 101L,
+            1002L, null);
+        dataTypesWithoutModel.add(dataTypeData1);
+        dataTypesWithoutModel.add(dataTypeData2);
+
+        final DataTypeData dataTypeWithModel1 = createDataTypeData("test.data.type1", TEST_DATA_TYPE_003, 101L,
+            101L, modelName);
+        final DataTypeData dataTypeWithModel2 = createDataTypeData("test.data.type2", TEST_DATA_TYPE_004, 101L,
+            1002L, modelName);
+        dataTypesWithModel.add(dataTypeWithModel1);
+        dataTypesWithModel.add(dataTypeWithModel2);
+
+        allDataTypesFoundDefinitionMap.put(TEST_DATA_TYPE_001, createDataTypeDefinition("test.data.type1", TEST_DATA_TYPE_001,
+            101L, 101L, null));
+        allDataTypesFoundDefinitionMap.put(TEST_DATA_TYPE_002, createDataTypeDefinition("test.data.type2", TEST_DATA_TYPE_002,
+            101L, 101L, null));
+        allDataTypesFoundDefinitionMap.put(TEST_DATA_TYPE_003, createDataTypeDefinition("test.data.type1", TEST_DATA_TYPE_003,
+            101L, 101L, modelName));
+        allDataTypesFoundDefinitionMap.put(TEST_DATA_TYPE_004, createDataTypeDefinition("test.data.type2", TEST_DATA_TYPE_004,
+            101L, 101L, modelName));
+
+        dataTypesMappedByModel.put(null, allDataTypesFoundDefinitionMap);
+    }
+
+    private DataTypeData createDataTypeData(final String name, final String uniqueId, final long creationTime, final long modificationTime,
+                                            final String model) {
+        final DataTypeData dataTypeData = new DataTypeData();
+        dataTypeData.setDataTypeDataDefinition(createDataTypeDefinition(name, uniqueId, creationTime, modificationTime, model));
+        return dataTypeData;
+    }
+
+    private DataTypeDefinition createDataTypeDefinition(final String name, final String uniqueId, final long creationTime,
+                                                        final long modificationTime, String model) {
+        final DataTypeDefinition dataTypeDefinition = new DataTypeDefinition();
+        dataTypeDefinition.setName(name);
+        dataTypeDefinition.setUniqueId(uniqueId);
+        dataTypeDefinition.setCreationTime(creationTime);
+        dataTypeDefinition.setModificationTime(modificationTime);
+        dataTypeDefinition.setModel(model);
+        return dataTypeDefinition;
+    }
+
+}
index 6812b44..793af71 100644 (file)
 
 package org.openecomp.sdc.be.model.operations.impl;
 
-import org.janusgraph.core.JanusGraphVertex;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+
 import fj.data.Either;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.janusgraph.core.JanusGraphVertex;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
 import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
 import org.openecomp.sdc.be.dao.janusgraph.HealingJanusGraphGenericDao;
 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphClient;
@@ -38,7 +51,12 @@ import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.PropertyRule;
 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.model.*;
+import org.openecomp.sdc.be.model.ComponentInstanceProperty;
+import org.openecomp.sdc.be.model.DataTypeDefinition;
+import org.openecomp.sdc.be.model.IComplexDefaultValue;
+import org.openecomp.sdc.be.model.ModelTestBase;
+import org.openecomp.sdc.be.model.PropertyConstraint;
+import org.openecomp.sdc.be.model.PropertyDefinition;
 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
 import org.openecomp.sdc.be.model.tosca.ToscaPropertyType;
 import org.openecomp.sdc.be.model.tosca.ToscaType;
@@ -48,16 +66,14 @@ import org.openecomp.sdc.be.model.tosca.constraints.LessOrEqualConstraint;
 import org.openecomp.sdc.be.resources.data.DataTypeData;
 import org.openecomp.sdc.be.resources.data.PropertyData;
 import org.openecomp.sdc.be.resources.data.PropertyValueData;
-import java.util.*;
-
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.mock;
 
 public class PropertyOperationTest extends ModelTestBase {
 
     HealingJanusGraphGenericDao janusGraphGenericDao = mock(HealingJanusGraphGenericDao.class);
 
-    PropertyOperation propertyOperation = new PropertyOperation(janusGraphGenericDao, null);
+    final DataTypeOperation dataTypeOperation = mock(DataTypeOperation.class);
+
+    PropertyOperation propertyOperation = new PropertyOperation(janusGraphGenericDao, null, dataTypeOperation);
 
     @Before
     public void setup() {
@@ -441,7 +457,7 @@ public class PropertyOperationTest extends ModelTestBase {
        }
 
        private PropertyOperation createTestSubject() {
-               return new PropertyOperation(new HealingJanusGraphGenericDao(new JanusGraphClient()), null);
+               return new PropertyOperation(new HealingJanusGraphGenericDao(new JanusGraphClient()), null, dataTypeOperation);
        }
 
        @Test
@@ -937,7 +953,7 @@ public class PropertyOperationTest extends ModelTestBase {
        @Test
        public void testGetAllDataTypes() throws Exception {
                PropertyOperation testSubject;
-               Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> result;
+               Either<Map<String, Map<String, DataTypeDefinition>>, JanusGraphOperationStatus> result;
 
                // default test
                testSubject = createTestSubject();
@@ -956,18 +972,6 @@ public class PropertyOperationTest extends ModelTestBase {
                result = testSubject.checkInnerType(propDataDef);
        }
 
-       
-       @Test
-       public void testGetAllDataTypeNodes() throws Exception {
-               PropertyOperation testSubject;
-               Either<List<DataTypeData>, JanusGraphOperationStatus> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.getAllDataTypeNodes();
-       }
-
-       
        @Test
        public void testValidateAndUpdatePropertyValue() throws Exception {
                PropertyOperation testSubject;
index 5cb4e8d..87930fd 100644 (file)
@@ -663,7 +663,7 @@ ng1appModule.run([
     // $http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w';
     $http.defaults.headers.common[cookieService.getUserIdSuffix()] = cookieService.getUserId();
 
-    DataTypesService.initDataTypes();
+    DataTypesService.fetchDataTypesByModel(null);
 
     //handle stateChangeStart
     let internalDeregisterStateChangeStartWatcher: Function = (): void => {
index a60d7be..a2d28eb 100644 (file)
@@ -36,6 +36,7 @@ import {Relationship} from "../graph/relationship";
 import { PolicyInstance } from "app/models/graph/zones/policy-instance";
 import { GroupInstance } from "../graph/zones/group-instance";
 import { Metadata } from "app/models/metadata";
+import {Model} from "../model";
 
 
 // import {}
index d72211c..7004b43 100644 (file)
@@ -24,6 +24,7 @@
 'use strict';
 import {PropertyBEModel} from "./properties-inputs/property-be-model";
 import {AttributeBEModel} from "./attributes-outputs/attribute-be-model";
+import {Model} from "./model";
 
 export class DataTypeModel {
 
@@ -36,6 +37,7 @@ export class DataTypeModel {
     modificationTime:string;
     properties: Array<PropertyBEModel>;
     attributes: Array<AttributeBEModel>;
+    model: Model;
 
     constructor(dataType:DataTypeModel) {
         if (dataType) {
@@ -46,6 +48,7 @@ export class DataTypeModel {
             this.modificationTime = dataType.modificationTime;
             this.properties = dataType.properties;
             this.attributes = dataType.attributes;
+            this.model = this.model;
         }
     }
 
index 239d86e..a5e6021 100644 (file)
 *  ============LICENSE_END=========================================================
 */
 
-interface Model {
-  name:string;
+export class Model {
+  name: string;
+
+  constructor(param?: any) {
+    if (param) {
+      this.name = param;
+    }
+  }
+
 }
index 5fc3d5b..96ec935 100644 (file)
@@ -27,6 +27,7 @@ import * as _ from 'lodash';
 import {PROPERTY_TYPES} from '../../../../utils';
 import {AttributeBEModel} from "../../../../models/attributes-outputs/attribute-be-model";
 import {Validation} from "../../../../view-models/workspace/tabs/general/general-view-model";
+import {WorkspaceService} from "../../workspace/workspace.service";
 
 @Component({
   selector: 'attribute-creator',
@@ -43,7 +44,7 @@ export class AttributeCreatorComponent {
   dataTypes: DataTypesMap;
   isLoading: boolean;
 
-  constructor(protected dataTypeService: DataTypeService) {
+  constructor(protected dataTypeService: DataTypeService, protected workspaceService: WorkspaceService) {
   }
 
   ngOnInit() {
@@ -51,7 +52,7 @@ export class AttributeCreatorComponent {
     this.attributeModel.type = '';
     this.attributeModel.schema.property.type = '';
     const types: string[] = PROPERTY_DATA.TYPES; // All types - simple type + map + list
-    this.dataTypes = this.dataTypeService.getAllDataTypes(); // Get all data types in service
+    this.dataTypes = this.dataTypeService.getDataTypeByModel(this.workspaceService.metadata.model); // Get all data types in service
     const nonPrimitiveTypes: string[] = _.filter(Object.keys(this.dataTypes), (type: string) => {
       return types.indexOf(type) === -1;
     });
index 76cf73f..8227229 100644 (file)
@@ -3,6 +3,7 @@ import {PROPERTY_DATA} from "app/utils";
 import {DataTypeService} from "app/ng2/services/data-type.service";
 import {OperationModel, OperationParameter, InputBEModel, DataTypeModel, Capability} from 'app/models';
 import {DropdownValue} from "app/ng2/components/ui/form-components/dropdown/ui-element-dropdown.component";
+import {WorkspaceService} from "../../../workspace/workspace.service";
 
 class DropdownValueType extends DropdownValue {
     type: String;
@@ -37,7 +38,7 @@ export class ParamRowComponent {
     filteredInputProps: Array<DropdownValue> = [];
     filteredCapabilitiesProps: Array<{capabilityName: string, properties: Array<DropdownValueType>}> = [];
 
-    constructor(private dataTypeService:DataTypeService) {}
+    constructor(private dataTypeService:DataTypeService, protected workspaceService: WorkspaceService) {}
 
     ngOnInit() {
         if (this.isInputParam) {
@@ -58,7 +59,7 @@ export class ParamRowComponent {
                 )
             );
         } else {
-            const dataTypes: Array<DataTypeModel> = _.toArray(this.dataTypeService.getAllDataTypes());
+            const dataTypes: Array<DataTypeModel> = _.toArray(this.dataTypeService.getDataTypeByModel(this.workspaceService.metadata.model));
             this.propTypeEnum = _.concat(
                 _.map(
                     _.filter(
@@ -170,7 +171,7 @@ export class ParamRowComponent {
 
     getPrimitiveSubtypes(): Array<InputBEModel> {
         const flattenedProps: Array<any> = [];
-        const dataTypes = this.dataTypeService.getAllDataTypes();
+        const dataTypes = this.dataTypeService.getDataTypeByModel(this.workspaceService.metadata.model);
 
         _.forEach(this.inputProps, prop => {
             const type:DataTypeModel = _.find(
index 8ca4f44..cb90b8b 100644 (file)
@@ -29,6 +29,7 @@ import { ModalService } from 'app/ng2/services/modal.service';
 import { PROPERTY_DATA } from 'app/utils';
 import * as _ from 'lodash';
 import { PROPERTY_TYPES } from '../../../../utils';
+import {WorkspaceService} from "../../workspace/workspace.service";
 
 @Component({
     selector: 'declare-list',
@@ -50,7 +51,7 @@ export class DeclareListComponent {
     propertiesListString: string;
     privateDataType: DataTypeModel;
 
-    constructor(protected dataTypeService: DataTypeService, private modalService: ModalService) {}
+    constructor(protected dataTypeService: DataTypeService, private modalService: ModalService, private workspaceService: WorkspaceService) {}
 
     ngOnInit() {
         console.log('DeclareListComponent.ngOnInit() - enter');
@@ -59,7 +60,7 @@ export class DeclareListComponent {
         this.propertyModel.schema.property.type = '';
         this.propertyModel.required = false;
         const types: string[] =  PROPERTY_DATA.TYPES; // All types - simple type + map + list
-        this.dataTypes = this.dataTypeService.getAllDataTypes(); // Get all data types in service
+        this.dataTypes = this.dataTypeService.getDataTypeByModel(this.workspaceService.metadata.model); // Get all data types in service
         const nonPrimitiveTypes: string[] = _.filter(Object.keys(this.dataTypes), (type: string) => {
             return types.indexOf(type) === -1;
         });
index ae4aa57..10273e2 100644 (file)
@@ -36,12 +36,13 @@ import {ComponentModeService} from "../../services/component-services/component-
 import {SdcUiComponentsModule} from "onap-ui-angular";
 import {ModalFormsModule} from "app/ng2/components/ui/forms/modal-forms.module";
 import {HierarchyNavigationModule} from "../../components/logic/hierarchy-navigtion/hierarchy-navigation.module";
+import {PropertyCreatorComponent} from "./property-creator/property-creator.component";
 
 @NgModule({
   declarations: [
     PropertiesAssignmentComponent,
     InputsTableComponent,
-    FilterPropertiesAssignmentComponent
+    FilterPropertiesAssignmentComponent,
   ],
   imports: [
     BrowserModule,
@@ -59,7 +60,7 @@ import {HierarchyNavigationModule} from "../../components/logic/hierarchy-navigt
   exports: [
     PropertiesAssignmentComponent
   ],
-  providers: [PropertiesService, HierarchyNavService, PropertiesUtils, InputsUtils, DataTypeService, ComponentModeService]
+  providers: [PropertiesService, HierarchyNavService, PropertiesUtils, InputsUtils, DataTypeService, ComponentModeService, PropertyCreatorComponent]
 })
 export class PropertiesAssignmentModule {
 
index 8847e96..b54cbc9 100644 (file)
@@ -87,7 +87,7 @@
         </div>
         <div class="right-column">
             <div *ngIf="!isReadonly && !isInputsTabSelected" class="add-btn"
-                 (click)="addProperty()" data-tests-id="properties-add-button" [ngClass]="{'disabled': !isSelf()}">Add Property</div>
+                 (click)="addProperty(component.model)" data-tests-id="properties-add-button" [ngClass]="{'disabled': !isSelf()}">Add Property</div>
             <div *ngIf="!isReadonly && isInputsTabSelected" class="add-btn"
                  (click)="addInput()" [ngClass]="{'disabled': !isSelf()}">Add Input</div>
             <tabs #hierarchyNavTabs tabStyle="simple-tabs" class="gray-border">
index 6d009a8..fbbc4d8 100644 (file)
@@ -67,6 +67,7 @@ import {ToscaPresentationData} from "../../../models/tosca-presentation";
 import {Observable} from "rxjs";
 import {ToscaGetFunctionType} from "../../../models/tosca-get-function-type.enum";
 import {TranslateService} from "../../shared/translator/translate.service";
+import {Model} from '../../../models/model';
 
 const SERVICE_SELF_TITLE = "SELF";
 @Component({
@@ -130,6 +131,7 @@ export class PropertiesAssignmentComponent {
                 private inputsUtils: InputsUtils,
                 private componentServiceNg2: ComponentServiceNg2,
                 private componentInstanceServiceNg2: ComponentInstanceServiceNg2,
+                private propertyCreatorComponent: PropertyCreatorComponent,
                 @Inject("$stateParams") _stateParams,
                 @Inject("$scope") private $scope: ng.IScope,
                 @Inject("$state") private $state: ng.ui.IStateService,
@@ -220,6 +222,8 @@ export class PropertiesAssignmentComponent {
                 });
             }
         });
+
+      this.loadDataTypesByComponentModel(this.component.model);
     };
 
     ngOnDestroy() {
@@ -1142,7 +1146,8 @@ export class PropertiesAssignmentComponent {
     }
 
     /*** addProperty ***/
-    addProperty = () => {
+    addProperty = (model: Model) => {
+        this.loadDataTypesByComponentModel(model)
         let modalTitle = 'Add Property';
         let modal = this.ModalService.createCustomModal(new ModalModel(
             'sm',
@@ -1172,8 +1177,8 @@ export class PropertiesAssignmentComponent {
             ],
             null
         ));
-        this.ModalService.addDynamicContentToModal(modal, PropertyCreatorComponent, {});
         modal.instance.open();
+        this.ModalService.addDynamicContentToModal(modal, PropertyCreatorComponent, {});
     }
 
     /*** addInput ***/
@@ -1245,6 +1250,10 @@ export class PropertiesAssignmentComponent {
     private isInput = (instanceType:string):boolean =>{
         return instanceType === ResourceType.VF || instanceType === ResourceType.PNF || instanceType === ResourceType.CVFC || instanceType === ResourceType.CR;
     }
-    
+
+    loadDataTypesByComponentModel(model:Model) {
+        let modelName = new Model(model).name;
+        this.propertyCreatorComponent.filterDataTypesByModel(modelName);
+    }
 
 }
index 8167caa..57c9f97 100644 (file)
@@ -7,6 +7,7 @@ import { PROPERTY_DATA } from 'app/utils';
 import * as _ from 'lodash';
 import { PROPERTY_TYPES } from '../../../../utils';
 import {Validation} from "../../../../view-models/workspace/tabs/general/general-view-model";
+import {WorkspaceService} from "../../workspace/workspace.service";
 
 @Component({
     selector: 'property-creator',
@@ -23,14 +24,38 @@ export class PropertyCreatorComponent {
     dataTypes: DataTypesMap;
     isLoading: boolean;
 
-    constructor(protected dataTypeService: DataTypeService) {}
+    constructor(protected dataTypeService: DataTypeService, private workspaceService: WorkspaceService) {
+        this.filterDataTypesByModel(this.workspaceService.metadata.model);
+    }
+
+    checkFormValidForSubmit() {
+        const showSchema: boolean = this.showSchema();
+        const isSchemaValid: boolean = (showSchema && !this.propertyModel.schema.property.type) ? false : true;
+        if (!showSchema) {
+            this.propertyModel.schema.property.type = '';
+        }
+        return this.propertyModel.name && this.propertyModel.type && isSchemaValid;
+    }
+
+    showSchema(): boolean {
+        return [PROPERTY_TYPES.LIST, PROPERTY_TYPES.MAP].indexOf(this.propertyModel.type) > -1;
+    }
+
+    onSchemaTypeChange(): void {
+        if (this.propertyModel.type === PROPERTY_TYPES.MAP) {
+            this.propertyModel.value = JSON.stringify({'': null});
+        } else if (this.propertyModel.type === PROPERTY_TYPES.LIST) {
+            this.propertyModel.value = JSON.stringify([]);
+        }
+    }
 
-    ngOnInit() {
+    public filterDataTypesByModel = (modelName: string) => {
+        this.dataTypes = new DataTypesMap(null);
+        this.dataTypes = this.dataTypeService.getDataTypeByModel(modelName);
         this.propertyModel = new PropertyBEModel();
         this.propertyModel.type = '';
         this.propertyModel.schema.property.type = '';
         const types: string[] =  PROPERTY_DATA.TYPES; // All types - simple type + map + list
-        this.dataTypes = this.dataTypeService.getAllDataTypes(); // Get all data types in service
         const nonPrimitiveTypes: string[] = _.filter(Object.keys(this.dataTypes), (type: string) => {
             return types.indexOf(type) === -1;
         });
@@ -43,35 +68,13 @@ export class PropertyCreatorComponent {
         );
         const nonPrimitiveTypesValues = _.map(nonPrimitiveTypes,
             (type: string) => new DropdownValue(type,
-                    type.replace('org.openecomp.datatypes.heat.', ''))
+                type.replace('org.openecomp.datatypes.heat.', ''))
         )
         .sort((a, b) => a.label.localeCompare(b.label));
         this.typesProperties = _.concat(this.typesProperties, nonPrimitiveTypesValues);
         this.typesSchemaProperties = _.concat(typesSimpleProperties, nonPrimitiveTypesValues);
         this.typesProperties.unshift(new DropdownValue('', 'Select Type...'));
         this.typesSchemaProperties.unshift(new DropdownValue('', 'Select Schema Type...'));
-
-    }
-
-    checkFormValidForSubmit() {
-        const showSchema: boolean = this.showSchema();
-        const isSchemaValid: boolean = (showSchema && !this.propertyModel.schema.property.type) ? false : true;
-        if (!showSchema) {
-            this.propertyModel.schema.property.type = '';
-        }
-        return this.propertyModel.name && this.propertyModel.type && isSchemaValid;
-    }
-
-    showSchema(): boolean {
-        return [PROPERTY_TYPES.LIST, PROPERTY_TYPES.MAP].indexOf(this.propertyModel.type) > -1;
-    }
-
-    onSchemaTypeChange(): void {
-        if (this.propertyModel.type === PROPERTY_TYPES.MAP) {
-            this.propertyModel.value = JSON.stringify({'': null});
-        } else if (this.propertyModel.type === PROPERTY_TYPES.LIST) {
-            this.propertyModel.value = JSON.stringify([]);
-        }
     }
 
 }
index 30eb6f0..85c8b89 100644 (file)
@@ -47,8 +47,8 @@ export class DataTypeService {
         return this.dataTypes[typeName];
     }
 
-    public getAllDataTypes(): DataTypesMap {
-        return this.dataTypes;
+    public getDataTypeByModel(modelName: string): DataTypesMap {
+        return this.dataTypeService.getAllDataTypesFromModel(modelName);
     }
 
     public getConstraintsByParentTypeAndUniqueID(rootPropertyType, propertyName){
index 33d5729..10ad414 100644 (file)
@@ -20,6 +20,7 @@ import { HttpClient } from '@angular/common/http';
 import { Inject, Injectable } from '@angular/core';
 import { Observable } from 'rxjs/Observable';
 import { ISdcConfig, SdcConfigToken } from '../config/sdc-config.config';
+import {Model} from "../../models/model";
 
 @Injectable()
 export class ModelService {
index 96a2126..fa3de88 100644 (file)
@@ -31,6 +31,7 @@ import { GroupInstance } from "../../../models/graph/zones/group-instance";
 import { InputsGroup } from "../../../models/inputs";
 import { InterfaceModel } from "../../../models/operation";
 import { OutputBEModel } from "app/models/attributes-outputs/output-be-model";
+import {Model} from "../../../models/model";
 
 export class ComponentGenericResponse  implements Serializable<ComponentGenericResponse> {
 
index 0237b2f..08b49ae 100644 (file)
 
 'use strict';
 import { DataTypePropertyModel } from "../models/data-type-properties";
-import {ComponentInstance, InputModel, DataTypesMap, PropertyModel, InputPropertyBase, IAppConfigurtaion, SchemaProperty} from "../models";
+import {
+    ComponentInstance,
+    InputModel,
+    DataTypesMap,
+    PropertyModel,
+    InputPropertyBase,
+    IAppConfigurtaion,
+    SchemaProperty
+} from "../models";
 import {PROPERTY_DATA} from "../utils/constants";
 
 export interface IDataTypesService {
@@ -32,7 +40,7 @@ export interface IDataTypesService {
     selectedInstance:ComponentInstance;
     selectedComponentInputs:Array<InputModel>;
     //declare methods
-    initDataTypes():void;
+    fetchDataTypesByModel(modelName:string):void;
     getAllDataTypes():DataTypesMap;
     getFirsLevelOfDataTypeProperties(dataTypeName:string):Array<DataTypePropertyModel>;
     isDataTypeForSchemaType(property:SchemaProperty):boolean;
@@ -51,9 +59,10 @@ export class DataTypesService implements IDataTypesService {
     constructor(private sdcConfig:IAppConfigurtaion,
                 private $q:ng.IQService,
                 private $http:ng.IHttpService) {
-
     }
 
+    private baseUrl = this.sdcConfig.api.root + this.sdcConfig.api.component_api_root;
+
     dataTypes:DataTypesMap; //Data type map
     selectedPropertiesName:string;
     selectedInput:PropertyModel;
@@ -61,16 +70,23 @@ export class DataTypesService implements IDataTypesService {
     selectedInstance:ComponentInstance;
     selectedComponentInputs:Array<InputModel>;
 
-    public initDataTypes = ():void => {
-        this.$http({
-            url: this.sdcConfig.api.root + this.sdcConfig.api.component_api_root + "dataTypes",
-            method: "get"
-        }).then((response:any) => {
+    public fetchDataTypesByModel = (modelName: string):void => {
+        let model;
+        if (modelName) {
+            model = {'model': modelName}
+        }
+        this.$http.get(this.baseUrl+"dataTypes", {params: model})
+        .then((response:any) => {
             this.dataTypes = response.data;
             delete this.dataTypes['tosca.datatypes.Root'];
         });
     };
 
+    public getAllDataTypesFromModel = (modelName: string): DataTypesMap => {
+        this.fetchDataTypesByModel(modelName);
+        return this.dataTypes;
+    }
+
     public getAllDataTypes = ():DataTypesMap => {
         return this.dataTypes;
     };
index 1f922cd..5e48dc8 100644 (file)
@@ -135,7 +135,7 @@ export abstract class PropertyFormBaseView {
         this.$scope.property = new PropertyModel(this.originalProperty); //we create a new Object so if user press cance we won't update the property
         this.$scope.types = PROPERTY_DATA.TYPES; //All types - simple type + map + list
         this.$scope.simpleTypes = PROPERTY_DATA.SIMPLE_TYPES; //All simple types
-        this.$scope.dataTypes = this.DataTypesService.getAllDataTypes(); //Get all data types in service
+        this.$scope.dataTypes = this.DataTypesService.getAllDataTypesFromModel(this.component.model.name); //Get all data types in service
         this.$scope.modalPropertyFormBase = this.$uibModalInstance;
         this.$scope.isNew = !angular.isDefined(this.$scope.property.name);
 
index c63dd8a..c36a242 100644 (file)
@@ -59,6 +59,7 @@ interface IPropertyFormViewModelScope extends ng.IScope {
     isPropertyValueOwner:boolean;
     isVnfConfiguration:boolean;
     constraints:string[];
+    modelNameFilter:string;
 
     validateJson(json:string):boolean;
     save(doNotCloseModal?:boolean):void;
@@ -125,7 +126,6 @@ export class PropertyFormViewModel {
                 private workspaceService: WorkspaceService) {
 
         this.formState = angular.isDefined(property.name) ? FormState.UPDATE : FormState.CREATE;
-
         this.initScope();
     }
 
@@ -203,9 +203,10 @@ export class PropertyFormViewModel {
         this.$scope.modalInstanceProperty = this.$uibModalInstance;
         this.$scope.currentPropertyIndex = _.findIndex(this.filteredProperties, i=> i.name == this.property.name);
         this.$scope.isLastProperty = this.$scope.currentPropertyIndex == (this.filteredProperties.length - 1);
-        this.$scope.dataTypes = this.DataTypesService.getAllDataTypes();
+        this.$scope.dataTypes = this.DataTypesService.getAllDataTypesFromModel(this.workspaceService.metadata.model);
         this.$scope.isPropertyValueOwner = this.isPropertyValueOwner;
         this.$scope.propertyOwnerType = this.propertyOwnerType;
+        this.$scope.modelNameFilter = this.workspaceService.metadata.model;
 
         this.$scope.editPropertyModel = {
             property : new PropertyModel(this.property),
index ab4b033..9be3b64 100644 (file)
@@ -20,7 +20,7 @@
 
 'use strict';
 import {DataTypesService} from "app/services/data-types-service";
-import {PropertyModel, InputPropertyBase, Component} from "app/models";
+import {PropertyModel, InputPropertyBase, Component, DataTypesMap} from "app/models";
 import {IPropertyFormBaseViewScope, PropertyFormBaseView} from "../base-property-form/property-form-base-model";
 import {PROPERTY_TYPES} from "app/utils/constants";
 
@@ -31,6 +31,7 @@ interface ISelectDataTypeViewModelScope extends IPropertyFormBaseViewScope {
     isTypeDataType:boolean;
     myValue:any;
     isReadOnly:boolean;
+    modelNameFilter:string;
 }
 
 export class SelectDataTypeViewModel extends PropertyFormBaseView {
@@ -62,6 +63,7 @@ export class SelectDataTypeViewModel extends PropertyFormBaseView {
 
         this.$templateCache.put("select-datatype-modal-view.html", require('app/view-models/forms/property-forms/select-datatype-modal/select-datatype-modal-view.html'));
         this.$scope.innerViewSrcUrl = "select-datatype-modal-view.html";
+        this.$scope.modelNameFilter = this.component.model.name;
         this.initChildScope();
     }
 
@@ -114,4 +116,8 @@ export class SelectDataTypeViewModel extends PropertyFormBaseView {
         this.initForNotSimpleType();
         this.removeSelected();
     }
+
+    public getAllDataTypesFromModel = (modelName: string): DataTypesMap => {
+        return this.DataTypesService.getAllDataTypesFromModel(modelName);
+    }
 }
index d22741f..f95a7e0 100644 (file)
@@ -13,7 +13,7 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
 -->
-<div data-ng-if="dataTypes" class="default-value-section i-sdc-form-item">
+<div data-ng-if="getAllDataTypesFromModel(modelNameFilter)" class="default-value-section i-sdc-form-item">
     <label class="i-sdc-form-label">Default Value</label>
     <div data-ng-if="isTypeDataType">
              <select-fields-structure value-obj-ref="myValue"
index 391b6ee..20eaec6 100644 (file)
@@ -38,6 +38,7 @@ import {Component, IAppConfigurtaion, ICsarComponent, IMainCategory, IMetadataKe
 import {IWorkspaceViewModelScope} from "app/view-models/workspace/workspace-view-model";
 import {CATEGORY_SERVICE_METADATA_KEYS, PREVIOUS_CSAR_COMPONENT} from "../../../../utils/constants";
 import {Observable} from "rxjs";
+import {Model} from "../../../../models/model";
 
 export class Validation {
     componentNameValidationPattern:RegExp;
index cffab12..ee78821 100644 (file)
@@ -40,6 +40,7 @@ public class AttributeDataDefinition extends ToscaDataDefinition {
     private String outputPath;
     private String instanceUniqueId;
     private String attributeId;
+    private String model;
     private String parentUniqueId;
 
     public AttributeDataDefinition(final AttributeDataDefinition attributeDataDefinition) {
@@ -57,6 +58,7 @@ public class AttributeDataDefinition extends ToscaDataDefinition {
         this.setOutputPath(attributeDataDefinition.getOutputPath());
         this.setInstanceUniqueId(attributeDataDefinition.getInstanceUniqueId());
         this.setAttributeId(attributeDataDefinition.getAttributeId());
+        this.setModel(attributeDataDefinition.getModel());
         this.setParentUniqueId(attributeDataDefinition.getParentUniqueId());
         this.setOutputId(attributeDataDefinition.getOutputId());
         if (CollectionUtils.isNotEmpty(attributeDataDefinition.getGetOutputValues())) {
index 7baf8c8..51f710b 100644 (file)
@@ -38,6 +38,7 @@ public class DataTypeDataDefinition extends ToscaDataDefinition {
     // "boolean", "string", "float", "integer", "version" })
     private String derivedFromName;
     private String description;
+    private String model;
     /**
      * Timestamp of data type creation
      */
@@ -55,5 +56,6 @@ public class DataTypeDataDefinition extends ToscaDataDefinition {
         this.description = p.description;
         this.creationTime = p.creationTime;
         this.modificationTime = p.modificationTime;
+        this.model = p.model;
     }
 }
index 871492c..969d986 100644 (file)
@@ -20,9 +20,7 @@
 
 package org.openecomp.sdc.be.datatypes.elements;
 
-import org.apache.commons.collections.CollectionUtils;
-import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
-import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition;
+import static org.apache.commons.collections.CollectionUtils.isNotEmpty;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -32,9 +30,10 @@ import java.util.Map;
 import java.util.Set;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
-import static org.apache.commons.collections.CollectionUtils.isNotEmpty;
+import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
+import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition;
 import org.openecomp.sdc.be.datatypes.tosca.ToscaGetFunctionType;
 
 @EqualsAndHashCode(callSuper = false)
@@ -62,6 +61,7 @@ public class PropertyDataDefinition extends ToscaDataDefinition {
     private String status;
     private String inputId;
     private String instanceUniqueId;
+    private String model;
     private String propertyId;
     private String parentPropertyType;
     private String subPropertyInputPath;
@@ -109,6 +109,7 @@ public class PropertyDataDefinition extends ToscaDataDefinition {
         this.setStatus(propertyDataDefinition.getStatus());
         this.setInputId(propertyDataDefinition.getInputId());
         this.setInstanceUniqueId(propertyDataDefinition.getInstanceUniqueId());
+        this.setModel(propertyDataDefinition.getModel());
         this.setPropertyId(propertyDataDefinition.getPropertyId());
         this.setToscaGetFunctionType(propertyDataDefinition.getToscaGetFunctionType());
         this.parentPropertyType = propertyDataDefinition.getParentPropertyType();