2 * Copyright 2017 ZTE Corporation.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.onap.holmes.common.aai;
18 import com.fasterxml.jackson.databind.JsonNode;
19 import com.fasterxml.jackson.databind.ObjectMapper;
20 import java.io.IOException;
21 import java.util.ArrayList;
22 import java.util.Collections;
23 import java.util.List;
24 import org.jvnet.hk2.annotations.Service;
25 import org.onap.holmes.common.aai.entity.RelationshipList;
26 import org.onap.holmes.common.aai.entity.RelationshipList.RelatedToProperty;
27 import org.onap.holmes.common.aai.entity.RelationshipList.Relationship;
28 import org.onap.holmes.common.aai.entity.RelationshipList.RelationshipData;
29 import org.onap.holmes.common.aai.entity.VmEntity;
30 import org.onap.holmes.common.aai.entity.VmResourceLink;
31 import org.onap.holmes.common.aai.entity.VnfEntity;
33 public class AaiResponseUtil {
35 public List<VmResourceLink> convertJsonToVmResourceLink(String responseJson) throws IOException {
36 ObjectMapper mapper = new ObjectMapper();
37 JsonNode jsonNode = mapper.readTree(responseJson);
39 List<VmResourceLink> vmResourceLinkList = new ArrayList<>();
40 if (jsonNode.has("result-data")) {
41 JsonNode resultData = jsonNode.get("result-data");
42 vmResourceLinkList = convertResultDataList(resultData);
44 return vmResourceLinkList;
47 public VmEntity convertJsonToVmEntity(String responseJson) throws IOException {
48 ObjectMapper mapper = new ObjectMapper();
49 JsonNode jsonNode = mapper.readTree(responseJson);
50 if (!jsonNode.iterator().hasNext()) {
53 VmEntity vmEntity = new VmEntity();
54 vmEntity.setInMaint(getBooleanElementByNode(jsonNode, "in-maint"));
55 vmEntity.setClosedLoopDisable(getBooleanElementByNode(jsonNode,"is-closed-loop-disabled"));
56 vmEntity.setProvStatus(getTextElementByNode(jsonNode, "prov-status"));
57 vmEntity.setResourceVersion(getTextElementByNode(jsonNode,"resource-version"));
58 vmEntity.setVserverId(getTextElementByNode(jsonNode,"vserver-id"));
59 vmEntity.setVserverName(getTextElementByNode(jsonNode,"vserver-name"));
60 vmEntity.setVserverName2(getTextElementByNode(jsonNode,"vserver-name2"));
61 vmEntity.setVserverSelflink(getTextElementByNode(jsonNode,"vserver-selflink"));
63 if (jsonNode.has("relationship-list")) {
64 JsonNode relationshipListNode = jsonNode.get("relationship-list");
65 if (relationshipListNode.has("relationship")) {
66 JsonNode relationshipNode = relationshipListNode.get("relationship");
67 vmEntity.getRelationshipList().setRelationships(convertRelationships(relationshipNode));
70 if (vmEntity.getRelationshipList().getRelationships() == null) {
71 vmEntity.getRelationshipList().setRelationships(Collections.emptyList());
76 public VnfEntity convertJsonToVnfEntity(String responseJson) throws IOException {
77 ObjectMapper mapper = new ObjectMapper();
78 JsonNode jsonNode = mapper.readTree(responseJson);
80 if(!jsonNode.elements().hasNext())
83 VnfEntity vnfEntity = new VnfEntity();
84 vnfEntity.setInMaint(getBooleanElementByNode(jsonNode, "in-maint"));
85 vnfEntity.setClosedLoopDisabled(getBooleanElementByNode(jsonNode, "is-closed-loop-disabled"));
86 vnfEntity.setOrchestrationStatus(getTextElementByNode(jsonNode, "orchestration-status"));
87 vnfEntity.setProvStatus(getTextElementByNode(jsonNode, "prov-status"));
88 vnfEntity.setResourceVersion(getTextElementByNode(jsonNode,"resource-version"));
89 vnfEntity.setServiceId(getTextElementByNode(jsonNode,"service-id"));
90 vnfEntity.setVnfId(getTextElementByNode(jsonNode,"vnf-id"));
91 vnfEntity.setVnfName(getTextElementByNode(jsonNode,"vnf-name"));
92 vnfEntity.setVnfType(getTextElementByNode(jsonNode,"vnf-type"));
94 if (jsonNode.has("relationship-list")) {
95 JsonNode relationshipListNode = jsonNode.get("relationship-list");
96 if (relationshipListNode.has("relationship")) {
97 JsonNode relationshipNode = relationshipListNode.get("relationship");
98 vnfEntity.getRelationshipList().setRelationships(convertRelationships(relationshipNode));
101 if (vnfEntity.getRelationshipList().getRelationships() == null) {
102 vnfEntity.getRelationshipList().setRelationships(Collections.emptyList());
107 private List<VmResourceLink> convertResultDataList(JsonNode resultData) {
108 List<VmResourceLink> vmResourceLinkList = new ArrayList<>();
109 if (resultData.isArray()) {
110 resultData.forEach(node ->{
111 if (node.has("resource-link") && node.has("resource-type")) {
112 VmResourceLink vmResourceLink = new VmResourceLink();
113 vmResourceLink.setResourceLink(getTextElementByNode(node, "resource-link"));
114 vmResourceLink.setResourceType(getTextElementByNode(node, "resource-type"));
115 vmResourceLinkList.add(vmResourceLink);
119 return vmResourceLinkList;
122 private List<Relationship> convertRelationships(JsonNode relationshipNode) {
123 List<Relationship> relationshipList = new ArrayList<>();
124 if (relationshipNode.isArray()) {
125 relationshipNode.forEach(node ->{
126 Relationship relationship = new Relationship();
127 relationship.setRelatedLink(getTextElementByNode(node, "related-link"));
128 relationship.setRelatedTo(getTextElementByNode(node, "related-to"));
129 if (node.has("related-to-property")) {
130 JsonNode relatedToPropertyNode = node.get("related-to-property");
131 relationship.setRelatedToPropertyList(
132 convertRelatedToProperty(relatedToPropertyNode));
134 relationship.setRelatedToPropertyList(Collections.emptyList());
136 if (node.has("relationship-data")) {
137 JsonNode relationshipDataNode = node.get("relationship-data");
139 .setRelationshipDataList(convertRelationshipDate(relationshipDataNode));
141 relationship.setRelationshipDataList(Collections.emptyList());
143 relationshipList.add(relationship);
146 return relationshipList;
149 private List<RelationshipData> convertRelationshipDate(JsonNode relationshipDataNode) {
150 List<RelationshipData> relationshipDataList = new ArrayList<>();
151 if (relationshipDataNode.isArray()) {
152 relationshipDataNode.forEach(node ->{
153 RelationshipData relationshipData = new RelationshipData();
154 relationshipData.setRelationshipKey(
155 getTextElementByNode(node,"relationship-key"));
156 relationshipData.setRelationshipValue(
157 getTextElementByNode(node,"relationship-value"));
158 relationshipDataList.add(relationshipData);
161 return relationshipDataList;
164 private List<RelatedToProperty> convertRelatedToProperty(JsonNode relatedToPropertyNode) {
165 List<RelatedToProperty> relatedToPropertyList = new ArrayList<>();
166 if (relatedToPropertyNode.isArray()) {
167 relatedToPropertyNode.forEach(node ->{
168 RelatedToProperty relatedToProperty = new RelatedToProperty();
170 .setPropertyKey(getTextElementByNode(node, "property-key"));
171 relatedToProperty.setPropertyValue(
172 getTextElementByNode(node, "property-value"));
173 relatedToPropertyList.add(relatedToProperty);
176 return relatedToPropertyList;
179 private String getTextElementByNode(JsonNode jsonNode,String name){
180 if(jsonNode.has(name)){
181 return jsonNode.get(name).asText();
186 private Boolean getBooleanElementByNode(JsonNode jsonNode,String name){
187 if(jsonNode.has(name)){
188 return jsonNode.get(name).asBoolean();