refactor AnsibleMessageParser for nesting try 53/31153/3
authorTaka <tc012c@att.com>
Sat, 10 Feb 2018 20:48:24 +0000 (15:48 -0500)
committerPatrick Brady <pb071s@att.com>
Wed, 14 Feb 2018 17:01:38 +0000 (17:01 +0000)
Change-Id: Idd86134a034d5f49baff34fd0d056820f45e1121
Issue-ID: APPC-596
Signed-off-by: Taka <tc012c@att.com>
appc-adapters/appc-ansible-adapter/appc-ansible-adapter-bundle/src/main/java/org/onap/appc/adapter/ansible/model/AnsibleMessageParser.java

index c119668..0e19384 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP : APPC
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Copyright (C) 2017 Amdocs
  * =============================================================================
@@ -178,76 +178,77 @@ public class AnsibleMessageParser {
     public AnsibleResult parseGetResponse(String input) throws APPCException {
 
         AnsibleResult ansibleResult = new AnsibleResult();
-        int finalCode = AnsibleResultCodes.FINAL_SUCCESS.getValue();
 
         try {
             JSONObject postResponse = new JSONObject(input);
+            ansibleResult = parseGetResponseNested(ansibleResult, postResponse);
+        } catch (JSONException e) {
+            ansibleResult = new AnsibleResult(AnsibleResultCodes.INVALID_PAYLOAD.getValue(),
+                    "Error parsing response = " + input + ". Error = " + e.getMessage(), "");
+        }
+        return ansibleResult;
+    }
 
-            int codeStatus = postResponse.getInt(STATUS_CODE_KEY);
-            String messageStatus = postResponse.getString(STATUS_MESSAGE_KEY);
+    private AnsibleResult parseGetResponseNested(AnsibleResult ansibleResult, JSONObject postRsp) throws APPCException  {
 
-            boolean valCode =
-                    AnsibleResultCodes.CODE.checkValidCode(AnsibleResultCodes.FINALRESPONSE.getValue(), codeStatus);
+        int codeStatus = postRsp.getInt(STATUS_CODE_KEY);
+        String messageStatus = postRsp.getString(STATUS_MESSAGE_KEY);
+        int finalCode = AnsibleResultCodes.FINAL_SUCCESS.getValue();
 
-            if (!valCode) {
-                throw new APPCException("Invalid FinalResponse code  = " + codeStatus + " received. MUST be one of "
-                        + AnsibleResultCodes.CODE.getValidCodes(AnsibleResultCodes.FINALRESPONSE.getValue()));
-            }
+        boolean valCode =
+                AnsibleResultCodes.CODE.checkValidCode(AnsibleResultCodes.FINALRESPONSE.getValue(), codeStatus);
 
-            ansibleResult.setStatusCode(codeStatus);
-            ansibleResult.setStatusMessage(messageStatus);
-            LOGGER.info("Received response with code = {}, Message = {}", codeStatus, messageStatus);
-
-            if (!postResponse.isNull("Results")) {
-
-                // Results are available. process them
-                // Results is a dictionary of the form
-                // {host :{status:s, group:g, message:m, hostname:h}, ...}
-                LOGGER.info("Processing results in response");
-                JSONObject results = postResponse.getJSONObject("Results");
-                LOGGER.info("Get JSON dictionary from Results ..");
-                Iterator<String> hosts = results.keys();
-                LOGGER.info("Iterating through hosts");
-
-                while (hosts.hasNext()) {
-                    String host = hosts.next();
-                    LOGGER.info("Processing host = {}", host);
-
-                    try {
-                        JSONObject hostResponse = results.getJSONObject(host);
-                        int subCode = hostResponse.getInt(STATUS_CODE_KEY);
-                        String message = hostResponse.getString(STATUS_MESSAGE_KEY);
-
-                        LOGGER.info("Code = {}, Message = {}", subCode, message);
-
-                        if (subCode != 200 || !message.equals("SUCCESS")) {
-                            finalCode = AnsibleResultCodes.REQ_FAILURE.getValue();
-                        }
-                    } catch (JSONException e) {
-                        ansibleResult.setStatusCode(AnsibleResultCodes.INVALID_RESPONSE.getValue());
-                        ansibleResult.setStatusMessage(String.format(
-                                "Error processing response message = %s from host %s", results.getString(host), host));
-                        break;
-                    }
-                }
+        if (!valCode) {
+            throw new APPCException("Invalid FinalResponse code  = " + codeStatus + " received. MUST be one of "
+                    + AnsibleResultCodes.CODE.getValidCodes(AnsibleResultCodes.FINALRESPONSE.getValue()));
+        }
 
-                ansibleResult.setStatusCode(finalCode);
+        ansibleResult.setStatusCode(codeStatus);
+        ansibleResult.setStatusMessage(messageStatus);
+        LOGGER.info("Received response with code = {}, Message = {}", codeStatus, messageStatus);
 
-                // We return entire Results object as message
-                ansibleResult.setResults(results.toString());
+        if (!postRsp.isNull("Results")) {
 
-            } else {
-                ansibleResult.setStatusCode(AnsibleResultCodes.INVALID_RESPONSE.getValue());
-                ansibleResult.setStatusMessage("Results not found in GET for response");
-            }
+            // Results are available. process them
+            // Results is a dictionary of the form
+            // {host :{status:s, group:g, message:m, hostname:h}, ...}
+            LOGGER.info("Processing results in response");
+            JSONObject results = postRsp.getJSONObject("Results");
+            LOGGER.info("Get JSON dictionary from Results ..");
+            Iterator<String> hosts = results.keys();
+            LOGGER.info("Iterating through hosts");
 
+            while (hosts.hasNext()) {
+                String host = hosts.next();
+                LOGGER.info("Processing host = {}", host);
 
-        } catch (JSONException e) {
-            ansibleResult = new AnsibleResult(AnsibleResultCodes.INVALID_PAYLOAD.getValue(),
-                    "Error parsing response = " + input + ". Error = " + e.getMessage(), "");
-        }
+                try {
+                    JSONObject hostResponse = results.getJSONObject(host);
+                    int subCode = hostResponse.getInt(STATUS_CODE_KEY);
+                    String message = hostResponse.getString(STATUS_MESSAGE_KEY);
+
+                    LOGGER.info("Code = {}, Message = {}", subCode, message);
 
+                    if (subCode != 200 || !message.equals("SUCCESS")) {
+                        finalCode = AnsibleResultCodes.REQ_FAILURE.getValue();
+                    }
+                } catch (JSONException e) {
+                    ansibleResult.setStatusCode(AnsibleResultCodes.INVALID_RESPONSE.getValue());
+                    ansibleResult.setStatusMessage(String.format(
+                            "Error processing response message = %s from host %s", results.getString(host), host));
+                    break;
+                }
+            }
 
+            ansibleResult.setStatusCode(finalCode);
+
+            // We return entire Results object as message
+            ansibleResult.setResults(results.toString());
+
+        } else {
+            ansibleResult.setStatusCode(AnsibleResultCodes.INVALID_RESPONSE.getValue());
+            ansibleResult.setStatusMessage("Results not found in GET for response");
+        }
         return ansibleResult;
     }