Enhancement better error messages. 22/100622/1
authorOleg Mitsura <oleg.mitsura@amdocs.com>
Wed, 22 Jan 2020 19:23:17 +0000 (14:23 -0500)
committerOleg Mitsura <oleg.mitsura@amdocs.com>
Wed, 22 Jan 2020 19:23:17 +0000 (14:23 -0500)
Issue-ID: CCSDK-2036
rev1: initial commit.

Signed-off-by: Oleg Mitsura <oleg.mitsura@amdocs.com>
Change-Id: I0bc31a2a17a6dfedbb1870470e8bf6304be782b5

ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/interfaces/BluePrintEnhancer.kt
ms/blueprintsprocessor/modules/inbounds/designer-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/utils/BluePrintEnhancerUtils.kt

index 535021b..b657199 100644 (file)
@@ -164,8 +164,17 @@ interface BluePrintTypeEnhancerService {
         bluePrintRuntimeService: BluePrintRuntimeService<*>,
         properties: MutableMap<String, PropertyDefinition>
     ) {
+        val errorMap = linkedMapOf<String, BluePrintException>()
         properties.forEach { propertyName, propertyDefinition ->
-            enhancePropertyDefinition(bluePrintRuntimeService, propertyName, propertyDefinition)
+            try {
+                enhancePropertyDefinition(bluePrintRuntimeService, propertyName, propertyDefinition)
+            } catch (e: BluePrintException) {
+                errorMap[propertyName] = e
+            }
+        }
+        if (errorMap.isNotEmpty()) {
+            val nestedErrors = errorMap.keys.map { "[ property: ${errorMap[it]?.message} ]" }.joinToString(";")
+            throw BluePrintException("Failed to enhance properties $nestedErrors")
         }
     }
 
@@ -182,8 +191,17 @@ interface BluePrintTypeEnhancerService {
         bluePrintRuntimeService: BluePrintRuntimeService<*>,
         attributes: MutableMap<String, AttributeDefinition>
     ) {
+        val errorMap = linkedMapOf<String, BluePrintException>()
         attributes.forEach { attributeName, attributeDefinition ->
-            enhanceAttributeDefinition(bluePrintRuntimeService, attributeName, attributeDefinition)
+            try {
+                enhanceAttributeDefinition(bluePrintRuntimeService, attributeName, attributeDefinition)
+            } catch (e: BluePrintException) {
+                errorMap[attributeName] = e
+            }
+        }
+        if (errorMap.isNotEmpty()) {
+            val nestedErrors = errorMap.keys.map { "[ attribute: ${errorMap[it]?.message} ]" }.joinToString(";")
+            throw BluePrintException("Failed to enhance attributes $nestedErrors")
         }
     }
 
@@ -204,8 +222,19 @@ interface BluePrintTypeEnhancerService {
         enhancers: List<BluePrintEnhancer<T>>
     ) {
         if (enhancers.isNotEmpty()) {
+            val errorMap = linkedMapOf<String, BluePrintException>()
             enhancers.forEach {
-                it.enhance(bluePrintRuntimeService, name, definition as T)
+                try {
+                    it.enhance(bluePrintRuntimeService, name, definition as T)
+                } catch (e: BluePrintException) {
+                    errorMap[name] = e
+                }
+            }
+            if (errorMap.isNotEmpty()) {
+                val nestedErrors = errorMap.keys.map {
+                    "${errorMap[it]?.message ?: errorMap[it].toString()}"
+                }.joinToString(";")
+                throw BluePrintException("$name-->$nestedErrors")
             }
         }
     }
index 4d5ca36..4affd3b 100644 (file)
@@ -163,7 +163,7 @@ class BluePrintEnhancerUtils {
             archiveDir: String,
             outputFileName: String = "enhanced-cba.zip"
         ):
-                ResponseEntity<Resource> {
+            ResponseEntity<Resource> {
             val compressedFile = normalizedFile(archiveDir, outputFileName)
             BluePrintArchiveUtils.compress(Paths.get(enhanceDir).toFile(), compressedFile)
             return prepareResourceEntity(compressedFile)