Replace jackson usages with GSON
[clamp.git] / src / main / java / org / onap / clamp / clds / client / req / sdc / SdcCatalogServices.java
index cd7d4f2..37c6257 100644 (file)
@@ -26,18 +26,19 @@ package org.onap.clamp.clds.client.req.sdc;
 \r
 import com.att.eelf.configuration.EELFLogger;\r
 import com.att.eelf.configuration.EELFManager;\r
-import com.fasterxml.jackson.databind.JsonNode;\r
-import com.fasterxml.jackson.databind.ObjectMapper;\r
-import com.fasterxml.jackson.databind.node.ArrayNode;\r
-import com.fasterxml.jackson.databind.node.ObjectNode;\r
-import com.fasterxml.jackson.databind.node.TextNode;\r
 \r
+import com.google.gson.JsonArray;\r
+import com.google.gson.JsonElement;\r
+import com.google.gson.JsonObject;\r
+import com.google.gson.JsonParseException;\r
+import com.google.gson.reflect.TypeToken;\r
 import java.io.BufferedReader;\r
 import java.io.IOException;\r
 import java.io.InputStream;\r
 import java.io.InputStreamReader;\r
 import java.io.Reader;\r
 import java.io.StringReader;\r
+import java.lang.reflect.Type;\r
 import java.net.HttpURLConnection;\r
 import java.net.URL;\r
 import java.nio.charset.StandardCharsets;\r
@@ -68,7 +69,7 @@ import org.onap.clamp.clds.model.sdc.SdcServiceDetail;
 import org.onap.clamp.clds.model.sdc.SdcServiceInfo;\r
 import org.onap.clamp.clds.service.CldsService;\r
 import org.onap.clamp.clds.util.CryptoUtils;\r
-import org.onap.clamp.clds.util.JacksonUtils;\r
+import org.onap.clamp.clds.util.JsonUtils;\r
 import org.onap.clamp.clds.util.LoggingUtils;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
 import org.springframework.context.annotation.Primary;\r
@@ -80,17 +81,24 @@ public class SdcCatalogServices {
 \r
     private static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcCatalogServices.class);\r
     private static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();\r
-    public static final String RESOURCE_VF_TYPE = "VF";\r
-    public static final String RESOURCE_VFC_TYPE = "VFC";\r
-    public static final String RESOURCE_CVFC_TYPE = "CVFC";\r
-    public static final String SDC_REQUESTID_PROPERTY_NAME = "sdc.header.requestId";\r
-    public static final String SDC_METADATA_URL_PREFIX = "/metadata";\r
-    public static final String SDC_INSTANCE_ID_PROPERTY_NAME = "sdc.InstanceID";\r
-    public static final String SDC_CATALOG_URL_PROPERTY_NAME = "sdc.catalog.url";\r
-    public static final String SDC_SERVICE_URL_PROPERTY_NAME = "sdc.serviceUrl";\r
-    public static final String SDC_INSTANCE_ID_CLAMP = "CLAMP-Tool";\r
-    public static final String RESOURCE_URL_PREFIX = "resources";\r
+    private static final String RESOURCE_VF_TYPE = "VF";\r
+    private static final String RESOURCE_VFC_TYPE = "VFC";\r
+    private static final String RESOURCE_CVFC_TYPE = "CVFC";\r
+    private static final String SDC_REQUESTID_PROPERTY_NAME = "sdc.header.requestId";\r
+    private static final String SDC_METADATA_URL_PREFIX = "/metadata";\r
+    private static final String SDC_INSTANCE_ID_PROPERTY_NAME = "sdc.InstanceID";\r
+    private static final String SDC_CATALOG_URL_PROPERTY_NAME = "sdc.catalog.url";\r
+    private static final String SDC_SERVICE_URL_PROPERTY_NAME = "sdc.serviceUrl";\r
+    private static final String SDC_INSTANCE_ID_CLAMP = "CLAMP-Tool";\r
+    private static final String RESOURCE_URL_PREFIX = "resources";\r
     private static final LoggingUtils utils = new LoggingUtils(logger);\r
+\r
+    private static final Type LIST_SDC_SERVICE_INFO_TYPE = new TypeToken<List<SdcServiceInfo>>() {\r
+    }.getType();\r
+\r
+    private static final Type LIST_SDC_RESOURCE_BASIC_INFO_TYPE = new TypeToken<List<SdcResourceBasicInfo>>() {\r
+    }.getType();\r
+\r
     @Autowired\r
     private ClampProperties refProp;\r
 \r
@@ -285,9 +293,8 @@ public class SdcCatalogServices {
             return new ArrayList<>();\r
         }\r
         try {\r
-            return JacksonUtils.getObjectMapperInstance().readValue(jsonStr, JacksonUtils.getObjectMapperInstance()\r
-                .getTypeFactory().constructCollectionType(List.class, SdcServiceInfo.class));\r
-        } catch (IOException e) {\r
+            return JsonUtils.GSON.fromJson(jsonStr, LIST_SDC_SERVICE_INFO_TYPE);\r
+        } catch (JsonParseException e) {\r
             logger.error("Error when attempting to decode the JSON containing CldsSdcServiceInfo", e);\r
             return new ArrayList<>();\r
         }\r
@@ -305,9 +312,8 @@ public class SdcCatalogServices {
             return new ArrayList<>();\r
         }\r
         try {\r
-            return JacksonUtils.getObjectMapperInstance().readValue(jsonStr, JacksonUtils.getObjectMapperInstance()\r
-                .getTypeFactory().constructCollectionType(List.class, SdcResourceBasicInfo.class));\r
-        } catch (IOException e) {\r
+            return JsonUtils.GSON.fromJson(jsonStr, LIST_SDC_RESOURCE_BASIC_INFO_TYPE);\r
+        } catch (JsonParseException e) {\r
             logger.error("Exception occurred when attempting to decode the list of CldsSdcResourceBasicInfo JSON", e);\r
             return new ArrayList<>();\r
         }\r
@@ -321,8 +327,8 @@ public class SdcCatalogServices {
      */\r
     public SdcServiceDetail decodeCldsSdcServiceDetailFromJson(String jsonStr) {\r
         try {\r
-            return JacksonUtils.getObjectMapperInstance().readValue(jsonStr, SdcServiceDetail.class);\r
-        } catch (IOException e) {\r
+            return JsonUtils.GSON.fromJson(jsonStr, SdcServiceDetail.class);\r
+        } catch (JsonParseException e) {\r
             logger.error("Exception when attempting to decode the CldsSdcServiceDetail JSON", e);\r
             return null;\r
         }\r
@@ -402,9 +408,8 @@ public class SdcCatalogServices {
         if (responseStr != null) {\r
             SdcServiceDetail cldsSdcServiceDetail;\r
             try {\r
-                cldsSdcServiceDetail = JacksonUtils.getObjectMapperInstance().readValue(responseStr,\r
-                    SdcServiceDetail.class);\r
-            } catch (IOException e) {\r
+                cldsSdcServiceDetail = JsonUtils.GSON.fromJson(responseStr, SdcServiceDetail.class);\r
+            } catch (JsonParseException e) {\r
                 logger.error("Exception when decoding the CldsServiceData JSON from SDC", e);\r
                 throw new SdcCommunicationException("Exception when decoding the CldsServiceData JSON from SDC", e);\r
             }\r
@@ -497,41 +502,43 @@ public class SdcCatalogServices {
     }\r
 \r
     private List<CldsVfcData> getVfcDataListFromVfResponse(String vfResponse) {\r
-        ObjectNode vfResponseNode;\r
+        JsonObject vfResponseNode;\r
         try {\r
-            vfResponseNode = (ObjectNode) JacksonUtils.getObjectMapperInstance().readTree(vfResponse);\r
-        } catch (IOException e) {\r
+            vfResponseNode = JsonUtils.GSON.fromJson(vfResponse, JsonObject.class);\r
+        } catch (JsonParseException e) {\r
             logger.error("Exception when decoding the JSON list of CldsVfcData", e);\r
             return new ArrayList<>();\r
         }\r
-        ArrayNode vfcArrayNode = (ArrayNode) vfResponseNode.get("resources");\r
+        JsonArray vfcArrayNode = vfResponseNode.get("resources").getAsJsonArray();\r
         List<CldsVfcData> cldsVfcDataList = new ArrayList<>();\r
         if (vfcArrayNode != null) {\r
-            for (JsonNode vfcjsonNode : vfcArrayNode) {\r
-                ObjectNode currVfcNode = (ObjectNode) vfcjsonNode;\r
-                TextNode resourceTypeNode = (TextNode) currVfcNode.get("resoucreType");\r
-                if (resourceTypeNode != null && "VFC".equalsIgnoreCase(resourceTypeNode.textValue())) {\r
-                    handleVFCtypeNode(currVfcNode, cldsVfcDataList);\r
-                } else if (resourceTypeNode != null && "CVFC".equalsIgnoreCase(resourceTypeNode.textValue())) {\r
-                    handleCVFCtypeNode(currVfcNode, cldsVfcDataList);\r
+            for (JsonElement vfcjsonNode : vfcArrayNode) {\r
+                JsonObject currVfcNode = vfcjsonNode.getAsJsonObject();\r
+                JsonElement resourceTypeNode = currVfcNode.get("resoucreType");\r
+                if (resourceTypeNode != null && resourceTypeNode.isJsonPrimitive()) {\r
+                    if ("VFC".equalsIgnoreCase(resourceTypeNode.getAsString())) {\r
+                        handleVFCtypeNode(currVfcNode, cldsVfcDataList);\r
+                    } else if ("CVFC".equalsIgnoreCase(resourceTypeNode.getAsString())) {\r
+                        handleCVFCtypeNode(currVfcNode, cldsVfcDataList);\r
+                    }\r
                 }\r
             }\r
         }\r
         return cldsVfcDataList;\r
     }\r
 \r
-    private void handleVFCtypeNode(ObjectNode currVfcNode, List<CldsVfcData> cldsVfcDataList) {\r
+    private void handleVFCtypeNode(JsonObject currVfcNode, List<CldsVfcData> cldsVfcDataList) {\r
         CldsVfcData currCldsVfcData = new CldsVfcData();\r
-        TextNode vfcResourceName = (TextNode) currVfcNode.get("resourceInstanceName");\r
-        TextNode vfcInvariantResourceUuid = (TextNode) currVfcNode.get("resourceInvariantUUID");\r
-        currCldsVfcData.setVfcName(vfcResourceName.textValue());\r
-        currCldsVfcData.setVfcInvariantResourceUUID(vfcInvariantResourceUuid.textValue());\r
+        String vfcResourceName = currVfcNode.get("resourceInstanceName").getAsString();\r
+        String vfcInvariantResourceUuid = currVfcNode.get("resourceInvariantUUID").getAsString();\r
+        currCldsVfcData.setVfcName(vfcResourceName);\r
+        currCldsVfcData.setVfcInvariantResourceUUID(vfcInvariantResourceUuid);\r
         cldsVfcDataList.add(currCldsVfcData);\r
     }\r
 \r
-    private void handleCVFCtypeNode(ObjectNode currVfcNode, List<CldsVfcData> cldsVfcDataList) {\r
+    private void handleCVFCtypeNode(JsonObject currVfcNode, List<CldsVfcData> cldsVfcDataList) {\r
         handleVFCtypeNode(currVfcNode, cldsVfcDataList);\r
-        cldsVfcDataList.addAll(getVFCfromCVFC(currVfcNode.get("resourceUUID").textValue()));\r
+        cldsVfcDataList.addAll(getVFCfromCVFC(currVfcNode.get("resourceUUID").getAsString()));\r
     }\r
 \r
     private List<CldsVfcData> getVFCfromCVFC(String resourceUUID) {\r
@@ -541,18 +548,18 @@ public class SdcCatalogServices {
             String vfcResourceUUIDUrl = catalogUrl + RESOURCE_URL_PREFIX + "/" + resourceUUID + SDC_METADATA_URL_PREFIX;\r
             try {\r
                 String vfcResponse = getCldsServicesOrResourcesBasedOnURL(vfcResourceUUIDUrl);\r
-                ObjectNode vfResponseNode = (ObjectNode) JacksonUtils.getObjectMapperInstance().readTree(vfcResponse);\r
-                ArrayNode vfcArrayNode = (ArrayNode) vfResponseNode.get("resources");\r
+                JsonObject vfResponseNode = JsonUtils.GSON.fromJson(vfcResponse, JsonObject.class);\r
+                JsonArray vfcArrayNode = vfResponseNode.get("resources").getAsJsonArray();\r
                 if (vfcArrayNode != null) {\r
-                    for (JsonNode vfcjsonNode : vfcArrayNode) {\r
-                        ObjectNode currVfcNode = (ObjectNode) vfcjsonNode;\r
-                        TextNode resourceTypeNode = (TextNode) currVfcNode.get("resoucreType");\r
-                        if (resourceTypeNode != null && "VFC".equalsIgnoreCase(resourceTypeNode.textValue())) {\r
+                    for (JsonElement vfcjsonNode : vfcArrayNode) {\r
+                        JsonObject currVfcNode = vfcjsonNode.getAsJsonObject();\r
+                        JsonElement resourceTypeNode = currVfcNode.get("resoucreType");\r
+                        if (resourceTypeNode != null && resourceTypeNode.isJsonPrimitive() && "VFC".equalsIgnoreCase(resourceTypeNode.getAsString())) {\r
                             handleVFCtypeNode(currVfcNode, cldsVfcDataList);\r
                         }\r
                     }\r
                 }\r
-            } catch (IOException e) {\r
+            } catch (JsonParseException e) {\r
                 logger.error("Exception during JSON analyzis", e);\r
             }\r
         }\r
@@ -565,20 +572,21 @@ public class SdcCatalogServices {
 \r
     private List<CldsAlarmCondition> getAlarmCondtionsFromVfc(String vfcResponse) throws GeneralSecurityException {\r
         List<CldsAlarmCondition> cldsAlarmConditionList = new ArrayList<>();\r
-        ObjectNode vfcResponseNode;\r
+        JsonObject vfcResponseNode;\r
         try {\r
-            vfcResponseNode = (ObjectNode) JacksonUtils.getObjectMapperInstance().readTree(vfcResponse);\r
-        } catch (IOException e) {\r
+            vfcResponseNode = JsonUtils.GSON.fromJson(vfcResponse, JsonObject.class);\r
+        } catch (JsonParseException e) {\r
             logger.error("Exception when decoding the JSON list of CldsAlarmCondition", e);\r
             return cldsAlarmConditionList;\r
         }\r
-        ArrayNode artifactsArrayNode = (ArrayNode) vfcResponseNode.get("artifacts");\r
-        if (artifactsArrayNode != null && artifactsArrayNode.size() > 0) {\r
-            for (int index = 0; index < artifactsArrayNode.size(); index++) {\r
-                ObjectNode currArtifactNode = (ObjectNode) artifactsArrayNode.get(index);\r
-                TextNode artifactUrlNode = (TextNode) currArtifactNode.get("artifactURL");\r
-                if (artifactUrlNode != null) {\r
-                    String responsesFromArtifactUrl = getResponsesFromArtifactUrl(artifactUrlNode.textValue());\r
+        JsonElement artifactsNode = vfcResponseNode.get("artifacts");\r
+        if (artifactsNode != null && artifactsNode.isJsonArray() && artifactsNode.getAsJsonArray().size() > 0) {\r
+            JsonArray artifactsList = artifactsNode.getAsJsonArray();\r
+            for (int index = 0; index < artifactsList.size(); index++) {\r
+                JsonObject currArtifactNode = artifactsList.get(index).getAsJsonObject();\r
+                JsonElement artifactUrlNode = currArtifactNode.get("artifactURL");\r
+                if (artifactUrlNode != null && artifactUrlNode.isJsonPrimitive()) {\r
+                    String responsesFromArtifactUrl = getResponsesFromArtifactUrl(artifactUrlNode.getAsString());\r
                     cldsAlarmConditionList.addAll(parseCsvToGetAlarmConditions(responsesFromArtifactUrl));\r
                     logger.info(responsesFromArtifactUrl);\r
                 }\r
@@ -609,26 +617,26 @@ public class SdcCatalogServices {
     // Method to get the artifact for any particular VF\r
     private List<CldsVfKPIData> getFieldPathFromVF(String vfResponse) throws GeneralSecurityException {\r
         List<CldsVfKPIData> cldsVfKPIDataList = new ArrayList<>();\r
-        ObjectNode vfResponseNode;\r
+        JsonObject vfResponseNode;\r
         try {\r
-            vfResponseNode = (ObjectNode) JacksonUtils.getObjectMapperInstance().readTree(vfResponse);\r
-        } catch (IOException e) {\r
+            vfResponseNode = JsonUtils.GSON.fromJson(vfResponse, JsonObject.class);\r
+        } catch (JsonParseException e) {\r
             logger.error("Exception when decoding the JSON list of CldsVfKPIData", e);\r
             return cldsVfKPIDataList;\r
         }\r
-        ArrayNode artifactsArrayNode = (ArrayNode) vfResponseNode.get("artifacts");\r
+        JsonArray artifactsArrayNode = vfResponseNode.get("artifacts").getAsJsonArray();\r
         if (artifactsArrayNode != null && artifactsArrayNode.size() > 0) {\r
             for (int index = 0; index < artifactsArrayNode.size(); index++) {\r
-                ObjectNode currArtifactNode = (ObjectNode) artifactsArrayNode.get(index);\r
-                TextNode artifactUrlNode = (TextNode) currArtifactNode.get("artifactURL");\r
-                TextNode artifactNameNode = (TextNode) currArtifactNode.get("artifactName");\r
+                JsonObject currArtifactNode = artifactsArrayNode.get(index).getAsJsonObject();\r
+                JsonElement artifactUrlNode = currArtifactNode.get("artifactURL");\r
+                JsonElement artifactNameNode = currArtifactNode.get("artifactName");\r
                 String artifactName = "";\r
                 if (artifactNameNode != null) {\r
-                    artifactName = artifactNameNode.textValue();\r
+                    artifactName = artifactNameNode.getAsString();\r
                     artifactName = artifactName.substring(artifactName.lastIndexOf('.') + 1);\r
                 }\r
                 if (artifactUrlNode != null && "csv".equalsIgnoreCase(artifactName)) {\r
-                    String responsesFromArtifactUrl = getResponsesFromArtifactUrl(artifactUrlNode.textValue());\r
+                    String responsesFromArtifactUrl = getResponsesFromArtifactUrl(artifactUrlNode.getAsString());\r
                     cldsVfKPIDataList.addAll(parseCsvToGetFieldPath(responsesFromArtifactUrl));\r
                     logger.info(responsesFromArtifactUrl);\r
                 }\r
@@ -760,37 +768,32 @@ public class SdcCatalogServices {
     /**\r
      * To create properties object by using cldsServicedata.\r
      *\r
-     * @param globalProps\r
-     * @param cldsServiceData\r
-     * @return\r
-     * @throws IOException\r
-     *         In case of issues during the parsing of the Global Properties\r
+     * @throws IOException In case of issues during the parsing of the Global Properties\r
      */\r
     public String createPropertiesObjectByUUID(CldsServiceData cldsServiceData) throws IOException {\r
         String totalPropsStr;\r
-        ObjectMapper mapper = JacksonUtils.getObjectMapperInstance();\r
-        ObjectNode globalPropsJson = (ObjectNode) refProp.getJsonTemplate(CldsService.GLOBAL_PROPERTIES_KEY);\r
+        JsonObject globalPropsJson = refProp.getJsonTemplate(CldsService.GLOBAL_PROPERTIES_KEY).getAsJsonObject();\r
         if (cldsServiceData != null && cldsServiceData.getServiceUUID() != null) {\r
             // Objectnode to save all byservice, byvf , byvfc and byalarm nodes\r
-            ObjectNode byIdObjectNode = mapper.createObjectNode();\r
+            JsonObject byIdObjectNode = new JsonObject();\r
             // To create vf ResourceUUID node with serviceInvariantUUID\r
-            ObjectNode invariantUuidObjectNodeWithVf = createVfObjectNodeByServiceInvariantUuid(cldsServiceData);\r
-            byIdObjectNode.putPOJO("byService", invariantUuidObjectNodeWithVf);\r
+            JsonObject invariantUuidObjectNodeWithVf = createVfObjectNodeByServiceInvariantUuid(cldsServiceData);\r
+            byIdObjectNode.add("byService", invariantUuidObjectNodeWithVf);\r
             // To create byVf and vfcResourceNode with vfResourceUUID\r
-            ObjectNode vfcObjectNodeByVfUuid = createVfcObjectNodeByVfUuid(cldsServiceData.getCldsVfs());\r
-            byIdObjectNode.putPOJO("byVf", vfcObjectNodeByVfUuid);\r
+            JsonObject vfcObjectNodeByVfUuid = createVfcObjectNodeByVfUuid(cldsServiceData.getCldsVfs());\r
+            byIdObjectNode.add("byVf", vfcObjectNodeByVfUuid);\r
             // To create byKpi\r
-            ObjectNode kpiObjectNode = mapper.createObjectNode();\r
+            JsonObject kpiJsonObject = new JsonObject();\r
             if (cldsServiceData.getCldsVfs() != null && !cldsServiceData.getCldsVfs().isEmpty()) {\r
                 for (CldsVfData currCldsVfData : cldsServiceData.getCldsVfs()) {\r
                     if (currCldsVfData != null) {\r
-                        createKpiObjectNodeByVfUuid(kpiObjectNode, currCldsVfData.getCldsKPIList());\r
+                        createKpiObjectNodeByVfUuid(kpiJsonObject, currCldsVfData.getCldsKPIList());\r
                     }\r
                 }\r
             }\r
-            byIdObjectNode.putPOJO("byKpi", kpiObjectNode);\r
+            byIdObjectNode.add("byKpi", kpiJsonObject);\r
             // To create byVfc and alarmCondition with vfcResourceUUID\r
-            ObjectNode vfcResourceUuidObjectNode = mapper.createObjectNode();\r
+            JsonObject vfcResourceUuidObjectNode = new JsonObject();\r
             if (cldsServiceData.getCldsVfs() != null && !cldsServiceData.getCldsVfs().isEmpty()) {\r
                 for (CldsVfData currCldsVfData : cldsServiceData.getCldsVfs()) {\r
                     if (currCldsVfData != null) {\r
@@ -798,18 +801,18 @@ public class SdcCatalogServices {
                     }\r
                 }\r
             }\r
-            byIdObjectNode.putPOJO("byVfc", vfcResourceUuidObjectNode);\r
+            byIdObjectNode.add("byVfc", vfcResourceUuidObjectNode);\r
             // To create byAlarmCondition with alarmConditionKey\r
             List<CldsAlarmCondition> allAlarmConditions = getAllAlarmConditionsFromCldsServiceData(cldsServiceData,\r
                 "alarmCondition");\r
-            ObjectNode alarmCondObjectNodeByAlarmKey = createAlarmCondObjectNodeByAlarmKey(allAlarmConditions);\r
-            byIdObjectNode.putPOJO("byAlarmCondition", alarmCondObjectNodeByAlarmKey);\r
+            JsonObject alarmCondObjectNodeByAlarmKey = createAlarmCondObjectNodeByAlarmKey(allAlarmConditions);\r
+            byIdObjectNode.add("byAlarmCondition", alarmCondObjectNodeByAlarmKey);\r
             // To create byAlertDescription with AlertDescription\r
             List<CldsAlarmCondition> allAlertDescriptions = getAllAlarmConditionsFromCldsServiceData(cldsServiceData,\r
                 "alertDescription");\r
-            ObjectNode alertDescObjectNodeByAlert = createAlarmCondObjectNodeByAlarmKey(allAlertDescriptions);\r
-            byIdObjectNode.putPOJO("byAlertDescription", alertDescObjectNodeByAlert);\r
-            globalPropsJson.putPOJO("shared", byIdObjectNode);\r
+            JsonObject alertDescObjectNodeByAlert = createAlarmCondObjectNodeByAlarmKey(allAlertDescriptions);\r
+            byIdObjectNode.add("byAlertDescription", alertDescObjectNodeByAlert);\r
+            globalPropsJson.add("shared", byIdObjectNode);\r
             logger.info("Global properties JSON created with SDC info:" + globalPropsJson);\r
         }\r
         totalPropsStr = globalPropsJson.toString();\r
@@ -880,73 +883,69 @@ public class SdcCatalogServices {
         return alarmCondList;\r
     }\r
 \r
-    private ObjectNode createAlarmCondObjectNodeByAlarmKey(List<CldsAlarmCondition> cldsAlarmCondList) {\r
-        ObjectMapper mapper = JacksonUtils.getObjectMapperInstance();\r
-        ObjectNode alarmCondKeyNode = mapper.createObjectNode();\r
+    private JsonObject createAlarmCondObjectNodeByAlarmKey(List<CldsAlarmCondition> cldsAlarmCondList) {\r
+        JsonObject alarmCondKeyNode = new JsonObject();\r
         if (cldsAlarmCondList != null && !cldsAlarmCondList.isEmpty()) {\r
             for (CldsAlarmCondition currCldsAlarmCondition : cldsAlarmCondList) {\r
                 if (currCldsAlarmCondition != null) {\r
-                    ObjectNode alarmCondNode = mapper.createObjectNode();\r
-                    alarmCondNode.put("eventSourceType", currCldsAlarmCondition.getEventSourceType());\r
-                    alarmCondNode.put("eventSeverity", currCldsAlarmCondition.getSeverity());\r
-                    alarmCondKeyNode.putPOJO(currCldsAlarmCondition.getAlarmConditionKey(), alarmCondNode);\r
+                    JsonObject alarmCondNode = new JsonObject();\r
+                    alarmCondNode.addProperty("eventSourceType", currCldsAlarmCondition.getEventSourceType());\r
+                    alarmCondNode.addProperty("eventSeverity", currCldsAlarmCondition.getSeverity());\r
+                    alarmCondKeyNode.add(currCldsAlarmCondition.getAlarmConditionKey(), alarmCondNode);\r
                 }\r
             }\r
         } else {\r
-            ObjectNode alarmCondNode = mapper.createObjectNode();\r
-            alarmCondNode.put("eventSourceType", "");\r
-            alarmCondNode.put("eventSeverity", "");\r
-            alarmCondKeyNode.putPOJO("", alarmCondNode);\r
+            JsonObject alarmCondNode = new JsonObject();\r
+            alarmCondNode.addProperty("eventSourceType", "");\r
+            alarmCondNode.addProperty("eventSeverity", "");\r
+            alarmCondKeyNode.add("", alarmCondNode);\r
         }\r
         return alarmCondKeyNode;\r
     }\r
 \r
-    private ObjectNode createVfObjectNodeByServiceInvariantUuid(CldsServiceData cldsServiceData) {\r
-        ObjectMapper mapper = JacksonUtils.getObjectMapperInstance();\r
-        ObjectNode invariantUuidObjectNode = mapper.createObjectNode();\r
-        ObjectNode vfObjectNode = mapper.createObjectNode();\r
-        ObjectNode vfUuidNode = mapper.createObjectNode();\r
+    private JsonObject createVfObjectNodeByServiceInvariantUuid(CldsServiceData cldsServiceData) {\r
+        JsonObject invariantUuidObjectNode = new JsonObject();\r
+        JsonObject vfObjectNode = new JsonObject();\r
+        JsonObject vfUuidNode = new JsonObject();\r
         List<CldsVfData> cldsVfsList = cldsServiceData.getCldsVfs();\r
         if (cldsVfsList != null && !cldsVfsList.isEmpty()) {\r
             for (CldsVfData currCldsVfData : cldsVfsList) {\r
                 if (currCldsVfData != null) {\r
-                    vfUuidNode.put(currCldsVfData.getVfInvariantResourceUUID(), currCldsVfData.getVfName());\r
+                    vfUuidNode.addProperty(currCldsVfData.getVfInvariantResourceUUID(), currCldsVfData.getVfName());\r
                 }\r
             }\r
         } else {\r
-            vfUuidNode.put("", "");\r
+            vfUuidNode.addProperty("", "");\r
         }\r
-        vfObjectNode.putPOJO("vf", vfUuidNode);\r
-        invariantUuidObjectNode.putPOJO(cldsServiceData.getServiceInvariantUUID(), vfObjectNode);\r
+        vfObjectNode.add("vf", vfUuidNode);\r
+        invariantUuidObjectNode.add(cldsServiceData.getServiceInvariantUUID(), vfObjectNode);\r
         return invariantUuidObjectNode;\r
     }\r
 \r
-    private void createKpiObjectNodeByVfUuid(ObjectNode vfResourceUuidObjectNode,\r
+    private void createKpiObjectNodeByVfUuid(JsonObject vfResourceUuidObjectNode,\r
         List<CldsVfKPIData> cldsVfKpiDataList) {\r
-        ObjectMapper mapper = JacksonUtils.getObjectMapperInstance();\r
         if (cldsVfKpiDataList != null && !cldsVfKpiDataList.isEmpty()) {\r
             for (CldsVfKPIData currCldsVfKpiData : cldsVfKpiDataList) {\r
                 if (currCldsVfKpiData != null) {\r
-                    ObjectNode thresholdNameObjectNode = mapper.createObjectNode();\r
-                    ObjectNode fieldPathObjectNode = mapper.createObjectNode();\r
-                    ObjectNode nfNamingCodeNode = mapper.createObjectNode();\r
-                    fieldPathObjectNode.put(currCldsVfKpiData.getFieldPathValue(),\r
+                    JsonObject thresholdNameObjectNode = new JsonObject();\r
+                    JsonObject fieldPathObjectNode = new JsonObject();\r
+                    JsonObject nfNamingCodeNode = new JsonObject();\r
+                    fieldPathObjectNode.addProperty(currCldsVfKpiData.getFieldPathValue(),\r
                         currCldsVfKpiData.getFieldPathValue());\r
-                    nfNamingCodeNode.put(currCldsVfKpiData.getNfNamingValue(), currCldsVfKpiData.getNfNamingValue());\r
-                    thresholdNameObjectNode.putPOJO("fieldPath", fieldPathObjectNode);\r
-                    thresholdNameObjectNode.putPOJO("nfNamingCode", nfNamingCodeNode);\r
-                    vfResourceUuidObjectNode.putPOJO(currCldsVfKpiData.getThresholdValue(), thresholdNameObjectNode);\r
+                    nfNamingCodeNode.addProperty(currCldsVfKpiData.getNfNamingValue(), currCldsVfKpiData.getNfNamingValue());\r
+                    thresholdNameObjectNode.add("fieldPath", fieldPathObjectNode);\r
+                    thresholdNameObjectNode.add("nfNamingCode", nfNamingCodeNode);\r
+                    vfResourceUuidObjectNode.add(currCldsVfKpiData.getThresholdValue(), thresholdNameObjectNode);\r
                 }\r
             }\r
         }\r
     }\r
 \r
-    private void createAlarmCondObjectNodeByVfcUuid(ObjectNode vfcResourceUuidObjectNode,\r
+    private void createAlarmCondObjectNodeByVfcUuid(JsonObject vfcResourceUuidObjectNode,\r
         List<CldsVfcData> cldsVfcDataList) {\r
-        ObjectMapper mapper = JacksonUtils.getObjectMapperInstance();\r
-        ObjectNode vfcObjectNode = mapper.createObjectNode();\r
-        ObjectNode alarmCondNode = mapper.createObjectNode();\r
-        ObjectNode alertDescNode = mapper.createObjectNode();\r
+        JsonObject vfcObjectNode = new JsonObject();\r
+        JsonObject alarmCondNode = new JsonObject();\r
+        JsonObject alertDescNode = new JsonObject();\r
         if (cldsVfcDataList != null && !cldsVfcDataList.isEmpty()) {\r
             for (CldsVfcData currCldsVfcData : cldsVfcDataList) {\r
                 if (currCldsVfcData != null) {\r
@@ -954,25 +953,25 @@ public class SdcCatalogServices {
                         && !currCldsVfcData.getCldsAlarmConditions().isEmpty()) {\r
                         for (CldsAlarmCondition currCldsAlarmCondition : currCldsVfcData.getCldsAlarmConditions()) {\r
                             if ("alarmCondition".equalsIgnoreCase(currCldsAlarmCondition.getEventName())) {\r
-                                alarmCondNode.put(currCldsAlarmCondition.getAlarmConditionKey(),\r
+                                alarmCondNode.addProperty(currCldsAlarmCondition.getAlarmConditionKey(),\r
                                     currCldsAlarmCondition.getAlarmConditionKey());\r
                             } else {\r
-                                alertDescNode.put(currCldsAlarmCondition.getAlarmConditionKey(),\r
+                                alertDescNode.addProperty(currCldsAlarmCondition.getAlarmConditionKey(),\r
                                     currCldsAlarmCondition.getAlarmConditionKey());\r
                             }\r
                         }\r
                     }\r
-                    vfcObjectNode.putPOJO("alarmCondition", alarmCondNode);\r
-                    vfcObjectNode.putPOJO("alertDescription", alertDescNode);\r
-                    vfcResourceUuidObjectNode.putPOJO(currCldsVfcData.getVfcInvariantResourceUUID(), vfcObjectNode);\r
+                    vfcObjectNode.add("alarmCondition", alarmCondNode);\r
+                    vfcObjectNode.add("alertDescription", alertDescNode);\r
+                    vfcResourceUuidObjectNode.add(currCldsVfcData.getVfcInvariantResourceUUID(), vfcObjectNode);\r
                 }\r
             }\r
         } else {\r
-            alarmCondNode.put("", "");\r
-            vfcObjectNode.putPOJO("alarmCondition", alarmCondNode);\r
-            alertDescNode.put("", "");\r
-            vfcObjectNode.putPOJO("alertDescription", alarmCondNode);\r
-            vfcResourceUuidObjectNode.putPOJO("", vfcObjectNode);\r
+            alarmCondNode.addProperty("", "");\r
+            vfcObjectNode.add("alarmCondition", alarmCondNode);\r
+            alertDescNode.addProperty("", "");\r
+            vfcObjectNode.add("alertDescription", alarmCondNode);\r
+            vfcResourceUuidObjectNode.add("", vfcObjectNode);\r
         }\r
     }\r
 \r
@@ -983,45 +982,45 @@ public class SdcCatalogServices {
      * @param cldsVfDataList\r
      * @return\r
      */\r
-    private ObjectNode createVfcObjectNodeByVfUuid(List<CldsVfData> cldsVfDataList) {\r
-        ObjectMapper mapper = JacksonUtils.getObjectMapperInstance();\r
-        ObjectNode vfUuidObjectNode = mapper.createObjectNode();\r
+    private JsonObject createVfcObjectNodeByVfUuid(List<CldsVfData> cldsVfDataList) {\r
+        JsonObject vfUuidObjectNode = new JsonObject();\r
         if (cldsVfDataList != null && !cldsVfDataList.isEmpty()) {\r
             for (CldsVfData currCldsVfData : cldsVfDataList) {\r
                 if (currCldsVfData != null) {\r
-                    ObjectNode vfObjectNode = mapper.createObjectNode();\r
-                    ObjectNode vfcUuidNode = mapper.createObjectNode();\r
-                    ObjectNode kpiObjectNode = mapper.createObjectNode();\r
+                    JsonObject vfObjectNode = new JsonObject();\r
+                    JsonObject vfcUuidNode = new JsonObject();\r
+                    JsonObject kpiObjectNode = new JsonObject();\r
                     if (currCldsVfData.getCldsVfcs() != null && !currCldsVfData.getCldsVfcs().isEmpty()) {\r
                         for (CldsVfcData currCldsVfcData : currCldsVfData.getCldsVfcs()) {\r
                             if (currCldsVfcData.getCldsAlarmConditions() != null\r
                                 && !currCldsVfcData.getCldsAlarmConditions().isEmpty()) {\r
-                                vfcUuidNode.put(currCldsVfcData.getVfcInvariantResourceUUID(),\r
+                                vfcUuidNode.addProperty(currCldsVfcData.getVfcInvariantResourceUUID(),\r
                                     currCldsVfcData.getVfcName());\r
                             }\r
                         }\r
                     } else {\r
-                        vfcUuidNode.put("", "");\r
+                        vfcUuidNode.addProperty("", "");\r
                     }\r
                     if (currCldsVfData.getCldsKPIList() != null && !currCldsVfData.getCldsKPIList().isEmpty()) {\r
                         for (CldsVfKPIData currCldsVfKPIData : currCldsVfData.getCldsKPIList()) {\r
-                            kpiObjectNode.put(currCldsVfKPIData.getThresholdValue(),\r
+                            // ToDo: something wrong happened here\r
+                            kpiObjectNode.addProperty(currCldsVfKPIData.getThresholdValue(),\r
                                 currCldsVfKPIData.getThresholdValue());\r
                         }\r
                     } else {\r
-                        kpiObjectNode.put("", "");\r
+                        kpiObjectNode.addProperty("", "");\r
                     }\r
-                    vfObjectNode.putPOJO("vfc", vfcUuidNode);\r
-                    vfObjectNode.putPOJO("kpi", kpiObjectNode);\r
-                    vfUuidObjectNode.putPOJO(currCldsVfData.getVfInvariantResourceUUID(), vfObjectNode);\r
+                    vfObjectNode.add("vfc", vfcUuidNode);\r
+                    vfObjectNode.add("kpi", kpiObjectNode);\r
+                    vfUuidObjectNode.add(currCldsVfData.getVfInvariantResourceUUID(), vfObjectNode);\r
                 }\r
             }\r
         } else {\r
-            ObjectNode vfcUuidNode = mapper.createObjectNode();\r
-            vfcUuidNode.put("", "");\r
-            ObjectNode vfcObjectNode = mapper.createObjectNode();\r
-            vfcObjectNode.putPOJO("vfc", vfcUuidNode);\r
-            vfUuidObjectNode.putPOJO("", vfcObjectNode);\r
+            JsonObject vfcUuidNode = new JsonObject();\r
+            vfcUuidNode.addProperty("", "");\r
+            JsonObject vfcObjectNode = new JsonObject();\r
+            vfcObjectNode.add("vfc", vfcUuidNode);\r
+            vfUuidObjectNode.add("", vfcObjectNode);\r
         }\r
         return vfUuidObjectNode;\r
     }\r