Fix ResolutionSummary - return empty string instead of null 03/104803/3
authorJozsef Csongvai <jozsef.csongvai@bell.ca>
Tue, 31 Mar 2020 20:34:43 +0000 (16:34 -0400)
committerJozsef Csongvai <jozsef.csongvai@bell.ca>
Tue, 31 Mar 2020 20:51:43 +0000 (16:51 -0400)
Issue-ID: CCSDK-2246
Signed-off-by: Jozsef Csongvai <jozsef.csongvai@bell.ca>
Change-Id: I894bf605ee7f5b094d015fd637979ce055da5081

ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/utils/ResourceAssignmentUtils.kt
ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/utils/ResourceAssignmentUtilsTest.kt
ms/blueprintsprocessor/modules/blueprints/resource-dict/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/resource/dict/ResourceDefinition.kt

index 7bb757b..bfa23cc 100644 (file)
@@ -203,18 +203,40 @@ class ResourceAssignmentUtils {
             resourceAssignments: List<ResourceAssignment>,
             resourceDefinitions: Map<String, ResourceDefinition>
         ): String {
+            val emptyTextNode = TextNode.valueOf("")
             val resolutionSummaryList = resourceAssignments.map {
                 val definition = resourceDefinitions[it.name]
-                val payload = definition?.sources?.get(it.dictionarySource)
+                val description = definition?.property?.description ?: ""
+                val value = it.property?.value
+                        ?.let { v -> if (v.isNullOrMissing()) emptyTextNode else v }
+                        ?: emptyTextNode
+
+                var payload: JsonNode = definition?.sources?.get(it.dictionarySource)
                         ?.properties?.get("resolved-payload")
+                        ?.let { p -> if (p.isNullOrMissing()) emptyTextNode else p }
+                        ?: emptyTextNode
+
                 val metadata = definition?.property?.metadata
                         ?.map { e -> DictionaryMetadataEntry(e.key, e.value) }
                         ?.toMutableList() ?: mutableListOf()
-                val description = definition?.property?.description
+
+                val keyIdentifiers: MutableList<KeyIdentifier> = it.keyIdentifiers.map { k ->
+                    if (k.value.isNullOrMissing()) KeyIdentifier(k.name, emptyTextNode) else k
+                }.toMutableList()
+
                 ResolutionSummary(
-                        it.name, it.property?.value, it.property?.required, it.property?.type,
-                        it.keyIdentifiers, description, metadata, it.dictionaryName,
-                        it.dictionarySource, payload, it.status, it.message
+                        it.name,
+                        value,
+                        it.property?.required ?: false,
+                        it.property?.type ?: "",
+                        keyIdentifiers,
+                        description,
+                        metadata,
+                        it.dictionaryName ?: "",
+                        it.dictionarySource ?: "",
+                        payload,
+                        it.status ?: "",
+                        it.message ?: ""
                 )
             }
             // Wrapper needed for integration with SDNC
index 9df8fb7..27adb51 100644 (file)
@@ -180,8 +180,8 @@ class ResourceAssignmentUtilsTest {
                 "resolution-summary":[
                     {
                         "name":"pnf-id",
-                        "value":null,
-                        "required":null,
+                        "value":"",
+                        "required":false,
                         "type":"string",
                         "key-identifiers":[],
                         "dictionary-description":"pnf-id",
@@ -191,8 +191,8 @@ class ResourceAssignmentUtilsTest {
                         "dictionary-name":"pnf-id",
                         "dictionary-source":"input",
                         "request-payload":{"mock":true},
-                        "status":null,
-                        "message":null
+                        "status":"",
+                        "message":""
                     }
                 ]
             }
index 77025c5..70f151b 100644 (file)
@@ -112,25 +112,25 @@ data class DictionaryMetadataEntry(val name: String, val value: String)
  */
 data class ResolutionSummary(
     val name: String,
-    val value: JsonNode?,
-    val required: Boolean?,
-    val type: String?,
+    val value: JsonNode,
+    val required: Boolean,
+    val type: String,
     @JsonProperty("key-identifiers")
     val keyIdentifiers: MutableList<KeyIdentifier>,
     @JsonProperty("dictionary-description")
-    val dictionaryDescription: String?,
+    val dictionaryDescription: String,
     @JsonProperty("dictionary-metadata")
     val dictionaryMetadata: MutableList<DictionaryMetadataEntry>,
     @JsonProperty("dictionary-name")
-    val dictionaryName: String?,
+    val dictionaryName: String,
     @JsonProperty("dictionary-source")
-    val dictionarySource: String?,
+    val dictionarySource: String,
     @JsonProperty("request-payload")
-    val requestPayload: JsonNode?,
+    val requestPayload: JsonNode,
     @JsonProperty("status")
-    val status: String?,
+    val status: String,
     @JsonProperty("message")
-    val message: String?
+    val message: String
 )
 /**
  * Interface for Source Definitions (ex Input Source,