Fixed the CLM Issues
[holmes/common.git] / holmes-actions / src / main / java / org / onap / holmes / common / aai / AaiResponseUtil.java
index 37bfc1d..5ad4984 100644 (file)
@@ -1,11 +1,11 @@
 /**
- * Copyright 2017 ZTE Corporation.
+ * Copyright 2017-2020 ZTE Corporation.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  */
 package org.onap.holmes.common.aai;
 
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 import org.jvnet.hk2.annotations.Service;
+import org.onap.holmes.common.aai.entity.RelationshipList;
 import org.onap.holmes.common.aai.entity.RelationshipList.RelatedToProperty;
 import org.onap.holmes.common.aai.entity.RelationshipList.Relationship;
 import org.onap.holmes.common.aai.entity.RelationshipList.RelationshipData;
@@ -29,156 +27,173 @@ import org.onap.holmes.common.aai.entity.VmEntity;
 import org.onap.holmes.common.aai.entity.VmResourceLink;
 import org.onap.holmes.common.aai.entity.VnfEntity;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 @Service
 public class AaiResponseUtil {
 
     public static final String RELATIONSHIP_LIST = "relationship-list";
-    public List<VmResourceLink> convertJsonToVmResourceLink(String responseJson) throws IOException {
-        ObjectMapper mapper = new ObjectMapper();
-        JsonNode jsonNode = mapper.readTree(responseJson);
 
+    public List<VmResourceLink> convertJsonToVmResourceLink(String responseJson)
+            {
         List<VmResourceLink> vmResourceLinkList = new ArrayList<>();
-        if (jsonNode.has("result-data")) {
-            JsonNode resultData = jsonNode.get("result-data");
+        String resultDataKey = "result-data";
+                JsonObject jsonNode = JsonParser.parseString(responseJson).getAsJsonObject();
+        if (jsonNode != null && jsonNode.get(resultDataKey) != null) {
+            JsonArray resultData = jsonNode.getAsJsonArray(resultDataKey);
             vmResourceLinkList = convertResultDataList(resultData);
         }
         return vmResourceLinkList;
     }
 
-    public VmEntity convertJsonToVmEntity(String responseJson) throws IOException {
-        ObjectMapper mapper = new ObjectMapper();
-        JsonNode jsonNode = mapper.readTree(responseJson);
-        if (!jsonNode.iterator().hasNext()) {
+    public VmEntity convertJsonToVmEntity(String responseJson) {
+        JsonObject jsonObject = JsonParser.parseString(responseJson).getAsJsonObject();
+        if (jsonObject == null ||jsonObject.size() == 0) {
             return null;
         }
         VmEntity vmEntity = new VmEntity();
-        vmEntity.setInMaint(getBooleanElementByNode(jsonNode, "in-maint"));
-        vmEntity.setClosedLoopDisable(getBooleanElementByNode(jsonNode,"is-closed-loop-disabled"));
-        vmEntity.setProvStatus(getTextElementByNode(jsonNode, "prov-status"));
-        vmEntity.setResourceVersion(getTextElementByNode(jsonNode,"resource-version"));
-        vmEntity.setVserverId(getTextElementByNode(jsonNode,"vserver-id"));
-        vmEntity.setVserverName(getTextElementByNode(jsonNode,"vserver-name"));
-        vmEntity.setVserverName2(getTextElementByNode(jsonNode,"vserver-name2"));
-        vmEntity.setVserverSelflink(getTextElementByNode(jsonNode,"vserver-selflink"));
-
-        if (jsonNode.has(RELATIONSHIP_LIST)) {
-            JsonNode relationshipListNode = jsonNode.get(RELATIONSHIP_LIST);
-            if (relationshipListNode.has("relationship")) {
-                JsonNode relationshipNode = relationshipListNode.get("relationship");
-                vmEntity.getRelationshipList().setRelationships(convertRelationships(relationshipNode));
-            }
-        }
+        vmEntity.setInMaint(getBooleanElementByNode(jsonObject, "in-maint"));
+        vmEntity.setClosedLoopDisable(
+                getBooleanElementByNode(jsonObject, "is-closed-loop-disabled"));
+        vmEntity.setProvStatus(getTextElementByNode(jsonObject, "prov-status"));
+        vmEntity.setResourceVersion(getTextElementByNode(jsonObject, "resource-version"));
+        vmEntity.setVserverId(getTextElementByNode(jsonObject, "vserver-id"));
+        vmEntity.setVserverName(getTextElementByNode(jsonObject, "vserver-name"));
+        vmEntity.setVserverName2(getTextElementByNode(jsonObject, "vserver-name2"));
+        vmEntity.setVserverSelflink(getTextElementByNode(jsonObject, "vserver-selflink"));
+
+        setRelationShips(jsonObject, vmEntity.getRelationshipList());
         if (vmEntity.getRelationshipList().getRelationships() == null) {
             vmEntity.getRelationshipList().setRelationships(Collections.emptyList());
         }
         return vmEntity;
     }
 
-    public VnfEntity convertJsonToVnfEntity(String responseJson) throws IOException {
-        ObjectMapper mapper = new ObjectMapper();
-        JsonNode jsonNode = mapper.readTree(responseJson);
+    public VnfEntity convertJsonToVnfEntity(String responseJson) {
+        JsonObject jsonObject = JsonParser.parseString(responseJson).getAsJsonObject();
 
-        if(!jsonNode.elements().hasNext())
+        if (jsonObject.size() == 0) {
             return null;
+        }
 
         VnfEntity vnfEntity = new VnfEntity();
-        vnfEntity.setInMaint(getBooleanElementByNode(jsonNode, "in-maint"));
-        vnfEntity.setClosedLoopDisabled(getBooleanElementByNode(jsonNode, "is-closed-loop-disabled"));
-        vnfEntity.setOrchestrationStatus(getTextElementByNode(jsonNode, "orchestration-status"));
-        vnfEntity.setProvStatus(getTextElementByNode(jsonNode, "prov-status"));
-        vnfEntity.setResourceVersion(getTextElementByNode(jsonNode,"resource-version"));
-        vnfEntity.setServiceId(getTextElementByNode(jsonNode,"service-id"));
-        vnfEntity.setVnfId(getTextElementByNode(jsonNode,"vnf-id"));
-        vnfEntity.setVnfName(getTextElementByNode(jsonNode,"vnf-name"));
-        vnfEntity.setVnfType(getTextElementByNode(jsonNode,"vnf-type"));
-
-        if (jsonNode.has(RELATIONSHIP_LIST)) {
-            JsonNode relationshipListNode = jsonNode.get(RELATIONSHIP_LIST);
-            if (relationshipListNode.has("relationship")) {
-                JsonNode relationshipNode = relationshipListNode.get("relationship");
-                vnfEntity.getRelationshipList().setRelationships(convertRelationships(relationshipNode));
-            }
-        }
+        vnfEntity.setInMaint(getBooleanElementByNode(jsonObject, "in-maint"));
+        vnfEntity.setClosedLoopDisabled(
+                getBooleanElementByNode(jsonObject, "is-closed-loop-disabled"));
+        vnfEntity.setOrchestrationStatus(getTextElementByNode(jsonObject, "orchestration-status"));
+        vnfEntity.setProvStatus(getTextElementByNode(jsonObject, "prov-status"));
+        vnfEntity.setResourceVersion(getTextElementByNode(jsonObject, "resource-version"));
+        vnfEntity.setServiceId(getTextElementByNode(jsonObject, "service-id"));
+        vnfEntity.setVnfId(getTextElementByNode(jsonObject, "vnf-id"));
+        vnfEntity.setVnfName(getTextElementByNode(jsonObject, "vnf-name"));
+        vnfEntity.setVnfType(getTextElementByNode(jsonObject, "vnf-type"));
+
+        setRelationShips(jsonObject, vnfEntity.getRelationshipList());
         if (vnfEntity.getRelationshipList().getRelationships() == null) {
             vnfEntity.getRelationshipList().setRelationships(Collections.emptyList());
         }
         return vnfEntity;
     }
 
-    private List<VmResourceLink> convertResultDataList(JsonNode resultData) {
+    private void setRelationShips(JsonObject jsonObject, RelationshipList relationshipList) {
+        if (jsonObject.get(RELATIONSHIP_LIST) != null) {
+            JsonObject relationshipListNode = jsonObject.getAsJsonObject(RELATIONSHIP_LIST);
+            String relationship = "relationship";
+            if (relationshipListNode.get(relationship) != null) {
+                JsonArray relationshipNode = relationshipListNode.getAsJsonArray(relationship);
+                relationshipList
+                        .setRelationships(convertRelationships(relationshipNode));
+            }
+        }
+    }
+
+    private List<VmResourceLink> convertResultDataList(JsonArray resultData) {
         List<VmResourceLink> vmResourceLinkList = new ArrayList<>();
-        resultData.forEach(node ->{
-            if (node.has("resource-link") && node.has("resource-type")) {
+        String resourceLink = "resource-link";
+        String resourceType = "resource-type";
+        for (int i = 0; i < resultData.size(); i++) {
+            JsonObject jsonObject = resultData.get(i).getAsJsonObject();
+            if (jsonObject.get(resourceLink) != null
+                    && jsonObject.get(resourceType) != null) {
                 VmResourceLink vmResourceLink = new VmResourceLink();
-                vmResourceLink.setResourceLink(getTextElementByNode(node, "resource-link"));
-                vmResourceLink.setResourceType(getTextElementByNode(node, "resource-type"));
+                vmResourceLink.setResourceLink(getTextElementByNode(jsonObject, resourceLink));
+                vmResourceLink.setResourceType(getTextElementByNode(jsonObject, resourceType));
                 vmResourceLinkList.add(vmResourceLink);
             }
-        });
+        }
         return vmResourceLinkList;
     }
 
-    private List<Relationship> convertRelationships(JsonNode relationshipNode) {
+    private List<Relationship> convertRelationships(JsonArray relationshipNode) {
         List<Relationship> relationshipList = new ArrayList<>();
-        relationshipNode.forEach(node ->{
+        for (int i = 0; i < relationshipNode.size(); i++) {
             Relationship relationship = new Relationship();
-            relationship.setRelatedLink(getTextElementByNode(node, "related-link"));
-            relationship.setRelatedTo(getTextElementByNode(node, "related-to"));
-            if (node.has("related-to-property")) {
-                JsonNode relatedToPropertyNode = node.get("related-to-property");
+            JsonObject jsonObject = relationshipNode.get(i).getAsJsonObject();
+
+            relationship.setRelatedLink(getTextElementByNode(jsonObject, "related-link"));
+            relationship.setRelatedTo(getTextElementByNode(jsonObject, "related-to"));
+            if (jsonObject.get("related-to-property") != null) {
+                JsonArray relatedToPropertyNode = jsonObject.getAsJsonArray("related-to-property");
                 relationship.setRelatedToPropertyList(
                         convertRelatedToProperty(relatedToPropertyNode));
             } else {
                 relationship.setRelatedToPropertyList(Collections.emptyList());
             }
-            if (node.has("relationship-data")) {
-                JsonNode relationshipDataNode = node.get("relationship-data");
+            if (jsonObject.get("relationship-data") != null) {
+                JsonArray relationshipDataNode = jsonObject.getAsJsonArray("relationship-data");
                 relationship
                         .setRelationshipDataList(convertRelationshipDate(relationshipDataNode));
             } else {
                 relationship.setRelationshipDataList(Collections.emptyList());
             }
             relationshipList.add(relationship);
-        });
+        }
+
         return relationshipList;
     }
 
-    private List<RelationshipData> convertRelationshipDate(JsonNode relationshipDataNode) {
+    private List<RelationshipData> convertRelationshipDate(JsonArray relationshipDataNode) {
         List<RelationshipData> relationshipDataList = new ArrayList<>();
-        relationshipDataNode.forEach(node ->{
+        for (int i = 0; i < relationshipDataNode.size(); i++) {
+            JsonObject jsonObject = relationshipDataNode.get(i).getAsJsonObject();
             RelationshipData relationshipData = new RelationshipData();
             relationshipData.setRelationshipKey(
-                    getTextElementByNode(node,"relationship-key"));
+                    getTextElementByNode(jsonObject, "relationship-key"));
             relationshipData.setRelationshipValue(
-                    getTextElementByNode(node,"relationship-value"));
+                    getTextElementByNode(jsonObject, "relationship-value"));
+            relationshipDataList.add(relationshipData);
             relationshipDataList.add(relationshipData);
-        });
+
+        }
         return relationshipDataList;
     }
 
-    private List<RelatedToProperty> convertRelatedToProperty(JsonNode relatedToPropertyNode) {
+    private List<RelatedToProperty> convertRelatedToProperty(JsonArray relatedToPropertyNode) {
         List<RelatedToProperty> relatedToPropertyList = new ArrayList<>();
-        relatedToPropertyNode.forEach(node ->{
+        for (int i = 0; i < relatedToPropertyNode.size(); i++) {
+            JsonObject jsonObject = relatedToPropertyNode.get(i).getAsJsonObject();
             RelatedToProperty relatedToProperty = new RelatedToProperty();
             relatedToProperty
-                    .setPropertyKey(getTextElementByNode(node, "property-key"));
+                    .setPropertyKey(getTextElementByNode(jsonObject, "property-key"));
             relatedToProperty.setPropertyValue(
-                    getTextElementByNode(node, "property-value"));
+                    getTextElementByNode(jsonObject, "property-value"));
             relatedToPropertyList.add(relatedToProperty);
-        });
+        }
         return relatedToPropertyList;
     }
 
-    private String getTextElementByNode(JsonNode jsonNode,String name){
-        if(jsonNode.has(name)){
-            return jsonNode.get(name).asText();
+    private String getTextElementByNode(JsonObject jsonNode, String name) {
+        if (jsonNode.get(name) != null) {
+            return jsonNode.get(name).getAsString();
         }
         return null;
     }
 
-    private Boolean getBooleanElementByNode(JsonNode jsonNode,String name){
-        if(jsonNode.has(name)){
-            return jsonNode.get(name).asBoolean();
+    private Boolean getBooleanElementByNode(JsonObject jsonNode, String name) {
+        if (jsonNode.get(name) != null) {
+            return jsonNode.get(name).getAsBoolean();
         }
         return null;
     }