Merge "Removed empty ResourceResolutionControllerTest"
[ccsdk/cds.git] / ms / blueprintsprocessor / functions / resource-resolution / src / main / kotlin / org / onap / ccsdk / cds / blueprintsprocessor / functions / resource / resolution / processor / ResourceAssignmentProcessor.kt
index 8dbd47c..1abcea8 100644 (file)
@@ -25,9 +25,9 @@ import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.util
 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException
 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonNode
 import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BlueprintFunctionNode
 import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintVelocityTemplateService
-import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
 import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceAssignment
 import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceDefinition
 import org.slf4j.LoggerFactory
@@ -67,25 +67,24 @@ abstract class ResourceAssignmentProcessor : BlueprintFunctionNode<ResourceAssig
                 ?: throw BluePrintProcessorException("couldn't get resource definition for ($name)")
     }
 
-    open fun resolveInputKeyMappingVariables(inputKeyMapping: Map<String, String>): Map<String, Any> {
-        val resolvedInputKeyMapping = HashMap<String, Any>()
+    open fun resolveInputKeyMappingVariables(inputKeyMapping: Map<String, String>): Map<String, JsonNode> {
+        val resolvedInputKeyMapping = HashMap<String, JsonNode>()
         if (MapUtils.isNotEmpty(inputKeyMapping)) {
             for ((key, value) in inputKeyMapping) {
                 val resultValue = raRuntimeService.getResolutionStore(value)
-                val expressionValue = JacksonUtils.getValue(resultValue)
-                log.trace("Reference dictionary key ({}), value ({})", key, expressionValue)
-                resolvedInputKeyMapping[key] = expressionValue
+                resolvedInputKeyMapping[key] = resultValue
             }
         }
         return resolvedInputKeyMapping
     }
 
-    open suspend fun resolveFromInputKeyMapping(valueToResolve: String, keyMapping: MutableMap<String, Any>):
+    open suspend fun resolveFromInputKeyMapping(valueToResolve: String, keyMapping: MutableMap<String, JsonNode>):
             String {
         if (valueToResolve.isEmpty() || !valueToResolve.contains("$")) {
             return valueToResolve
         }
-        return BluePrintVelocityTemplateService.generateContent(valueToResolve, additionalContext = keyMapping)
+        //TODO("Optimize to JSON Node directly without velocity").asJsonNode().toString()
+        return BluePrintVelocityTemplateService.generateContent(valueToResolve, keyMapping.asJsonNode().toString())
     }
 
     final override suspend fun applyNB(resourceAssignment: ResourceAssignment): Boolean {
@@ -94,6 +93,7 @@ abstract class ResourceAssignmentProcessor : BlueprintFunctionNode<ResourceAssig
         } catch (runtimeException: RuntimeException) {
             log.error("failed in ${getName()} : ${runtimeException.message}", runtimeException)
             recoverNB(runtimeException, resourceAssignment)
+            return false
         }
         return true
     }
@@ -122,7 +122,7 @@ abstract class ResourceAssignmentProcessor : BlueprintFunctionNode<ResourceAssig
         try {
             process(resourceAssignment)
         } catch (runtimeException: RuntimeException) {
-            log.error("failed in ${getName()} : ${runtimeException.message}", runtimeException)
+            log.error("failed in ResourceAssignmentProcessor : ${runtimeException.message}", runtimeException)
             recover(runtimeException, resourceAssignment)
         }
     }