X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=holmes-actions%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fholmes%2Fcommon%2Faai%2FAaiResponseUtil.java;h=5ad4984c4dfdfb5ec93e1728e5c39a93d55cbf95;hb=490fc3c1fafe50d5fb0e23db5cfd10730be96866;hp=ccfb4fd6ae5221f8708339d96a8518f92414d405;hpb=c9ed775685b01f5622618216748eeac3000285c4;p=holmes%2Fcommon.git diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/aai/AaiResponseUtil.java b/holmes-actions/src/main/java/org/onap/holmes/common/aai/AaiResponseUtil.java index ccfb4fd..5ad4984 100644 --- a/holmes-actions/src/main/java/org/onap/holmes/common/aai/AaiResponseUtil.java +++ b/holmes-actions/src/main/java/org/onap/holmes/common/aai/AaiResponseUtil.java @@ -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, @@ -15,12 +15,9 @@ */ 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; @@ -30,155 +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 List convertJsonToVmResourceLink(String responseJson) throws IOException { - ObjectMapper mapper = new ObjectMapper(); - JsonNode jsonNode = mapper.readTree(responseJson); + public static final String RELATIONSHIP_LIST = "relationship-list"; + public List convertJsonToVmResourceLink(String responseJson) + { List 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 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 convertResultDataList(JsonArray resultData) { List 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 convertRelationships(JsonNode relationshipNode) { + private List convertRelationships(JsonArray relationshipNode) { List 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 convertRelationshipDate(JsonNode relationshipDataNode) { + private List convertRelationshipDate(JsonArray relationshipDataNode) { List 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 convertRelatedToProperty(JsonNode relatedToPropertyNode) { + private List convertRelatedToProperty(JsonArray relatedToPropertyNode) { List 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; }