1 package org.openecomp.mso.bpmn.common.workflow.service;
\r
3 import java.util.HashMap;
\r
4 import java.util.Map;
\r
6 import javax.ws.rs.Consumes;
\r
7 import javax.ws.rs.HeaderParam;
\r
8 import javax.ws.rs.POST;
\r
9 import javax.ws.rs.Path;
\r
10 import javax.ws.rs.PathParam;
\r
11 import javax.ws.rs.Produces;
\r
12 import javax.ws.rs.core.MediaType;
\r
13 import javax.ws.rs.core.Response;
\r
15 import org.openecomp.mso.logger.MessageEnum;
\r
16 import org.openecomp.mso.logger.MsoLogger;
\r
19 * Generalized REST interface that injects a message event into a waiting BPMN process.
\r
22 * /WorkflowMessage/SDNCAResponse/6d10d075-100c-42d0-9d84-a52432681cae-1478486185286
\r
23 * /WorkflowMessage/SDNCAEvent/USOSTCDALTX0101UJZZ01
\r
27 public class WorkflowMessageResource extends AbstractCallbackService {
\r
28 private static final MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL);
\r
29 private static final String LOGMARKER = "[WORKFLOW-MESSAGE]";
\r
32 @Path("/WorkflowMessage/{messageType}/{correlator}")
\r
34 @Produces(MediaType.TEXT_PLAIN)
\r
35 public Response deliver(
\r
36 @HeaderParam("Content-Type") String contentType,
\r
37 @PathParam("messageType") String messageType,
\r
38 @PathParam("correlator") String correlator,
\r
41 String method = "receiveWorkflowMessage";
\r
42 MsoLogger.setServiceName("MSO." + method);
\r
43 MsoLogger.setLogContext(correlator, "N/A");
\r
45 LOGGER.debug(LOGMARKER + " Received workflow message"
\r
46 + " type='" + messageType + "'"
\r
47 + " correlator='" + correlator + "'"
\r
48 + (contentType == null ? "" : " contentType='" + contentType + "'")
\r
49 + " message=" + System.lineSeparator() + message);
\r
51 if (messageType == null || messageType.isEmpty()) {
\r
52 String msg = "Missing message type";
\r
53 LOGGER.debug(LOGMARKER + " " + msg);
\r
54 LOGGER.error(MessageEnum.BPMN_GENERAL_EXCEPTION, "BPMN", MsoLogger.getServiceName(),
\r
55 MsoLogger.ErrorCode.DataError, LOGMARKER + ":" + msg);
\r
56 return Response.status(400).entity(msg).build();
\r
59 if (correlator == null || correlator.isEmpty()) {
\r
60 String msg = "Missing correlator";
\r
61 LOGGER.debug(LOGMARKER + " " + msg);
\r
62 LOGGER.error(MessageEnum.BPMN_GENERAL_EXCEPTION, "BPMN", MsoLogger.getServiceName(),
\r
63 MsoLogger.ErrorCode.DataError, LOGMARKER + ":" + msg);
\r
64 return Response.status(400).entity(msg).build();
\r
67 String messageEventName = "WorkflowMessage";
\r
68 String messageVariable = messageType + "_MESSAGE";
\r
69 String correlationVariable = messageType + "_CORRELATOR";
\r
70 String correlationValue = correlator;
\r
71 String contentTypeVariable = messageType + "_CONTENT_TYPE";
\r
73 Map<String, Object> variables = new HashMap<String, Object>();
\r
75 if (contentType != null) {
\r
76 variables.put(contentTypeVariable, contentType);
\r
79 CallbackResult result = handleCallback(method, message, messageEventName,
\r
80 messageVariable, correlationVariable, correlationValue, LOGMARKER, variables);
\r
82 if (result instanceof CallbackError) {
\r
83 return Response.status(500).entity(((CallbackError)result).getErrorMessage()).build();
\r
85 return Response.status(204).build();
\r