Switched from Dropwizard to Springboot
[holmes/common.git] / holmes-actions / src / main / java / org / onap / holmes / common / aai / AaiQuery4Ccvpn2.java
index 9b13b8e..a9d9e53 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * org.onap.holmes.common.aai
  * ================================================================================
- * Copyright (C) 2018-2019 Huawei. All rights reserved.
+ * Copyright (C) 2018-2021 Huawei, ZTE. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.holmes.common.aai;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 import lombok.extern.slf4j.Slf4j;
-import org.jvnet.hk2.annotations.Service;
 import org.onap.holmes.common.aai.config.AaiConfig;
-import org.onap.holmes.common.exception.CorrelationException;
+import org.onap.holmes.common.utils.JerseyClient;
+import org.springframework.stereotype.Service;
 
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import static org.onap.holmes.common.aai.AaiJsonParserUtil.extractJsonArray;
-import static org.onap.holmes.common.aai.AaiJsonParserUtil.get;
-import static org.onap.holmes.common.aai.AaiJsonParserUtil.getHostAddr;
-import static org.onap.holmes.common.aai.AaiJsonParserUtil.getInfo;
-import static org.onap.holmes.common.aai.AaiJsonParserUtil.getPath;
+import static org.onap.holmes.common.aai.AaiJsonParserUtil.*;
 
-@Service
 @Slf4j
+@Service
 public class AaiQuery4Ccvpn2 {
 
-    private MultivaluedMap<String, Object> headers;
+    private Map<String, Object> headers;
 
     static public AaiQuery4Ccvpn2 newInstance() {
         return new AaiQuery4Ccvpn2();
     }
 
     private AaiQuery4Ccvpn2() {
-        headers = new MultivaluedHashMap<>();
-        headers.add("X-TransactionId", AaiConfig.X_TRANSACTION_ID);
-        headers.add("X-FromAppId", AaiConfig.X_FROMAPP_ID);
-        headers.add("Authorization", AaiConfig.getAuthenticationCredentials());
-        headers.add("Accept", "application/json");
-        headers.add("Content-Type", "application/json");
+        headers = new HashMap<>();
+        headers.put("X-TransactionId", AaiConfig.X_TRANSACTION_ID);
+        headers.put("X-FromAppId", AaiConfig.X_FROMAPP_ID);
+        headers.put("Authorization", AaiConfig.getAuthenticationCredentials());
+        headers.put("Accept", "application/json");
+        headers.put("Content-Type", "application/json");
     }
 
-    private String getSiteVNFId(String siteService) throws CorrelationException {
-        Response response = get(getHostAddr(), AaiConfig.MsbConsts.AAI_SITE_RESOURCES_QUERY);
-        String resStr = response.readEntity(String.class);
-        JSONObject resObj = JSON.parseObject(resStr);
-        JSONArray siteResources = extractJsonArray(resObj, "site-resource");
+    private String getSiteVNFId(String siteService) {
+        String response = JerseyClient.newInstance()
+                .headers(headers)
+                .path(AaiConfig.MsbConsts.AAI_SITE_RESOURCES_QUERY)
+                .get(getHostAddr());
+        JsonObject resObj = JsonParser.parseString(response).getAsJsonObject();
+        JsonArray siteResources = extractJsonArray(resObj, "site-resource");
         if (siteResources != null) {
             for (int i = 0; i < siteResources.size(); i++) {
-                final JSONObject object = siteResources.getJSONObject(i);
-                if (siteService.equals(object.getString("site-resource-name"))) {
-                    JSONObject vnfInfo = getInfo(object.toJSONString(), "vnf-instance");
-                    String vnfPath = vnfInfo.getString("related-link");
+                final JsonObject object = siteResources.get(i).getAsJsonObject();
+                if (siteService.equals(object.get("site-resource-name").getAsString())) {
+                    JsonObject vnfInfo = getInfo(object.toString(), "generic-vnf");
+                    String vnfPath = vnfInfo.get("related-link").getAsString();
 
                     String vnfId = null;
-                    Pattern pattern = Pattern.compile("/aai/v\\d+/business/customers/customer/(.+)" +
-                                                              "/service-subscriptions/service-subscription/(.+)" +
-                                                              "/vnf-instances/vnf-instance/(.+)");
+                    Pattern pattern = Pattern.compile("/aai/v\\d+/network/generic-vnfs/generic-vnf/(.+)");
                     Matcher matcher = pattern.matcher(vnfPath);
                     if (matcher.find()) {
-                        vnfId = matcher.group(3);
+                        vnfId = matcher.group(1);
                     }
 
                     return vnfId;
@@ -87,32 +82,39 @@ public class AaiQuery4Ccvpn2 {
         return null;
     }
 
-    private JSONObject getServiceInstanceByVnfId(String vnfId) throws CorrelationException {
-        Response response = get(getHostAddr(), getPath(AaiConfig.MsbConsts.AAI_SITE_VNF_QUERY,
-                                                       "vnfId", vnfId));
-        String resStr = response.readEntity(String.class);
+    private JsonObject getServiceInstanceByVnfId(String vnfId) {
+        String resStr = JerseyClient.newInstance()
+                .headers(headers)
+                .path(getPath(AaiConfig.MsbConsts.AAI_SITE_VNF_QUERY,
+                "vnfId", vnfId))
+                .get(getHostAddr());
         return getInfo(resStr, "service-instance");
     }
 
-    public JSONObject getSiteServiceInstance(String siteService) throws CorrelationException {
+    public JsonObject getSiteServiceInstance(String siteService) {
         String vnfId = getSiteVNFId(siteService);
-        JSONObject serviceInstanceInfo = getServiceInstanceByVnfId(vnfId);
-        String serviceInstancePath = serviceInstanceInfo.getString("related-link");
-        Response response = get(getHostAddr(), getPath(serviceInstancePath));
-        String res = response.readEntity(String.class);
-        JSONObject instance = JSON.parseObject(res);
+        if (vnfId == null) {
+            return null;
+        }
+        JsonObject serviceInstanceInfo = getServiceInstanceByVnfId(vnfId);
+        String serviceInstancePath = serviceInstanceInfo.get("related-link").getAsString();
+        String res = JerseyClient.newInstance()
+                .headers(headers)
+                .path(getPath(serviceInstancePath))
+                .get(getHostAddr());
+        JsonObject instance = JsonParser.parseString(res).getAsJsonObject();
         String[] params = new String[2];
         Pattern pattern = Pattern.compile("/aai/v\\d+/business/customers/customer/(.+)" +
-                                                  "/service-subscriptions/service-subscription/(.+)" +
-                                                  "/service-instances/service-instance/(.+)");
+                "/service-subscriptions/service-subscription/(.+)" +
+                "/service-instances/service-instance/(.+)");
         Matcher matcher = pattern.matcher(serviceInstancePath);
         if (matcher.find()) {
             params[0] = matcher.group(1);
             params[1] = matcher.group(2);
         }
-        instance.put("globalSubscriberId", params[0]);
-        instance.put("serviceType", params[1]);
-        instance.put("vnfId", vnfId);
+        instance.addProperty("globalSubscriberId", params[0]);
+        instance.addProperty("serviceType", params[1]);
+        instance.addProperty("vnfId", vnfId);
         return instance;
     }
 }