Improve coverage FlowControlNode #5
[appc.git] / appc-config / appc-flow-controller / provider / src / main / java / org / onap / appc / flow / controller / node / JsonParsingNode.java
index 42f38ba..1fb6b0c 100644 (file)
 
 package org.onap.appc.flow.controller.node;
 
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_PARAM_RESPONSE_PREFIX;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.OUTPUT_PARAM_ERROR_MESSAGE;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.OUTPUT_PARAM_STATUS;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.OUTPUT_STATUS_FAILURE;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.OUTPUT_STATUS_SUCCESS;
+
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -32,56 +37,43 @@ import java.io.IOException;
 import java.util.Map;
 import java.util.Map.Entry;
 import org.apache.commons.lang3.StringUtils;
-import org.onap.appc.flow.controller.utils.FlowControllerConstants;
 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin;
 
 public class JsonParsingNode implements SvcLogicJavaPlugin {
 
-    private static final  EELFLogger log = EELFManager.getInstance().getLogger(JsonParsingNode.class);
+  private static final EELFLogger log = EELFManager.getInstance().getLogger(JsonParsingNode.class);
 
-    public void parse(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
-        String fn = "RestServiceNode.sendRequest";
-        log.info("Received processParamKeys call with params : " + inParams);
-        String responsePrefix = inParams.get(FlowControllerConstants.INPUT_PARAM_RESPONSE_PREFIX);
-        responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : "";
-        try {
-            //Remove below for Block
-            JsonNode jnode = isValidJson(inParams.get("data"));
-            if (jnode != null) {
-                Map<String, Object> map
-                    = new ObjectMapper().readValue(jnode.toString(), new TypeReference<Map<String, String>>(){});
-                for (Entry<String, Object> entry : map.entrySet()) {
-                    ctx.setAttribute(responsePrefix + entry.getKey(),(String) entry.getValue());
-                }
-            }
-            ctx.setAttribute(responsePrefix + FlowControllerConstants.OUTPUT_PARAM_STATUS,
-                FlowControllerConstants.OUTPUT_STATUS_SUCCESS);
-            
-        } catch (Exception e) {
-            ctx.setAttribute(responsePrefix + FlowControllerConstants.OUTPUT_PARAM_STATUS,
-                FlowControllerConstants.OUTPUT_STATUS_FAILURE);
-            ctx.setAttribute(responsePrefix + FlowControllerConstants.OUTPUT_PARAM_ERROR_MESSAGE,
-                e.getMessage());
-            log.error(fn + " Error Message : " + e.getMessage(), e);
-            throw new SvcLogicException(e.getMessage());
-        }
-    }
+  public void parse(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+    String fn = "RestServiceNode.sendRequest";
+    log.info("Received processParamKeys call with params : " + inParams);
+    String responsePrefix = inParams.get(INPUT_PARAM_RESPONSE_PREFIX);
+    responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : "";
+    try {
+      String json = inParams.get("data");
+      log.info("Received response from Interface " + json);
+      JsonNode node = JsonValidator.validate(json);
 
-    private JsonNode isValidJson(String json) throws IOException {
-        JsonNode output;
-        log.info("Received response from Interface " + json);
-        if (json == null  || json.isEmpty()) {
-            return null;
-        }
-        try {
-            ObjectMapper objectMapper = new ObjectMapper();
-            output = objectMapper.readTree(json);
-        } catch (JsonProcessingException e) {
-            log.warn("Response received from interface is not a valid JSON block" + json, e);
-            return null;
+      if (node != null) {
+        Map<String, String> map = convertToMap(node);
+        for (Entry<String, String> entry : map.entrySet()) {
+          ctx.setAttribute(responsePrefix + entry.getKey(), entry.getValue());
         }
-        return output;
+      }
+      ctx.setAttribute(responsePrefix + OUTPUT_PARAM_STATUS, OUTPUT_STATUS_SUCCESS);
+
+    } catch (Exception e) {
+      ctx.setAttribute(responsePrefix + OUTPUT_PARAM_STATUS, OUTPUT_STATUS_FAILURE);
+      ctx.setAttribute(responsePrefix + OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+      log.error(fn + " Error Message : " + e.getMessage(), e);
+      throw new SvcLogicException(e.getMessage());
     }
+  }
+
+  private Map<String, String> convertToMap(JsonNode node) throws IOException {
+    return new ObjectMapper().readValue(node.toString(), new TypeReference<Map<String, String>>() {
+    });
+  }
+
 }