Provide correct output to #process request 51/79051/2
authorAlexis de Talhouët <adetalhouet89@gmail.com>
Fri, 22 Feb 2019 22:24:22 +0000 (17:24 -0500)
committerAlexis de Talhouët <adetalhouet89@gmail.com>
Fri, 22 Feb 2019 22:24:55 +0000 (22:24 +0000)
Change-Id: I7e5ceb6fc46b8b8e6289db9b4efe2f27e3f9ce91
Issue-ID: CCSDK-947
Signed-off-by: Alexis de Talhouët <adetalhouet89@gmail.com>
ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/selfservice/api/ExecutionServiceHandler.kt
ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/selfservice/api/utils/BluePrintMappings.kt
ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/services/execution/AbstractComponentFunction.kt
ms/controllerblueprints/modules/blueprint-core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/JacksonUtils.kt

index 262c33f..4447dd4 100644 (file)
@@ -16,6 +16,7 @@
 
 package org.onap.ccsdk.apps.blueprintsprocessor.selfservice.api
 
+import com.fasterxml.jackson.databind.node.JsonNodeFactory
 import com.google.protobuf.Struct
 import io.grpc.stub.StreamObserver
 import kotlinx.coroutines.Dispatchers
@@ -66,19 +67,19 @@ class ExecutionServiceHandler(private val bluePrintCoreConfiguration: BluePrintC
             executionServiceInput.actionIdentifiers.mode == ACTION_MODE_ASYNC -> {
                 GlobalScope.launch(Dispatchers.Default) {
                     val executionServiceOutput = doProcess(executionServiceInput)
-                    responseObserver.onNext(executionServiceOutput.toProto(inputPayload))
+                    responseObserver.onNext(executionServiceOutput.toProto())
                     responseObserver.onCompleted()
                 }
-                responseObserver.onNext(response(executionServiceInput).toProto(inputPayload))
+                responseObserver.onNext(response(executionServiceInput).toProto())
             }
             executionServiceInput.actionIdentifiers.mode == ACTION_MODE_SYNC -> {
                 val executionServiceOutput = doProcess(executionServiceInput)
-                responseObserver.onNext(executionServiceOutput.toProto(inputPayload))
+                responseObserver.onNext(executionServiceOutput.toProto())
                 responseObserver.onCompleted()
             }
             else -> responseObserver.onNext(response(executionServiceInput,
                 "Failed to process request, 'actionIdentifiers.mode' not specified. Valid value are: 'sync' or 'async'.",
-                true).toProto(inputPayload));
+                true).toProto());
         }
     }
 
@@ -108,7 +109,7 @@ class ExecutionServiceHandler(private val bluePrintCoreConfiguration: BluePrintC
         val executionServiceOutput = ExecutionServiceOutput()
         executionServiceOutput.commonHeader = executionServiceInput.commonHeader
         executionServiceOutput.actionIdentifiers = executionServiceInput.actionIdentifiers
-        executionServiceOutput.payload = executionServiceInput.payload
+        executionServiceOutput.payload = JsonNodeFactory.instance.objectNode()
 
         val status = Status()
         status.errorMessage = errorMessage
index c8ce1c3..b261c41 100644 (file)
@@ -20,10 +20,12 @@ import com.fasterxml.jackson.databind.node.ObjectNode
 import com.google.common.base.Strings
 import com.google.protobuf.Struct
 import com.google.protobuf.Value
+import com.google.protobuf.util.JsonFormat
 import org.onap.ccsdk.apps.controllerblueprints.common.api.ActionIdentifiers
 import org.onap.ccsdk.apps.controllerblueprints.common.api.CommonHeader
 import org.onap.ccsdk.apps.controllerblueprints.common.api.Flag
 import org.onap.ccsdk.apps.controllerblueprints.common.api.Status
+import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils
 import org.onap.ccsdk.apps.controllerblueprints.processing.api.ExecutionServiceInput
 import org.onap.ccsdk.apps.controllerblueprints.processing.api.ExecutionServiceOutput
 import java.text.SimpleDateFormat
@@ -158,11 +160,13 @@ fun ExecutionServiceInput.toJava(): org.onap.ccsdk.apps.blueprintsprocessor.core
 
 // EXECUTION OUPUT
 
-fun org.onap.ccsdk.apps.blueprintsprocessor.core.api.data.ExecutionServiceOutput.toProto(payload: Struct): ExecutionServiceOutput {
+fun org.onap.ccsdk.apps.blueprintsprocessor.core.api.data.ExecutionServiceOutput.toProto(): ExecutionServiceOutput {
     val executionServiceOuput = ExecutionServiceOutput.newBuilder()
     executionServiceOuput.actionIdentifiers = this.actionIdentifiers.toProto()
     executionServiceOuput.commonHeader = this.commonHeader.toProto()
     executionServiceOuput.status = this.status.toProto()
-    executionServiceOuput.payload = payload
+    val struct = Struct.newBuilder()
+    JsonFormat.parser().merge(JacksonUtils.getJson(this.payload), struct)
+    executionServiceOuput.payload = struct.build()
     return executionServiceOuput.build()
 }
\ No newline at end of file
index 930dc07..7086ebb 100644 (file)
@@ -29,6 +29,7 @@ import org.onap.ccsdk.apps.controllerblueprints.core.asJsonNode
 import org.onap.ccsdk.apps.controllerblueprints.core.getAsString\r
 import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BlueprintFunctionNode\r
 import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintRuntimeService\r
+import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils\r
 import org.slf4j.LoggerFactory\r
 \r
 /**\r
@@ -100,7 +101,7 @@ abstract class AbstractComponentFunction : BlueprintFunctionNode<ExecutionServic
         log.info("Preparing Response...")\r
         executionServiceOutput.commonHeader = executionServiceInput.commonHeader\r
         executionServiceOutput.actionIdentifiers = executionServiceInput.actionIdentifiers\r
-        executionServiceOutput.payload = executionServiceInput.payload\r
+\r
 \r
         // Resolve the Output Expression\r
         val stepOutputs = bluePrintRuntimeService\r
@@ -108,6 +109,8 @@ abstract class AbstractComponentFunction : BlueprintFunctionNode<ExecutionServic
 \r
         bluePrintRuntimeService.put("$stepName-step-outputs", stepOutputs.asJsonNode())\r
 \r
+        executionServiceOutput.payload = JacksonUtils.objectNodeFromObject(stepOutputs)\r
+\r
         // Populate Status\r
         val status = Status()\r
         status.eventType = "EVENT-COMPONENT-EXECUTED"\r
index 9bf9d13..76f3f32 100644 (file)
@@ -98,6 +98,10 @@ class JacksonUtils {
             return readValue(content, valueType)
         }
 
+        fun objectNodeFromObject(from: kotlin.Any): ObjectNode {
+            return jacksonObjectMapper().convertValue(from, ObjectNode::class.java)
+        }
+
         fun jsonNodeFromObject(from: kotlin.Any): JsonNode {
             return jacksonObjectMapper().convertValue(from, JsonNode::class.java)
         }