Refactor WorkflowAsyncResource 69/5269/1
authorGary Wu <gary.i.wu@huawei.com>
Tue, 9 May 2017 19:41:43 +0000 (12:41 -0700)
committerGary Wu <gary.i.wu@huawei.com>
Tue, 9 May 2017 19:47:05 +0000 (12:47 -0700)
Change-Id: I794b606687343851f71d63ac055ed1898320216a
Signed-off-by: Gary Wu <gary.i.wu@huawei.com>
bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowAsyncCommonResource.java
bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowAsyncResource.java
bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/service/WorkflowAsyncInfrastructureResource.java

index c0ea0cf..f3ad810 100644 (file)
@@ -26,11 +26,7 @@ import org.camunda.bpm.engine.ProcessEngines;
 \r
 public class WorkflowAsyncCommonResource extends WorkflowAsyncResource {\r
 \r
-       protected ProcessEngineServices getProcessEngineServices() {\r
-               if (pes4junit == null) {\r
-                       return ProcessEngines.getProcessEngine("common");\r
-               } else {\r
-                       return pes4junit;\r
-               }\r
-       }\r
+    protected ProcessEngineServices getProcessEngineServices() {\r
+        return pes4junit.orElse(ProcessEngines.getProcessEngine("common"));\r
+    }\r
 }\r
index b13ac46..1bd1dfd 100644 (file)
@@ -21,6 +21,8 @@ package org.openecomp.mso.bpmn.common.workflow.service;
 \r
 import java.util.HashMap;\r
 import java.util.Map;\r
+import java.util.Objects;\r
+import java.util.Optional;\r
 import java.util.UUID;\r
 \r
 import javax.ws.rs.Consumes;\r
@@ -31,7 +33,6 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.Response;\r
 \r
 import org.camunda.bpm.engine.ProcessEngineServices;\r
-import org.camunda.bpm.engine.ProcessEngines;\r
 import org.camunda.bpm.engine.RuntimeService;\r
 import org.camunda.bpm.engine.runtime.ProcessInstance;\r
 import org.camunda.bpm.engine.variable.impl.VariableMapImpl;\r
@@ -54,13 +55,13 @@ import org.slf4j.MDC;
 @Path("/async")\r
 public abstract class WorkflowAsyncResource {
 \r
-       private WorkflowContextHolder contextHolder = WorkflowContextHolder.getInstance();\r
-       protected ProcessEngineServices pes4junit = null;\r
+       private static final WorkflowContextHolder contextHolder = WorkflowContextHolder.getInstance();\r
+       protected Optional<ProcessEngineServices> pes4junit = Optional.empty();\r
 \r
-       private MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL);\r
+       private final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL);\r
 \r
        private static final String logMarker = "[WRKFLOW-RESOURCE]";\r
-       private static final int DEFAULT_WAIT_TIME = 30000;     //default wait time\r
+       private static final long DEFAULT_WAIT_TIME = 30000;    //default wait time\r
        \r
        /**\r
         * Asynchronous JAX-RS method that starts a process instance.\r
@@ -75,7 +76,6 @@ public abstract class WorkflowAsyncResource {
        public void startProcessInstanceByKey(final @Suspend(180000) AsynchronousResponse asyncResponse,\r
                        @PathParam("processKey") String processKey, VariableMapImpl variableMap) {\r
        \r
-               WorkflowResponse response = new WorkflowResponse();\r
                long startTime = System.currentTimeMillis();\r
                Map<String, Object> inputVariables = null;\r
                WorkflowContext workflowContext = null;\r
@@ -107,6 +107,7 @@ public abstract class WorkflowAsyncResource {
                        }\r
 \r
                        msoLogger.debug(logMarker + "Exception in startProcessInstance by key");\r
+               WorkflowResponse response = new WorkflowResponse();\r
                        response.setMessage("Fail" );\r
                        response.setResponse("Error occurred while executing the process: " + e);\r
                        response.setMessageCode(500);\r
@@ -205,29 +206,28 @@ public abstract class WorkflowAsyncResource {
                return contextHolder.processCallback(processKey, processInstanceId, requestId, callbackResponse);\r
        }\r
        \r
+    private static String getOrCreate(Map<String, Object> inputVariables, String key) {\r
+        String value = Objects.toString(inputVariables.get(key), null);\r
+        if (value == null) {\r
+            value = UUID.randomUUID().toString();\r
+            inputVariables.put(key, value);\r
+        }\r
+        return value;\r
+    }\r
+       \r
        // Note: the business key is used to identify the process in unit tests\r
-       private String getBusinessKey(Map<String, Object> inputVariables) {\r
-               Object businessKey = inputVariables.get("mso-business-key");\r
-               if (businessKey == null ) {\r
-                       businessKey = UUID.randomUUID().toString();\r
-                       inputVariables.put("mso-business-key",  businessKey);\r
-               }\r
-               return businessKey.toString();\r
+       private static String getBusinessKey(Map<String, Object> inputVariables) {\r
+        return getOrCreate(inputVariables, "mso-business-key");\r
        }\r
 \r
-       private String getRequestId(Map<String, Object> inputVariables) {\r
-               Object requestId = inputVariables.get("mso-request-id");\r
-               if (requestId == null ) {\r
-                       requestId = UUID.randomUUID().toString();\r
-                       inputVariables.put("mso-request-id",  requestId);\r
-               } \r
-               return requestId.toString();\r
+       private static String getRequestId(Map<String, Object> inputVariables) {\r
+        return getOrCreate(inputVariables, "mso-request-id");\r
        }\r
 \r
        private long getWaitTime(Map<String, Object> inputVariables)\r
        {\r
-               String timeout = inputVariables.get("mso-service-request-timeout") == null\r
-                               ? null : inputVariables.get("mso-service-request-timeout").toString();          \r
+           \r
+               String timeout = Objects.toString(inputVariables.get("mso-service-request-timeout"), null);\r
 \r
                if (timeout != null) {\r
                        try {\r
@@ -252,7 +252,7 @@ public abstract class WorkflowAsyncResource {
                \r
        }\r
 \r
-       private void setLogContext(String processKey,\r
+       private static void setLogContext(String processKey,\r
                        Map<String, Object> inputVariables) {\r
                MsoLogger.setServiceName("MSO." + processKey);\r
                if (inputVariables != null) {\r
@@ -260,26 +260,24 @@ public abstract class WorkflowAsyncResource {
                }\r
        }\r
 \r
-       private String getKeyValueFromInputVariables(Map<String,Object> inputVariables, String key) {\r
+       private static String getKeyValueFromInputVariables(Map<String,Object> inputVariables, String key) {\r
                if (inputVariables == null) return "";\r
-               Object requestId = inputVariables.get(key);\r
-               if (requestId != null) return requestId.toString();\r
-               return "N/A";\r
+               return Objects.toString(inputVariables.get(key), "N/A");\r
        }\r
 \r
        private boolean isProcessEnded(String processInstanceId) {\r
                ProcessEngineServices pes = getProcessEngineServices();\r
-               return pes.getRuntimeService().createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult() == null ? true : false ;                \r
+               return pes.getRuntimeService().createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult() == null;\r
        }\r
        \r
        \r
        protected abstract ProcessEngineServices getProcessEngineServices();
        \r
        public void setProcessEngineServices4junit(ProcessEngineServices pes) {\r
-               pes4junit = pes;\r
+               pes4junit = Optional.ofNullable(pes);\r
        }\r
 \r
-       private Map<String, Object> getInputVariables(VariableMapImpl variableMap) {\r
+       private static Map<String, Object> getInputVariables(VariableMapImpl variableMap) {\r
                Map<String, Object> inputVariables = new HashMap<String,Object>();\r
                @SuppressWarnings("unchecked")\r
                Map<String, Object> vMap = (Map<String, Object>) variableMap.get("variables");\r
index 09454f0..0cc81bf 100644 (file)
@@ -40,11 +40,7 @@ import org.openecomp.mso.bpmn.common.workflow.service.WorkflowAsyncResource;
 @Path("/async")\r
 public class WorkflowAsyncInfrastructureResource extends WorkflowAsyncResource {\r
        \r
-       protected ProcessEngineServices getProcessEngineServices() {\r
-               if (pes4junit == null) {\r
-                       return ProcessEngines.getProcessEngine("infrastructure");\r
-               } else {\r
-                       return pes4junit;\r
-               }\r
-       }\r
+    protected ProcessEngineServices getProcessEngineServices() {\r
+        return pes4junit.orElse(ProcessEngines.getProcessEngine("infrastructure"));\r
+    }\r
 }\r