Change Status class to be immutable.
Add convenience method to convert from a LCMCommandStatus to
a Status object.
Change-Id: I9e47750d15b5ee0f5649b2fabf6387aa12ff9c9d
Signed-off-by: Gary Wu <gary.i.wu@huawei.com>
 
 
 import org.apache.commons.lang3.StringUtils;
+import org.openecomp.appc.domainmodel.lcm.Status;
 import org.openecomp.appc.util.MessageFormatter;
 
 import java.util.Map;
                 ", responseMessage='" + responseMessage + '\'' +
                 '}';
     }
+
+    public Status toStatus(Params params) {
+        return new Status(responseCode, getFormattedMessage(params));
+    }
 }
 
 
         this.onRequestCompletion(commandRequest,commandResponse);
     }
 
-    public static void fillStatus(Status status, LCMCommandStatus lcmCommandStatus, Params params) {
-        status.setCode(lcmCommandStatus.getResponseCode());
-        status.setMessage(lcmCommandStatus.getFormattedMessage(params));
-    }
 }
 
                        isAAIUpdated= postVnfdata(vnfId, nextState,"onRequestExecutionStart",ctx);
                } catch (NoTransitionDefinedException e) {
                        logger.error("Error getting Next State for AAI Update:  " + e.getMessage(), e);
-                       Status status = request.getCommandExecutorInput().getRuntimeContext().getResponseContext().getStatus();
                        Params params = new Params().addParam("actionName",e.event).addParam("currentState",e.currentState);
-                       fillStatus(status, LCMCommandStatus.NO_TRANSITION_DEFINE_FAILURE, params);
+                       request.getCommandExecutorInput().getRuntimeContext().getResponseContext().setStatus(LCMCommandStatus.NO_TRANSITION_DEFINE_FAILURE.toStatus(params));
                        isAAIUpdated = false;
                } catch (UnstableVNFException e) {
                        logger.error(e.getMessage(), e);
-                       Status status = request.getCommandExecutorInput().getRuntimeContext().getResponseContext().getStatus();
                        Params params = new Params().addParam("vnfId",vnfId);
-                       fillStatus(status, LCMCommandStatus.UNSTABLE_VNF_FAILURE, params);
+                       request.getCommandExecutorInput().getRuntimeContext().getResponseContext().setStatus(LCMCommandStatus.UNSTABLE_VNF_FAILURE.toStatus(params));
                        isAAIUpdated = false;
                }catch (Exception e) {
                        logger.error("Error before Request Execution starts.", e);
-                       Status status = request.getCommandExecutorInput().getRuntimeContext().getResponseContext().getStatus();
                        String errorMsg = StringUtils.isEmpty(e.getMessage()) ? e.toString() : e.getMessage();
                        Params params = new Params().addParam("errorMsg",errorMsg);
-                       fillStatus(status, LCMCommandStatus.UNEXPECTED_FAILURE, params);
+                       request.getCommandExecutorInput().getRuntimeContext().getResponseContext().setStatus(LCMCommandStatus.UNEXPECTED_FAILURE.toStatus(params));
                        isAAIUpdated =  false;
                }
 
 
             super.execute();
         } catch (UnstableVNFException e) {
             logger.error(e.getMessage(), e);
-            Status status = request.getCommandExecutorInput().getRuntimeContext().getResponseContext().getStatus();
             Params params = new Params().addParam("vnfId",vnfId);
-            fillStatus(status, LCMCommandStatus.UNSTABLE_VNF_FAILURE, params);
+            request.getCommandExecutorInput().getRuntimeContext().getResponseContext().setStatus(LCMCommandStatus.UNSTABLE_VNF_FAILURE.toStatus(params));
         }catch (Exception e) {
             logger.error("Error during runing LCMReadonlyCommandTask.", e);
-            Status status = request.getCommandExecutorInput().getRuntimeContext().getResponseContext().getStatus();
             String errorMsg = StringUtils.isEmpty(e.getMessage()) ? e.toString() : e.getMessage();
             Params params = new Params().addParam("errorMsg",errorMsg);
-            fillStatus(status, LCMCommandStatus.UNEXPECTED_FAILURE, params);
+            request.getCommandExecutorInput().getRuntimeContext().getResponseContext().setStatus(LCMCommandStatus.UNEXPECTED_FAILURE.toStatus(params));
         }
     }
 }
 
                requestContext.setAction(action);
                runtimeContext.setRpcName(action.name().toLowerCase());
                commonHeader.setApiVer(API_VERSION);
-               Status status = new Status();
-               status.setCode(100);
-               responseContext.setStatus(status);
+               responseContext.setStatus(new Status(100, null));
                commonHeader.setRequestId(responseId);
                responseContext.setPayload(payload);
                commonHeader.setTimestamp(new Date());
                ResponseContext responseContext = createResponseContextWithSuObjects();
                wfResponse.setResponseContext(responseContext);
                responseContext.setPayload("");
-               wfResponse.getResponseContext().getStatus().setCode(100);
+               wfResponse.getResponseContext().setStatus(new Status(100, null));
                return wfResponse;
        }
 
                ResponseContext responseContext = new ResponseContext();
                CommonHeader commonHeader = new CommonHeader();
                Flags flags = new Flags();
-               Status status = new Status();
                responseContext.setCommonHeader(commonHeader);
-               responseContext.setStatus(status);
+               responseContext.setStatus(new Status(0, null));
                commonHeader.setFlags(flags);
                return responseContext;
        }
 
 
 public class Status {
 
-    private int code;
-    private String message;
+    private final int code;
+    private final String message;
 
-    public int getCode() {
-        return code;
+    public Status(int code, String message) {
+        this.code = code;
+        this.message = message;
     }
 
-    public void setCode(int code) {
-        this.code = code;
+    public int getCode() {
+        return code;
     }
 
     public String getMessage() {
         return message;
     }
 
-    public void setMessage(String value) {
-        this.message = value;
-    }
-
     @Override
     public String toString() {
         return "Status{" +
 
         runtimeContext.setRpcName(input.getRpcName());
 
         final ResponseContext responseContext = new ResponseContext();
-        responseContext.setStatus(new Status());
+        responseContext.setStatus(new Status(0, null));
         responseContext.setAdditionalContext(new HashMap<String, String>(4));
         responseContext.setCommonHeader(input.getRequestContext().getCommonHeader());
         runtimeContext.setResponseContext(responseContext);
-        runtimeContext.getResponseContext().setStatus(new Status());
+        runtimeContext.getResponseContext().setStatus(new Status(0, null));
 
         vnfId = runtimeContext.getRequestContext().getActionIdentifiers().getVnfId();
 
     }
 
     private void fillStatus(RuntimeContext runtimeContext, LCMCommandStatus lcmCommandStatus, Params params) {
-        runtimeContext.getResponseContext().getStatus().setCode(lcmCommandStatus.getResponseCode());
-        runtimeContext.getResponseContext().getStatus().setMessage(lcmCommandStatus.getFormattedMessage(params));
+        runtimeContext.getResponseContext().setStatus(lcmCommandStatus.toStatus(params));
     }
 
     /*
         RuntimeContext other = new RuntimeContext();
         other.setRequestContext(runtimeContext.getRequestContext());
         other.setResponseContext(new ResponseContext());
-        other.getResponseContext().setStatus(new Status());
+        other.getResponseContext().setStatus(new Status(0, null));
         other.getResponseContext().setCommonHeader(runtimeContext.getRequestContext().getCommonHeader());
         other.setVnfContext(runtimeContext.getVnfContext());
         other.setRpcName(runtimeContext.getRpcName());
     private static RequestHandlerOutput buildRequestHandlerOutput(LCMCommandStatus response, Params params) {
         RequestHandlerOutput output = new RequestHandlerOutput();
         ResponseContext responseContext = new ResponseContext();
-        org.openecomp.appc.domainmodel.lcm.Status status = new org.openecomp.appc.domainmodel.lcm.Status();
-        status.setCode(response.getResponseCode());
-        status.setMessage(response.getFormattedMessage(params));
-        responseContext.setStatus(status);
+        responseContext.setStatus(response.toStatus(params));
         output.setResponseContext(responseContext);
         return output;
     }
 
 
        private ResponseContext buildAsyncResponse() {
                ResponseContext asyncResponse = createResponseContextWithSubObjects();
-               asyncResponse.getStatus().setCode(LCMCommandStatus.SUCCESS.getResponseCode());
-               asyncResponse.getStatus().setMessage(LCMCommandStatus.SUCCESS.getResponseMessage());
+               asyncResponse.setStatus(LCMCommandStatus.SUCCESS.toStatus(null));
                asyncResponse.getCommonHeader().setOriginatorId("oid");
                asyncResponse.getCommonHeader().setApiVer("2.0.0");
                asyncResponse.getCommonHeader().setRequestId("reqid");
                ResponseContext responseContext = new ResponseContext();
                CommonHeader commonHeader = new CommonHeader();
                Flags flags = new Flags();
-               Status status = new Status();
                responseContext.setCommonHeader(commonHeader);
-               responseContext.setStatus(status);
+               responseContext.setStatus(new Status(0, null));
                commonHeader.setFlags(flags);
                return responseContext;
        }
 
 
 
                ResponseContext responseContext = new ResponseContext();
-               responseContext.setStatus(new Status());
+               responseContext.setStatus(new Status(0, null));
                responseContext.setAdditionalContext(new HashMap<String, String>(4));
                responseContext.setCommonHeader(input1.getRequestContext().getCommonHeader());
                runtimeContext.setResponseContext(responseContext);
                when(runtimeContext.getResponseContext()).thenReturn(responseContext);
-               responseContext.setStatus(new Status());
+               responseContext.setStatus(new Status(0, null));
                runtimeContext.setResponseContext(responseContext);
                PowerMockito.whenNew(RuntimeContext.class).withAnyArguments().thenReturn(runtimeContext);
 
                output.getVnfContext().setId(vnfId);
                output.getResponseContext().getCommonHeader().setApiVer("2.0.0");
                output.getResponseContext().getCommonHeader().setTimestamp(new Date());
-               output.getResponseContext().getStatus().setCode(LCMCommandStatus.SUCCESS.getResponseCode());
+               output.getResponseContext().setStatus(LCMCommandStatus.SUCCESS.toStatus(null));
                output.setTimeStart(new Date());
                output.getResponseContext().getCommonHeader().setOriginatorId(originatorId);
                output.getResponseContext().getCommonHeader().setRequestId(requestId);
                ResponseContext responseContext = new ResponseContext();
                CommonHeader commonHeader = new CommonHeader();
                Flags flags = new Flags();
-               Status status = new Status();
                responseContext.setCommonHeader(commonHeader);
-               responseContext.setStatus(status);
+               responseContext.setStatus(new Status(0, null));
                commonHeader.setFlags(flags);
                return responseContext;
        }
 
         ResponseContext responseContext = new ResponseContext();
         CommonHeader commonHeader = new CommonHeader();
         Flags flags = new Flags();
-        Status status = new Status();
         responseContext.setCommonHeader(commonHeader);
-        responseContext.setStatus(status);
+        responseContext.setStatus(new Status(0, null));
         commonHeader.setFlags(flags);
         return responseContext;
     }
 
 import org.openecomp.appc.configuration.ConfigurationFactory;
 import org.openecomp.appc.domainmodel.lcm.RequestContext;
 import org.openecomp.appc.domainmodel.lcm.ResponseContext;
+import org.openecomp.appc.domainmodel.lcm.Status;
 import org.openecomp.appc.util.ObjectMapper;
 import org.openecomp.appc.workflow.WorkFlowManager;
 import org.openecomp.appc.workflow.objects.WorkflowExistsOutput;
      * @param responceContext response context which will be store status code and status message
      */
     private void fillStatus(int code, String message, ResponseContext responceContext) {
-        responceContext.getStatus().setCode(code);
-        responceContext.getStatus().setMessage(message);
+        responceContext.setStatus(new Status(code, message));
     }
 
-
 }
 
             requestHandlerOutput = new RequestHandlerOutput();
             requestHandlerOutput.setResponseContext(responseContext);
             responseContext.setCommonHeader(request.getRequestContext().getCommonHeader());
-            final org.openecomp.appc.domainmodel.lcm.Status status = new org.openecomp.appc.domainmodel.lcm.Status();
-
-            responseContext.setStatus(status);
-
             String errorMessage = e.getMessage() != null ? e.getMessage() : e.toString();
             Params params = new Params().addParam("errorMsg", errorMessage);
-            status.setCode(LCMCommandStatus.UNEXPECTED_ERROR.getResponseCode());
-            status.setMessage(LCMCommandStatus.UNEXPECTED_ERROR.getFormattedMessage(params));
+            responseContext.setStatus(LCMCommandStatus.UNEXPECTED_ERROR.toStatus(params));
+
             LoggingUtils.logErrorMessage(
                     LoggingConstants.TargetNames.APPC_PROVIDER,
                     reason,