Merge "added test case to PropertyOperatorTest.java"
[ccsdk/apps.git] / ms / controllerblueprints / modules / service / src / main / java / org / onap / ccsdk / apps / controllerblueprints / service / BluePrintEnhancerService.java
index 0cf846c..ef3b4a4 100644 (file)
@@ -19,17 +19,19 @@ package org.onap.ccsdk.apps.controllerblueprints.service;
 \r
 import com.fasterxml.jackson.databind.JsonNode;\r
 import com.google.common.base.Preconditions;\r
+import org.apache.commons.collections.MapUtils;\r
 import org.apache.commons.lang3.StringUtils;\r
 import org.jetbrains.annotations.NotNull;\r
 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException;\r
 import org.onap.ccsdk.apps.controllerblueprints.core.ConfigModelConstant;\r
 import org.onap.ccsdk.apps.controllerblueprints.core.data.*;\r
-import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintEnhancerDefaultService;\r
-import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRepoService;\r
+import org.onap.ccsdk.apps.controllerblueprints.resource.dict.service.ResourceDefinitionRepoService;\r
+import org.onap.ccsdk.apps.controllerblueprints.service.enhancer.BluePrintEnhancerDefaultService;\r
 import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils;\r
 import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceAssignment;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
+import com.att.eelf.configuration.EELFLogger;\r
+import com.att.eelf.configuration.EELFManager;\r
+import org.onap.ccsdk.apps.controllerblueprints.service.enhancer.ResourceAssignmentEnhancerService;\r
 import org.springframework.stereotype.Service;\r
 \r
 import java.util.HashMap;\r
@@ -45,16 +47,20 @@ import java.util.Map;
 @Service\r
 public class BluePrintEnhancerService extends BluePrintEnhancerDefaultService {\r
 \r
-    private static Logger log = LoggerFactory.getLogger(BluePrintEnhancerService.class);\r
+    private static EELFLogger log = EELFManager.getInstance().getLogger(BluePrintEnhancerService.class);\r
 \r
-    private HashMap<String, DataType> recipeDataTypes = new HashMap<>();\r
+    private ResourceAssignmentEnhancerService resourceAssignmentEnhancerService;\r
 \r
-    public BluePrintEnhancerService(BluePrintRepoService bluePrintEnhancerRepoDBService) {\r
-        super(bluePrintEnhancerRepoDBService);\r
+    private Map<String, DataType> recipeDataTypes = new HashMap<>();\r
+\r
+    public BluePrintEnhancerService(ResourceDefinitionRepoService resourceDefinitionRepoService,\r
+                                    ResourceAssignmentEnhancerService resourceAssignmentEnhancerService) {\r
+        super(resourceDefinitionRepoService);\r
+        this.resourceAssignmentEnhancerService = resourceAssignmentEnhancerService;\r
     }\r
 \r
     @Override\r
-    public void enrichTopologyTemplate(@NotNull ServiceTemplate serviceTemplate) {\r
+    public void enrichTopologyTemplate(@NotNull ServiceTemplate serviceTemplate) throws BluePrintException {\r
         super.enrichTopologyTemplate(serviceTemplate);\r
 \r
         // Update the Recipe Inputs and DataTypes\r
@@ -100,7 +106,7 @@ public class BluePrintEnhancerService extends BluePrintEnhancerDefaultService {
             // Modified for ONAP converted Object to JsonNode\r
             JsonNode recipeNames = nodeTemplate.getProperties().get(ConfigModelConstant.PROPERTY_RECIPE_NAMES);\r
 \r
-            log.info("Processing Receipe Names : {} ", recipeNames);\r
+            log.info("Processing Recipe Names : {} ", recipeNames);\r
 \r
             if (recipeNames != null && recipeNames.isArray() && recipeNames.size() > 0) {\r
 \r
@@ -119,7 +125,7 @@ public class BluePrintEnhancerService extends BluePrintEnhancerDefaultService {
         if (StringUtils.isNotBlank(recipeName)) {\r
             DataType recipeDataType = this.recipeDataTypes.get(recipeName);\r
             if (recipeDataType == null) {\r
-                log.info("DataType not present for the recipe({})" , recipeName);\r
+                log.info("DataType not present for the recipe({})", recipeName);\r
                 recipeDataType = new DataType();\r
                 recipeDataType.setVersion("1.0.0");\r
                 recipeDataType.setDescription(\r
@@ -129,7 +135,7 @@ public class BluePrintEnhancerService extends BluePrintEnhancerDefaultService {
                 Map<String, PropertyDefinition> dataTypeProperties = new HashMap<>();\r
                 recipeDataType.setProperties(dataTypeProperties);\r
             } else {\r
-                log.info("DataType Already present for the recipe({})" , recipeName);\r
+                log.info("DataType Already present for the recipe({})", recipeName);\r
             }\r
 \r
             // Merge all the Recipe Properties\r
@@ -142,10 +148,10 @@ public class BluePrintEnhancerService extends BluePrintEnhancerDefaultService {
     }\r
 \r
     private Map<String, PropertyDefinition> getCapabilityMappingProperties(String nodeTemplateName,\r
-                                                                           NodeTemplate nodeTemplate) {\r
+                                                                           NodeTemplate nodeTemplate) throws BluePrintException {\r
 \r
         Map<String, PropertyDefinition> dataTypeProperties = null;\r
-        if (nodeTemplate != null) {\r
+        if (nodeTemplate != null && MapUtils.isNotEmpty(nodeTemplate.getCapabilities())) {\r
             CapabilityAssignment capability =\r
                     nodeTemplate.getCapabilities().get(ConfigModelConstant.CAPABILITY_PROPERTY_MAPPING);\r
 \r
@@ -158,6 +164,9 @@ public class BluePrintEnhancerService extends BluePrintEnhancerDefaultService {
                         JacksonUtils.getListFromJson(resourceAssignmentContent, ResourceAssignment.class);\r
 \r
                 Preconditions.checkNotNull(resourceAssignments, "Failed to Processing Resource Mapping " + resourceAssignmentContent);\r
+                // Enhance Resource Assignment\r
+                resourceAssignmentEnhancerService.enhanceBluePrint(this, resourceAssignments);\r
+\r
                 dataTypeProperties = new HashMap<>();\r
 \r
                 for (ResourceAssignment resourceAssignment : resourceAssignments) {\r
@@ -166,9 +175,6 @@ public class BluePrintEnhancerService extends BluePrintEnhancerDefaultService {
                             && resourceAssignment.getProperty() != null\r
                             && StringUtils.isNotBlank(resourceAssignment.getName())) {\r
 \r
-                        // Enrich the Property Definition\r
-                        super.enrichPropertyDefinition(resourceAssignment.getName(), resourceAssignment.getProperty());\r
-\r
                         dataTypeProperties.put(resourceAssignment.getName(), resourceAssignment.getProperty());\r
 \r
                     }\r
@@ -182,17 +188,18 @@ public class BluePrintEnhancerService extends BluePrintEnhancerDefaultService {
     private void mergeDataTypeProperties(DataType dataType, Map<String, PropertyDefinition> mergeProperties) {\r
         if (dataType != null && dataType.getProperties() != null && mergeProperties != null) {\r
             // Add the Other Template Properties\r
-            mergeProperties.forEach((mappingKey, propertyDefinition) -> {\r
-                dataType.getProperties().put(mappingKey, propertyDefinition);\r
-            });\r
+            mergeProperties.forEach((mappingKey, propertyDefinition) -> dataType.getProperties().put(mappingKey, propertyDefinition));\r
         }\r
     }\r
 \r
     private void populateRecipeInputs(ServiceTemplate serviceTemplate) {\r
-        if (this.recipeDataTypes != null && !this.recipeDataTypes.isEmpty()) {\r
+        if (serviceTemplate.getTopologyTemplate() != null\r
+                && MapUtils.isNotEmpty(serviceTemplate.getTopologyTemplate().getInputs())\r
+                && MapUtils.isNotEmpty(this.recipeDataTypes)\r
+                && MapUtils.isNotEmpty(serviceTemplate.getDataTypes())) {\r
             this.recipeDataTypes.forEach((recipeName, recipeDataType) -> {\r
-                String dataTypePrifix = recipeName.replace("-action", "") + "-request";\r
-                String dataTypeName = "dt-" + dataTypePrifix;\r
+                String dataTypePrefix = recipeName.replace("-action", "") + "-request";\r
+                String dataTypeName = "dt-" + dataTypePrefix;\r
 \r
                 serviceTemplate.getDataTypes().put(dataTypeName, recipeDataType);\r
 \r
@@ -200,7 +207,7 @@ public class BluePrintEnhancerService extends BluePrintEnhancerDefaultService {
                 customInputProperty.setDescription("This is Dynamic Data type for the receipe " + recipeName + ".");\r
                 customInputProperty.setRequired(Boolean.FALSE);\r
                 customInputProperty.setType(dataTypeName);\r
-                serviceTemplate.getTopologyTemplate().getInputs().put(dataTypePrifix, customInputProperty);\r
+                serviceTemplate.getTopologyTemplate().getInputs().put(dataTypePrefix, customInputProperty);\r
 \r
             });\r
         }\r