AbstractComponentFunction Payload API 93/96193/1
authorSingal, Kapil (ks220y) <ks220y@att.com>
Tue, 24 Sep 2019 19:10:41 +0000 (15:10 -0400)
committerSingal, Kapil (ks220y) <ks220y@att.com>
Tue, 24 Sep 2019 19:10:41 +0000 (15:10 -0400)
Adding new API's in AbstractComponentFunction to pull payload

Issue-ID: CCSDK-1752
Signed-off-by: Singal, Kapil (ks220y) <ks220y@att.com>
Change-Id: I6db5ea12d24765d3775c6c81d7cbbefcd1708ca1

ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/AbstractComponentFunction.kt
ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/AbstractComponentFunctionTest.kt
ms/blueprintsprocessor/modules/services/execution-service/src/test/resources/payload/requests/sample-execution-request.json

index 8759338..5163a93 100644 (file)
@@ -154,6 +154,26 @@ abstract class AbstractComponentFunction : BlueprintFunctionNode<ExecutionServic
         bluePrintRuntimeService.getBluePrintError().addError(error)
     }
 
+    /**
+     * Get Execution Input Payload data
+     */
+    fun requestPayload(): JsonNode? {
+        return executionServiceInput.payload
+    }
+
+    /**
+     * Get Execution Input payload action property with [expression]
+     * ex: requestPayloadActionProperty("data") will look for path "payload/<action-name>-request/data"
+     */
+    fun requestPayloadActionProperty(expression: String?): JsonNode? {
+        val requestExpression = if (expression.isNullOrBlank()) {
+            "$operationName-request"
+        } else {
+            "$operationName-request.$expression"
+        }
+        return executionServiceInput.payload.jsonPathParse(".$requestExpression")
+    }
+
     fun artifactContent(artifactName: String): String {
         return bluePrintRuntimeService.resolveNodeTemplateArtifact(nodeTemplateName, artifactName)
     }
index 07be8c8..16e4e61 100644 (file)
@@ -70,9 +70,6 @@ class AbstractComponentFunctionTest {
         every { blueprintContext.rootPath } returns normalizedPathName("target")
     }
 
-    /**
-     * Tests the abstract component functionality.
-     */
     @Test
     fun testAbstractComponent() {
         runBlocking {
@@ -95,9 +92,18 @@ class AbstractComponentFunctionTest {
         }
     }
 
-    /**
-     * Tests the abstract script component functionality.
-     */
+    @Test
+    fun testComponentFunctionPayload() {
+        val sampleComponent = SampleComponent()
+        sampleComponent.operationName = "sample-action"
+        sampleComponent.executionServiceInput = JacksonUtils.readValueFromClassPathFile(
+            "payload/requests/sample-execution-request.json", ExecutionServiceInput::class.java)!!
+        val payload = sampleComponent.requestPayload()
+        assertNotNull(payload, "failed to get payload")
+        val data = sampleComponent.requestPayloadActionProperty("data")?.first()
+        assertNotNull(data, "failed to get payload request action data")
+    }
+
     @Test
     fun testAbstractScriptComponent() {
         runBlocking {
@@ -190,5 +196,6 @@ class AbstractComponentFunctionTest {
         val componentScriptExecutor = BluePrintTypes.nodeTypeComponentScriptExecutor()
         assertNotNull(componentScriptExecutor.interfaces, "failed to get interface operations")
     }
+
 }