Add blueprint artifact definition enrichment.
authorMuthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>
Fri, 14 Dec 2018 17:30:51 +0000 (12:30 -0500)
committerMuthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>
Fri, 14 Dec 2018 17:30:51 +0000 (12:30 -0500)
Change-Id: I3b03a1f76472ce6b44929457a42805d281950ff7
Issue-ID: CCSDK-839
Signed-off-by: Muthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>
components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/interfaces/BluePrintEnhancer.kt
components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRuntimeService.kt
components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/BluePrintArchiveUtils.kt
components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/JacksonReactorUtils.kt
components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/JacksonUtils.kt
components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/validation/BluePrintNodeTemplateValidatorImpl.kt
components/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRepoFileServiceTest.kt
components/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/JacksonReactorUtilsTest.kt

index f6659e7..f01f126 100644 (file)
@@ -35,6 +35,8 @@ interface BluePrintNodeTemplateEnhancer : BluePrintEnhancer<NodeTemplate>
 
 interface BluePrintNodeTypeEnhancer : BluePrintEnhancer<NodeType>
 
+interface BluePrintArtifactDefinitionEnhancer : BluePrintEnhancer<ArtifactDefinition>
+
 interface BluePrintPolicyTypeEnhancer : BluePrintEnhancer<PolicyType>
 
 interface BluePrintPropertyDefinitionEnhancer : BluePrintEnhancer<PropertyDefinition>
@@ -63,6 +65,8 @@ interface BluePrintTypeEnhancerService {
 
     fun getNodeTypeEnhancers(): List<BluePrintNodeTypeEnhancer>
 
+    fun getArtifactDefinitionEnhancers(): List<BluePrintArtifactDefinitionEnhancer>
+
     fun getPolicyTypeEnhancers(): List<BluePrintPolicyTypeEnhancer>
 
     fun getPropertyDefinitionEnhancers(): List<BluePrintPropertyDefinitionEnhancer>
@@ -94,6 +98,11 @@ interface BluePrintTypeEnhancerService {
         doEnhancement(bluePrintRuntimeService, name, nodeType, enhancers)
     }
 
+    fun enhanceArtifactDefinition(bluePrintRuntimeService: BluePrintRuntimeService<*>, name: String, artifactDefinition: ArtifactDefinition) {
+        val enhancers = getArtifactDefinitionEnhancers()
+        doEnhancement(bluePrintRuntimeService, name, artifactDefinition, enhancers)
+    }
+
     fun enhancePolicyType(bluePrintRuntimeService: BluePrintRuntimeService<*>, name: String, policyType: PolicyType) {
         val enhancers = getPolicyTypeEnhancers()
         doEnhancement(bluePrintRuntimeService, name, policyType, enhancers)
index cf518bd..5540047 100644 (file)
@@ -46,6 +46,8 @@ interface BluePrintRuntimeService<T> {
 \r
     fun get(key: String): JsonNode?\r
 \r
+    fun check(key: String): Boolean\r
+\r
     fun cleanRuntime()\r
 \r
     fun getAsString(key: String): String?\r
@@ -114,6 +116,7 @@ interface BluePrintRuntimeService<T> {
 open class DefaultBluePrintRuntimeService(private var id: String, private var bluePrintContext: BluePrintContext)\r
     : BluePrintRuntimeService<MutableMap<String, JsonNode>> {\r
 \r
+    @Transient\r
     private val log: EELFLogger = EELFManager.getInstance().getLogger(BluePrintRuntimeService::class.toString())\r
 \r
     private var store: MutableMap<String, JsonNode> = hashMapOf()\r
@@ -145,6 +148,10 @@ open class DefaultBluePrintRuntimeService(private var id: String, private var bl
         return store[key] ?: throw BluePrintProcessorException("failed to get execution property($key)")\r
     }\r
 \r
+    override fun check(key: String): Boolean {\r
+        return store.containsKey(key)\r
+    }\r
+\r
     override fun cleanRuntime() {\r
         store.clear()\r
     }\r
index f02524f..c1ab4fc 100644 (file)
 
 package org.onap.ccsdk.apps.controllerblueprints.core.utils
 
+import kotlinx.coroutines.async
+import kotlinx.coroutines.runBlocking
 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry
 import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream
 import org.apache.commons.io.IOUtils
+import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException
 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintProcessorException
 import java.io.*
 import java.nio.charset.Charset
@@ -28,6 +31,15 @@ class BluePrintArchiveUtils {
 
     companion object {
 
+        fun getFileContent(fileName: String): String = runBlocking {
+            async {
+                try {
+                    File(fileName).readText(Charsets.UTF_8)
+                } catch (e: Exception) {
+                    throw BluePrintException("couldn't find file($fileName)")
+                }
+            }.await()
+        }
 
         fun compress(source: String, destination: String, absolute: Boolean): Boolean {
             val rootDir = File(source)
index 0ed9017..e3c2a71 100644 (file)
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
 import reactor.core.publisher.Mono\r
 import reactor.core.publisher.toMono\r
 \r
+@Deprecated("Reactor will be replaced by coroutines by default")\r
 object JacksonReactorUtils {\r
     private val log: EELFLogger = EELFManager.getInstance().getLogger(this::class.toString())\r
 \r
index be23172..0187445 100644 (file)
@@ -25,10 +25,12 @@ import com.fasterxml.jackson.databind.JsonNode
 import com.fasterxml.jackson.databind.SerializationFeature\r
 import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper\r
 import kotlinx.coroutines.Dispatchers\r
+import kotlinx.coroutines.async\r
 import kotlinx.coroutines.runBlocking\r
 import kotlinx.coroutines.withContext\r
 import org.apache.commons.io.IOUtils\r
 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants\r
+import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException\r
 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintTypes\r
 import java.io.File\r
 import java.nio.charset.Charset\r
@@ -55,12 +57,14 @@ object JacksonUtils {
     }\r
 \r
     @JvmStatic\r
-    fun getContent(fileName: String): String {\r
-        return runBlocking {\r
-            withContext(Dispatchers.Default) {\r
+    fun getContent(fileName: String): String = runBlocking {\r
+        async {\r
+            try {\r
                 File(fileName).readText(Charsets.UTF_8)\r
+            } catch (e: Exception) {\r
+                throw BluePrintException("couldn't get file ($fileName) content : ${e.message}")\r
             }\r
-        }\r
+        }.await()\r
     }\r
 \r
     @JvmStatic\r
index 1449e63..0ed87f8 100644 (file)
@@ -242,7 +242,7 @@ open class BluePrintNodeTemplateValidatorImpl(private val bluePrintTypeValidator
     open fun checkValidArtifactType(artifactDefinitionName: String, artifactTypeName: String) {
 
         val artifactType = bluePrintContext.serviceTemplate.artifactTypes?.get(artifactTypeName)
-                ?: throw BluePrintException("failed to artifactType($artifactTypeName) for ArtifactDefinition($artifactDefinitionName)")
+                ?: throw BluePrintException("failed to get artifactType($artifactTypeName) for ArtifactDefinition($artifactDefinitionName)")
 
         checkValidArtifactTypeDerivedFrom(artifactTypeName, artifactType.derivedFrom)
     }
index f7ffc39..9348a23 100644 (file)
@@ -18,7 +18,7 @@
 package org.onap.ccsdk.apps.controllerblueprints.core.service\r
 \r
 import org.junit.Test\r
-import java.io.FileNotFoundException\r
+import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException\r
 import kotlin.test.assertNotNull\r
 \r
 /**\r
@@ -49,7 +49,7 @@ class BluePrintRepoFileServiceTest {
         assertNotNull(nodeType, "Failed to get ArtifactType from repo")\r
     }\r
 \r
-    @Test(expected = FileNotFoundException::class)\r
+    @Test(expected = BluePrintException::class)\r
     fun testModelNotFound() {\r
         val dataType = bluePrintRepoFileService.getDataType("dt-not-found")\r
         assertNotNull(dataType, "Failed to get DataType from repo")\r
index be76593..ad55c77 100644 (file)
@@ -19,11 +19,12 @@ package org.onap.ccsdk.apps.controllerblueprints.core.utils
 import com.att.eelf.configuration.EELFLogger\r
 import com.att.eelf.configuration.EELFManager\r
 import org.junit.Test\r
+import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException\r
 import org.onap.ccsdk.apps.controllerblueprints.core.data.ServiceTemplate\r
-import java.io.FileNotFoundException\r
 import kotlin.test.assertEquals\r
 import kotlin.test.assertNotNull\r
 \r
+@Deprecated("Reactor will be replacecd by coroutines by default.")\r
 class JacksonReactorUtilsTest {\r
     private val log: EELFLogger = EELFManager.getInstance().getLogger(this::class.toString())\r
     @Test\r
@@ -43,7 +44,7 @@ class JacksonReactorUtilsTest {
         assertNotNull(jsonContent, "Failed to get json Node")\r
     }\r
 \r
-    @Test(expected = FileNotFoundException::class)\r
+    @Test(expected = BluePrintException::class)\r
     fun testReadValuesFailure() {\r
         JacksonReactorUtils.jsonNodeFromFile("load/blueprints/not-found.json")\r
                 .block()\r