aboutsummaryrefslogtreecommitdiffstats
path: root/ms/controllerblueprints/modules/core
diff options
context:
space:
mode:
authorMuthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>2018-08-27 17:29:51 +0000
committerMuthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>2018-08-27 17:29:51 +0000
commit208cb6ae94922c0198648aea817085793ce8bc47 (patch)
tree9dd0a599ec52c4ee3baac207980729383a2cb1d7 /ms/controllerblueprints/modules/core
parent522a86b6dc2d08b16ba6aba682d5d1fd8558ad25 (diff)
Controller Blueprints Microservice
Optimise model type repository search for DB and file in blueprint repo service. Change-Id: If5458e218b723d3fff451789a73a667dd75bc91c Issue-ID: CCSDK-487 Signed-off-by: Muthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>
Diffstat (limited to 'ms/controllerblueprints/modules/core')
-rw-r--r--ms/controllerblueprints/modules/core/pom.xml4
-rw-r--r--ms/controllerblueprints/modules/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintEnhancerService.kt6
-rw-r--r--ms/controllerblueprints/modules/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRepoService.kt71
-rw-r--r--ms/controllerblueprints/modules/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRepoFileServiceTest.kt8
4 files changed, 61 insertions, 28 deletions
diff --git a/ms/controllerblueprints/modules/core/pom.xml b/ms/controllerblueprints/modules/core/pom.xml
index 51b3af35..ba38de63 100644
--- a/ms/controllerblueprints/modules/core/pom.xml
+++ b/ms/controllerblueprints/modules/core/pom.xml
@@ -44,6 +44,10 @@
<artifactId>jackson-module-jsonSchema</artifactId>
</dependency>
<dependency>
+ <groupId>io.projectreactor</groupId>
+ <artifactId>reactor-core</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</dependency>
diff --git a/ms/controllerblueprints/modules/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintEnhancerService.kt b/ms/controllerblueprints/modules/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintEnhancerService.kt
index 64fc57fc..8bc0e6e0 100644
--- a/ms/controllerblueprints/modules/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintEnhancerService.kt
+++ b/ms/controllerblueprints/modules/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintEnhancerService.kt
@@ -217,21 +217,21 @@ open class BluePrintEnhancerDefaultService(val bluePrintRepoService: BluePrintRe
}
open fun populateNodeType(nodeTypeName: String): NodeType {
- val nodeType = bluePrintRepoService.getNodeType(nodeTypeName)
+ val nodeType = bluePrintRepoService.getNodeType(nodeTypeName)?.block()
?: throw BluePrintException(format("Couldn't get NodeType({}) from repo.", nodeTypeName))
serviceTemplate.nodeTypes?.put(nodeTypeName, nodeType)
return nodeType
}
open fun populateArtifactType(artifactTypeName: String): ArtifactType {
- val artifactType = bluePrintRepoService.getArtifactType(artifactTypeName)
+ val artifactType = bluePrintRepoService.getArtifactType(artifactTypeName)?.block()
?: throw BluePrintException(format("Couldn't get ArtifactType({}) from repo.", artifactTypeName))
serviceTemplate.artifactTypes?.put(artifactTypeName, artifactType)
return artifactType
}
open fun populateDataTypes(dataTypeName: String): DataType {
- val dataType = bluePrintRepoService.getDataType(dataTypeName)
+ val dataType = bluePrintRepoService.getDataType(dataTypeName)?.block()
?: throw BluePrintException(format("Couldn't get DataType({}) from repo.", dataTypeName))
serviceTemplate.dataTypes?.put(dataTypeName, dataType)
return dataType
diff --git a/ms/controllerblueprints/modules/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRepoService.kt b/ms/controllerblueprints/modules/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRepoService.kt
index a529a85f..8c444618 100644
--- a/ms/controllerblueprints/modules/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRepoService.kt
+++ b/ms/controllerblueprints/modules/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRepoService.kt
@@ -17,11 +17,16 @@
package org.onap.ccsdk.apps.controllerblueprints.core.service
+import com.google.common.base.Preconditions
import org.apache.commons.io.FileUtils
+import org.apache.commons.lang3.StringUtils
import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants
import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException
import org.onap.ccsdk.apps.controllerblueprints.core.data.*
import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+import reactor.core.publisher.Mono
import java.io.File
import java.io.Serializable
import java.nio.charset.Charset
@@ -35,25 +40,27 @@ import java.nio.charset.Charset
interface BluePrintRepoService : Serializable {
@Throws(BluePrintException::class)
- fun getNodeType(nodeTypeName: String): NodeType?
+ fun getNodeType(nodeTypeName: String): Mono<NodeType>?
@Throws(BluePrintException::class)
- fun getDataType(dataTypeName: String): DataType?
+ fun getDataType(dataTypeName: String): Mono<DataType>?
@Throws(BluePrintException::class)
- fun getArtifactType(artifactTypeName: String): ArtifactType?
+ fun getArtifactType(artifactTypeName: String): Mono<ArtifactType>?
@Throws(BluePrintException::class)
- fun getRelationshipType(relationshipTypeName: String): RelationshipType?
+ fun getRelationshipType(relationshipTypeName: String): Mono<RelationshipType>?
@Throws(BluePrintException::class)
- fun getCapabilityDefinition(capabilityDefinitionName: String): CapabilityDefinition?
+ fun getCapabilityDefinition(capabilityDefinitionName: String): Mono<CapabilityDefinition>?
}
class BluePrintRepoFileService(val basePath: String) : BluePrintRepoService {
+ private val log: Logger = LoggerFactory.getLogger(BluePrintRepoFileService::class.java)
+
val dataTypePath = basePath.plus(BluePrintConstants.PATH_DIVIDER).plus(BluePrintConstants.MODEL_DEFINITION_TYPE_DATA_TYPE)
val nodeTypePath = basePath.plus(BluePrintConstants.PATH_DIVIDER).plus(BluePrintConstants.MODEL_DEFINITION_TYPE_NODE_TYPE)
val artifactTypePath = basePath.plus(BluePrintConstants.PATH_DIVIDER).plus(BluePrintConstants.MODEL_DEFINITION_TYPE_ARTIFACT_TYPE)
@@ -61,33 +68,47 @@ class BluePrintRepoFileService(val basePath: String) : BluePrintRepoService {
val relationshipTypePath = basePath.plus(BluePrintConstants.PATH_DIVIDER).plus(BluePrintConstants.MODEL_DEFINITION_TYPE_RELATIONSHIP_TYPE)
val extension = ".json"
- override fun getDataType(dataTypeName: String): DataType? {
- val content = FileUtils.readFileToString(File(dataTypePath.plus(BluePrintConstants.PATH_DIVIDER)
- .plus(dataTypeName).plus(extension)), Charset.defaultCharset())
- return JacksonUtils.readValue(content)
+ override fun getDataType(dataTypeName: String): Mono<DataType>? {
+ val fileName = dataTypePath.plus(BluePrintConstants.PATH_DIVIDER)
+ .plus(dataTypeName).plus(extension)
+ return getModelType(fileName, DataType::class.java)
+ }
+
+ override fun getNodeType(nodeTypeName: String): Mono<NodeType>? {
+ val fileName = nodeTypePath.plus(BluePrintConstants.PATH_DIVIDER).plus(nodeTypeName).plus(extension)
+ return getModelType(fileName, NodeType::class.java)
}
- override fun getNodeType(nodeTypeName: String): NodeType? {
- val content = FileUtils.readFileToString(File(nodeTypePath.plus(BluePrintConstants.PATH_DIVIDER)
- .plus(nodeTypeName).plus(extension)), Charset.defaultCharset())
- return JacksonUtils.readValue(content)
+ override fun getArtifactType(artifactTypeName: String): Mono<ArtifactType>? {
+ val fileName = artifactTypePath.plus(BluePrintConstants.PATH_DIVIDER)
+ .plus(artifactTypeName).plus(extension)
+ return getModelType(fileName, ArtifactType::class.java)
}
- override fun getArtifactType(artifactTypeName: String): ArtifactType? {
- val content = FileUtils.readFileToString(File(artifactTypePath.plus(BluePrintConstants.PATH_DIVIDER)
- .plus(artifactTypeName).plus(extension)), Charset.defaultCharset())
- return JacksonUtils.readValue(content)
+ override fun getRelationshipType(relationshipTypeName: String): Mono<RelationshipType>? {
+ val fileName = relationshipTypePath.plus(BluePrintConstants.PATH_DIVIDER)
+ .plus(relationshipTypeName).plus(extension)
+ return getModelType(fileName, RelationshipType::class.java)
}
- override fun getRelationshipType(relationshipTypeName: String): RelationshipType? {
- val content = FileUtils.readFileToString(File(relationshipTypePath.plus(BluePrintConstants.PATH_DIVIDER)
- .plus(relationshipTypeName).plus(extension)), Charset.defaultCharset())
- return JacksonUtils.readValue(content)
+ override fun getCapabilityDefinition(capabilityDefinitionName: String): Mono<CapabilityDefinition>? {
+ val fileName = capabilityTypePath.plus(BluePrintConstants.PATH_DIVIDER)
+ .plus(capabilityDefinitionName).plus(extension)
+ return getModelType(fileName, CapabilityDefinition::class.java)
+ }
+
+ private fun <T> getModelType(fileName: String, valueType: Class<T>): Mono<T> {
+ return getFileContent(fileName).map { content ->
+ Preconditions.checkArgument(StringUtils.isNotBlank(content),
+ String.format("Failed to get model content for file (%s)", fileName))
+
+ JacksonUtils.readValue(content, valueType)
+ ?: throw BluePrintException(String.format("Failed to get model file from content for file (%s)", fileName))
+
+ }
}
- override fun getCapabilityDefinition(capabilityDefinitionName: String): CapabilityDefinition? {
- val content = FileUtils.readFileToString(File(capabilityTypePath.plus(BluePrintConstants.PATH_DIVIDER)
- .plus(capabilityDefinitionName).plus(extension)), Charset.defaultCharset())
- return JacksonUtils.readValue(content)
+ private fun getFileContent(fileName: String): Mono<String> {
+ return Mono.just(FileUtils.readFileToString(File(fileName), Charset.defaultCharset()))
}
} \ No newline at end of file
diff --git a/ms/controllerblueprints/modules/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRepoFileServiceTest.kt b/ms/controllerblueprints/modules/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRepoFileServiceTest.kt
index 574eae6d..4731935e 100644
--- a/ms/controllerblueprints/modules/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRepoFileServiceTest.kt
+++ b/ms/controllerblueprints/modules/core/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintRepoFileServiceTest.kt
@@ -18,6 +18,7 @@
package org.onap.ccsdk.apps.controllerblueprints.core.service
import org.junit.Test
+import java.io.FileNotFoundException
import kotlin.test.assertNotNull
/**
@@ -49,4 +50,11 @@ class BluePrintRepoFileServiceTest {
val nodeType = bluePrintEnhancerRepoFileService.getArtifactType("artifact-template-velocity")
assertNotNull(nodeType, "Failed to get ArtifactType from repo")
}
+
+ @Test(expected = FileNotFoundException::class)
+ fun testModelNotFound() {
+ val bluePrintEnhancerRepoFileService = BluePrintRepoFileService(basePath)
+ val dataType = bluePrintEnhancerRepoFileService.getDataType("dt-not-found")
+ assertNotNull(dataType, "Failed to get DataType from repo")
+ }
} \ No newline at end of file