aboutsummaryrefslogtreecommitdiffstats
path: root/ajsc-aai/src/main/java/org/openecomp/aai/util/RestController.java
diff options
context:
space:
mode:
Diffstat (limited to 'ajsc-aai/src/main/java/org/openecomp/aai/util/RestController.java')
-rw-r--r--ajsc-aai/src/main/java/org/openecomp/aai/util/RestController.java750
1 files changed, 750 insertions, 0 deletions
diff --git a/ajsc-aai/src/main/java/org/openecomp/aai/util/RestController.java b/ajsc-aai/src/main/java/org/openecomp/aai/util/RestController.java
new file mode 100644
index 0000000..bcc0a48
--- /dev/null
+++ b/ajsc-aai/src/main/java/org/openecomp/aai/util/RestController.java
@@ -0,0 +1,750 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * org.openecomp.aai
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * You may obtain a copy of the License at
+ *
+ * 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,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.aai.util;
+
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.security.KeyManagementException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import org.codehaus.groovy.util.SingleKeyHashMap;
+import org.openecomp.aai.exceptions.AAIException;
+import org.openecomp.aai.logging.AAILogger;
+import org.openecomp.aai.logging.LogLine;
+import org.openecomp.aai.util.RestObject;
+
+import com.sun.jersey.api.client.Client;
+import com.sun.jersey.api.client.ClientHandlerException;
+import com.sun.jersey.api.client.ClientResponse;
+import com.sun.jersey.api.client.GenericType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+
+public class RestController {
+
+ private static AAILogger aaiLogger = new AAILogger(RestController.class.getName());
+ private static LogLine logline = new LogLine();
+ private static final String COMPONENT = "aaiutil";
+
+ private static Client client = null;
+
+ private String restSrvrBaseURL;
+
+ //To do - Come up with helper function that will automatically
+ //generate the REST API path based on path parameter(s) and query parameter(s)!
+ public static final String REST_APIPATH_COMPLEXES = "cloud-infrastructure/complexes";
+ public static final String REST_APIPATH_COMPLEX = "cloud-infrastructure/complexes/complex/";
+ public static final String REST_APIPATH_PSERVERS = "cloud-infrastructure/pservers";
+ public static final String REST_APIPATH_PSERVER = "cloud-infrastructure/pservers/pserver/";
+ public static final String REST_APIPATH_PHYSICALLINKS = "network/physical-links/";
+ public static final String REST_APIPATH_PHYSICALLINK = "network/physical-links/physical-link/";
+ public static final String REST_APIPATH_PINTERFACES = "network/p-interfaces/";
+ public static final String REST_APIPATH_PINTERFACE = "network/p-interfaces/p-interface/";
+ public static final String REST_APIPATH_VPLSPES = "network/vpls-pes/";
+ public static final String REST_APIPATH_VPLSPE = "network/vpls-pes/vpls-pe/";
+ public static final String REST_APIPATH_UPDATE = "actions/update/";
+ public static final String REST_APIPATH_SEARCH = "search/nodes-query?search-node-type=";
+
+ public static final String REST_APIPATH_CLOUDREGION = "cloud-infrastructure/cloud-regions/cloud-region/";
+ public static final String REST_APIPATH_TENANT = "cloud-infrastructure/tenants/tenant/";
+ public static final String REST_APIPATH_VPE = "network/vpes/vpe/";
+ public static final String REST_APIPATH_VIRTUAL_DATA_CENTER = "cloud-infrastructure/virtual-data-centers/virtual-data-center/";
+ public static final String REST_APIPATH_VIRTUAL_DATA_CENTERS = "cloud-infrastructure/virtual-data-centers/";
+ //network/generic-vnfs/generic-vnf/{vnf-id}
+ public static final String REST_APIPATH_GENERIC_VNF = "network/generic-vnfs/generic-vnf/";
+ public static final String REST_APIPATH_GENERIC_VNFS = "network/generic-vnfs";
+ public static final String REST_APIPATH_L3_NETWORK = "network/l3-networks/l3-network/";
+ public static final String REST_APIPATH_L3_NETWORKS = "network/l3-networks";
+
+ public static final String REST_APIPATH_VCE = "network/vces/vce/";
+
+ public static final String REST_APIPATH_SERVICE = "service-design-and-creation/services/service/";
+
+ /**
+ * Inits the rest client.
+ *
+ * @throws AAIException the AAI exception
+ */
+ private static void initRestClient() throws AAIException
+ {
+ if (client == null) {
+ try {
+ String useBasicAuth = AAIConfig.get("aai.tools.enableBasicAuth");
+ //Client client = null;
+
+ if (useBasicAuth != null && useBasicAuth.equals("true")) {
+
+ client = HttpsAuthClient.getBasicAuthClient();
+ } else {
+ client = HttpsAuthClient.getTwoWaySSLClient();
+ }
+ }
+ catch (KeyManagementException e){
+ throw new AAIException("AAI_7117", "KeyManagementException in REST call to DB: " + e.toString());
+ } catch (Exception e) {
+ throw new AAIException("AAI_7117", " Exception in REST call to DB: " + e.toString());
+ }
+ }
+ }
+
+ /**
+ * Sets the rest srvr base URL.
+ *
+ * @param baseURL the base URL
+ * @throws AAIException the AAI exception
+ */
+ public void SetRestSrvrBaseURL(String baseURL) throws AAIException
+ {
+ if (baseURL == null)
+ throw new AAIException("AAI_7117", "REST Server base URL cannot be null.");
+ restSrvrBaseURL = baseURL;
+ }
+
+ /**
+ * Gets the rest srvr base URL.
+ *
+ * @return the rest srvr base URL
+ */
+ public String getRestSrvrBaseURL()
+ {
+ return restSrvrBaseURL;
+ }
+
+ /**
+ * To do - optimization and automation. Also make it as generic as possible.
+ *
+ * @param <T> the generic type
+ * @param t the t
+ * @param sourceID the source ID
+ * @param transId the trans id
+ * @param path the path
+ * @param restObject the rest object
+ * @param oldserver the oldserver
+ * @throws AAIException the AAI exception
+ */
+ @SuppressWarnings("unchecked")
+ public static <T> void Get(T t, String sourceID, String transId, String path, RestObject<T> restObject, boolean oldserver) throws AAIException {
+ String methodName = "Get";
+ String url="";
+ transId += ":" + UUID.randomUUID().toString();
+ aaiLogger.debug(logline, methodName + " start");
+
+ restObject.set(t);
+
+ url = AAIConfig.get(AAIConstants.AAI_SERVER_URL) + path;
+ initRestClient();
+ aaiLogger.debug(logline, url + " for the get REST API");
+
+ ClientResponse cres;
+
+ if(AAIConfig.get("aai.tools.enableBasicAuth").equals("true"))
+ { cres = client.resource(url)
+ .accept("application/json")
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .header("Authorization", HttpsAuthClient.getBasicAuthHeaderValue())
+ .type("application/json")
+ .get(ClientResponse.class);
+ }
+ else{
+ cres = client.resource(url)
+ .accept("application/json")
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .header("Authorization", HttpsAuthClient.getBasicAuthHeaderValue())
+ .type("application/json")
+ .get(ClientResponse.class);
+ }
+// System.out.println("cres.EntityInputSream()="+cres.getEntityInputStream().toString());
+// System.out.println("cres.tostring()="+cres.toString());
+// System.out.println("CLIENT RESPONSE: "+ cres.getEntity(c));
+
+ if (cres.getStatus() == 200) {
+// System.out.println(methodName + ": url=" + url);
+ t = (T) cres.getEntity(t.getClass());
+ System.out.println("CLASS: " + t.getClass());
+ restObject.set(t);
+ aaiLogger.debug(logline, methodName + "REST api GET was successfull!");
+
+ } else {
+// System.out.println(methodName + ": url=" + url + " failed with status=" + cres.getStatus());
+ throw new AAIException("AAI_7116", methodName +" with status="+cres.getStatus()+", url="+url);
+ }
+
+ }
+
+ /**
+ * Gets the.
+ *
+ * @param <T> the generic type
+ * @param t the t
+ * @param requestObj the request obj
+ * @throws AAIException the AAI exception
+ */
+ public static <T> void Get(T t, Request<T> requestObj) throws AAIException {
+ String methodName = "Get";
+ String url="";
+ String transId = requestObj.transactionId;
+ transId += ":" + UUID.randomUUID().toString();
+ aaiLogger.debug(logline, methodName + " start");
+
+ requestObj.restObj.set(t);
+
+ if (requestObj.oldServer)
+ url = AAIConfig.get(AAIConstants.AAI_SERVER_URL_BASE) + "server/" + requestObj.path;
+ else
+ url = AAIConfig.get(AAIConstants.AAI_SERVER_URL_BASE) + requestObj.path;
+ initRestClient();
+
+ try {
+ URL urlObj= new URL(url);
+ URI uri = new URI(urlObj.getProtocol(), urlObj.getUserInfo(), urlObj.getHost(), urlObj.getPort(), urlObj.getPath(), urlObj.getQuery(), urlObj.getRef());
+ url = uri.toASCIIString();
+ } catch (URISyntaxException | MalformedURLException e) {
+ throw new AAIException("AAI_7116", "bad URL");
+
+ }
+ aaiLogger.debug(logline, url + " for the get REST API");
+ ClientResponse cres;
+ if(AAIConfig.get("aai.tools.enableBasicAuth").equals("true"))
+ {
+ cres = client.resource(url)
+ .accept("application/json")
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", requestObj.fromAppId)
+ .header("Authorization", HttpsAuthClient.getBasicAuthHeaderValue())
+ .type("application/json")
+ .get(ClientResponse.class);
+ }
+
+ else{
+ cres = client.resource(url)
+ .accept("application/json")
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", requestObj.fromAppId)
+ .type("application/json")
+ .get(ClientResponse.class);
+ }
+
+
+
+
+// System.out.println("cres.EntityInputSream()="+cres.getEntityInputStream().toString());
+// System.out.println("cres.tostring()="+cres.toString());
+
+ if (cres.getStatus() == 200) {
+// System.out.println(methodName + ": url=" + url);
+ t = (T) cres.getEntity(t.getClass());
+ requestObj.restObj.set(t);
+ aaiLogger.debug(logline, methodName + "REST api GET was successfull!");
+
+ } else {
+// System.out.println(methodName + ": url=" + url + " failed with status=" + cres.getStatus());
+ throw new AAIException("AAI_7116", methodName +" with status="+cres.getStatus()+", url="+url);
+ }
+
+ }
+
+ /**
+ * Put.
+ *
+ * @param <T> the generic type
+ * @param t the t
+ * @param requestObj the request obj
+ * @throws AAIException the AAI exception
+ */
+ public static <T> void Put(T t, Request<T> requestObj) throws AAIException {
+ String methodName = "Put";
+ String url="";
+ String transId = requestObj.transactionId;
+ transId += ":" + UUID.randomUUID().toString();
+ logline.init(COMPONENT, transId, requestObj.fromAppId, methodName);
+ aaiLogger.debug(logline, methodName + " start");
+
+ initRestClient();
+
+ if (requestObj.oldServer)
+ url = AAIConfig.get(AAIConstants.AAI_SERVER_URL_BASE) + "server/" + requestObj.path;
+ else
+ url = AAIConfig.get(AAIConstants.AAI_SERVER_URL_BASE) + requestObj.path;
+
+
+ logline.add("path", url);
+
+ try {
+ URL urlObj= new URL(url);
+ URI uri = new URI(urlObj.getProtocol(), urlObj.getUserInfo(), urlObj.getHost(), urlObj.getPort(), urlObj.getPath(), urlObj.getQuery(), urlObj.getRef());
+ url = uri.toASCIIString();
+ } catch (URISyntaxException | MalformedURLException e) {
+ throw new AAIException("AAI_7116", "bad URL");
+
+ }
+ ClientResponse cres;
+ if(AAIConfig.get("aai.tools.enableBasicAuth").equals("true")){
+ cres = client.resource(url)
+ .accept("application/json")
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", requestObj.fromAppId)
+ .header("Authorization", HttpsAuthClient.getBasicAuthHeaderValue())
+ .type("application/json")
+ .entity(t)
+ .put(ClientResponse.class);
+ }
+ else{
+ cres = client.resource(url)
+ .accept("application/json")
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", requestObj.fromAppId)
+ .type("application/json")
+ .entity(t)
+ .put(ClientResponse.class);
+ }
+
+// System.out.println("cres.tostring()="+cres.toString());
+
+ int statuscode = cres.getStatus();
+ if ( statuscode >= 200 && statuscode <= 299 ) {
+// aaiLogger.debug(logline, methodName+": url=" + url + ", request=" + path);
+ aaiLogger.info(logline, true, "0");
+ } else {
+// System.out.println(methodName + ": with url="+url+ " failed with status="+ cres.getStatus() + ":" + cres.getEntity(String.class));
+ aaiLogger.info(logline, false, "AAI_7116");
+ throw new AAIException("AAI_7116", methodName +" with status="+statuscode+", url="+url);
+ }
+ }
+
+ /**
+ * Multiple Generic Get.
+ *
+ * @param <T> the generic type
+ * @param t the t
+ * @param sourceID the source ID
+ * @param transId the trans id
+ * @param path the path
+ * @param oldserver the oldserver
+ * @return the list
+ * @throws AAIException the AAI exception
+ */
+ public static <T> List<T> Get(T t, String sourceID, String transId, String path, boolean oldserver) throws AAIException {
+ String methodName = "Get";
+ String url="";
+ transId += ":" + UUID.randomUUID().toString();
+ aaiLogger.debug(logline, methodName + " start");
+
+ List<T> list;
+
+ try {
+ url = AAIConfig.get(AAIConstants.AAI_SERVER_URL) + path;
+ initRestClient();
+ aaiLogger.debug(logline, url + " for the get REST API");
+ ClientResponse cres = client.resource(url)
+ .accept("application/json")
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .type("application/json")
+ .get(ClientResponse.class);
+
+
+ if (cres.getStatus() == 200) {
+ String datainJson = cres.getEntity(String.class);
+ list = mapJsonToObjectList(t, datainJson, t.getClass());
+
+ aaiLogger.debug(logline, methodName + "REST api GET was successfull!");
+ return list;
+
+ } else {
+ System.out.println(methodName + ": url=" + url + " failed with status=" + cres.getStatus());
+ throw new AAIException("AAI_7116", methodName +" with status="+cres.getStatus()+", url="+url);
+ }
+ } catch (AAIException e) {
+ throw new AAIException("AAI_7116", methodName + " with url="+url+ ", Exception: " + e.toString());
+ } catch (Exception e)
+ {
+ throw new AAIException("AAI_7116", methodName + " with url="+url+ ", Exception: " + e.toString());
+
+ }
+
+ }
+
+ /**
+ * Map json to object list.
+ *
+ * @param <T> the generic type
+ * @param typeDef the type def
+ * @param json the json
+ * @param clazz the clazz
+ * @return the list
+ * @throws Exception the exception
+ */
+ private static <T> List<T> mapJsonToObjectList(T typeDef,String json, Class clazz) throws Exception
+ {
+ List<T> list;
+ ObjectMapper mapper = new ObjectMapper();
+ System.out.println(json);
+ TypeFactory t = TypeFactory.defaultInstance();
+ list = mapper.readValue(json, t.constructCollectionType(ArrayList.class,clazz));
+
+ return list;
+ }
+
+ /**
+ * Put.
+ *
+ * @param <T> the generic type
+ * @param t the t
+ * @param sourceID the source ID
+ * @param transId the trans id
+ * @param path the path
+ * @throws AAIException the AAI exception
+ */
+ public static <T> void Put(T t, String sourceID, String transId, String path) throws AAIException {
+ Put( t, sourceID, transId, path, false);
+ }
+
+ /**
+ * Put.
+ *
+ * @param <T> the generic type
+ * @param t the t
+ * @param sourceID the source ID
+ * @param transId the trans id
+ * @param path the path
+ * @param oldserver the oldserver
+ * @throws AAIException the AAI exception
+ */
+ public static <T> void Put(T t, String sourceID, String transId, String path, boolean oldserver) throws AAIException {
+ String methodName = "Put";
+ String url="";
+ transId += ":" + UUID.randomUUID().toString();
+ logline.init(COMPONENT, transId, sourceID, methodName);
+ logline.add("path", path);
+ aaiLogger.debug(logline, methodName + " start");
+
+ initRestClient();
+
+ url = AAIConfig.get(AAIConstants.AAI_SERVER_URL) + path;
+ ClientResponse cres;
+ if(AAIConfig.get("aai.tools.enableBasicAuth").equals("true")){
+ cres = client.resource(url)
+ .accept("application/json")
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .header("Authorization", HttpsAuthClient.getBasicAuthHeaderValue())
+ .type("application/json")
+ .entity(t)
+ .put(ClientResponse.class);
+ }
+
+ else{
+ cres = client.resource(url)
+ .accept("application/json")
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .type("application/json")
+ .entity(t)
+ .put(ClientResponse.class);
+
+ }
+ int statuscode = cres.getStatus();
+ if ( statuscode >= 200 && statuscode <= 299 ) {
+ aaiLogger.info(logline, true, "0");
+ } else {
+ aaiLogger.info(logline, false, "AAI_7116");
+ throw new AAIException("AAI_7116", methodName +" with status="+statuscode+", url="+url + ", msg=" + cres.getEntity(String.class));
+ }
+ }
+
+ /**
+ * Delete.
+ *
+ * @param requestObj the request obj
+ * @throws AAIException the AAI exception
+ */
+ public static void Delete(Request requestObj) throws AAIException {
+ String methodName = "Delete";
+
+ String url="";
+ String transId = requestObj.transactionId;
+ transId += ":" + UUID.randomUUID().toString();
+ logline.init(COMPONENT, transId, requestObj.fromAppId, methodName);
+ aaiLogger.debug(logline, methodName + " start");
+
+ initRestClient();
+
+ if (requestObj.oldServer)
+ url = AAIConfig.get(AAIConstants.AAI_SERVER_URL_BASE) + "servers/" + requestObj.path;
+ else
+ url = AAIConfig.get(AAIConstants.AAI_SERVER_URL_BASE) + requestObj.path;
+
+
+ logline.add("path", url);
+
+ try {
+ URL urlObj= new URL(url);
+ URI uri = new URI(urlObj.getProtocol(), urlObj.getUserInfo(), urlObj.getHost(), urlObj.getPort(), urlObj.getPath(), urlObj.getQuery(), urlObj.getRef());
+ url = uri.toASCIIString();
+ } catch (URISyntaxException | MalformedURLException e) {
+ throw new AAIException("AAI_7116", "bad URL");
+
+ }
+ ClientResponse cres;
+ if(AAIConfig.get("aai.tools.enableBasicAuth").equals("true")){
+ cres = client.resource(url)
+ .accept("application/json")
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", requestObj.fromAppId)
+ .header("Authorization", HttpsAuthClient.getBasicAuthHeaderValue())
+ .type("application/json")
+ .entity("{}")
+ .delete(ClientResponse.class);
+ }
+ else{
+ cres = client.resource(url)
+ .accept("application/json")
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", requestObj.fromAppId)
+ .type("application/json")
+ .entity("{}")
+ .delete(ClientResponse.class);
+ }
+// System.out.println("cres.tostring()="+cres.toString());
+
+ if (cres.getStatus() == 204) {
+// aaiLogger.debug(logline, methodName+": url=" + url);
+ aaiLogger.info(logline, true, "0");
+ } else {
+// System.out.println(methodName + ": with url="+url+ " failed with status="+ cres.getStatus() + ":" + cres.getEntity(String.class));
+ aaiLogger.info(logline, false, "AAI_7116");
+ throw new AAIException("AAI_7116", methodName +" with status="+cres.getStatus()+", url="+url);
+ }
+
+ }
+
+ /**
+ * Delete.
+ *
+ * @param sourceID the source ID
+ * @param transId the trans id
+ * @param path the path
+ * @throws AAIException the AAI exception
+ */
+ public static void Delete(String sourceID, String transId, String path) throws AAIException {
+ String methodName = "Delete";
+ String url="";
+ transId += ":" + UUID.randomUUID().toString();
+ logline.init(COMPONENT, transId, sourceID, methodName);
+ aaiLogger.debug(logline, methodName + " start");
+ logline.add("path", path);
+
+ initRestClient();
+ String request = "{}";
+ url = AAIConfig.get(AAIConstants.AAI_SERVER_URL) + path;
+
+ ClientResponse cres;
+ if(AAIConfig.get("aai.tools.enableBasicAuth").equals("true")){
+ cres = client.resource(url)
+ .accept("application/json")
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .header("Authorization", HttpsAuthClient.getBasicAuthHeaderValue())
+ .type("application/json")
+ .entity(request)
+ .delete(ClientResponse.class);
+ }
+ else{
+ cres = client.resource(url)
+ .accept("application/json")
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .type("application/json")
+ .entity(request)
+ .delete(ClientResponse.class);
+ }
+// System.out.println("cres.tostring()="+cres.toString());
+
+ if (cres.getStatus() == 404) { // resource not found
+ String msg = "Resource does not exist...: " + cres.getStatus()
+ + ":" + cres.getEntity(String.class);
+ //System.out.println("\n" + msg);
+ logline.add("msg", msg );
+ aaiLogger.info(logline, false, "AAI_7404");
+ throw new AAIException("AAI_7404", "Resource does not exist");
+ } else if (cres.getStatus() == 200 || cres.getStatus() == 204){
+ //System.out.println("\nResource " + url + " deleted");
+ logline.add("msg", "Resource " + url + " deleted");
+ aaiLogger.info(logline, true, "0");
+ } else {
+ String msg = "Deleting Resource failed: " + cres.getStatus()
+ + ":" + cres.getEntity(String.class);
+ //System.out.println("\n" + msg);
+ logline.add("msg", msg);
+ aaiLogger.info(logline, false, "AAI_7116");
+ throw new AAIException("AAI_7116", "Error during DELETE");
+ }
+ /*if (cres.getStatus() == 204) {
+// aaiLogger.debug(logline, methodName+": url=" + url);
+ aaiLogger.info(logline, true, "0");
+ } else {
+// System.out.println(methodName + ": with url="+url+ " failed with status="+ cres.getStatus() + ":" + cres.getEntity(String.class));
+ aaiLogger.info(logline, false, e.getErrorObject().getErrorCodeString());
+ throw new AAIException("AAI_7116", methodName +" with status="+cres.getStatus()+", url="+url);
+ } */
+ }
+
+ /**
+ * Post.
+ *
+ * @param <T> the generic type
+ * @param t the t
+ * @param sourceID the source ID
+ * @param transId the trans id
+ * @param path the path
+ * @return the string
+ * @throws Exception the exception
+ */
+ public static <T> String Post(T t, String sourceID, String transId, String path) throws Exception {
+ String methodName = "Post";
+ String url="";
+ transId += ":" + UUID.randomUUID().toString();
+ logline.init(COMPONENT, transId, sourceID, methodName);
+ logline.add("path", path);
+ aaiLogger.debug(logline, methodName + " start");
+
+ try {
+
+ initRestClient();
+
+ url = AAIConfig.get(AAIConstants.AAI_SERVER_URL) + path;
+
+ ClientResponse cres = client.resource(url)
+ .accept("application/json")
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .type("application/json")
+ .entity(t)
+ .post(ClientResponse.class);
+
+ int statuscode = cres.getStatus();
+ if ( statuscode >= 200 && statuscode <= 299 ) {
+ // aaiLogger.debug(logline, methodName+": url=" + url + ", request=" + path);
+
+ aaiLogger.debug(logline, methodName + "REST api POST was successful!");
+ aaiLogger.info(logline, true, "0");
+ return cres.getEntity(String.class);
+ } else {
+ // System.out.println(methodName + ": with url="+url+ " failed with status="+ cres.getStatus() + ":" + cres.getEntity(String.class));
+ aaiLogger.info(logline, false, "AAI_7116");
+ throw new AAIException("AAI_7116", methodName +" with status="+statuscode+", url="+url + ", msg=" + cres.getEntity(String.class));
+ }
+
+ } catch (AAIException e) {
+ throw new AAIException("AAI_7116", methodName + " with url="+url+ ", Exception: " + e.toString());
+ } catch (Exception e)
+ {
+ throw new AAIException("AAI_7116", methodName + " with url="+url+ ", Exception: " + e.toString());
+
+ }
+ }
+
+
+ /**
+ * Gets the single instance of RestController.
+ *
+ * @param <T> the generic type
+ * @param clazz the clazz
+ * @return single instance of RestController
+ * @throws IllegalAccessException the illegal access exception
+ * @throws InstantiationException the instantiation exception
+ */
+ public static <T> T getInstance(Class<T> clazz) throws IllegalAccessException, InstantiationException
+ {
+ return clazz.newInstance();
+ }
+
+ /**
+ * Does resource exist.
+ *
+ * @param <T> the generic type
+ * @param resourcePath the resource path
+ * @param resourceClassName the resource class name
+ * @param fromAppId the from app id
+ * @param transId the trans id
+ * @return the t
+ */
+ /*
+ * DoesResourceExist
+ *
+ * To check whether a resource exist or get a copy of the existing version of the resource
+ *
+ * Resourcepath: should contain the qualified resource path (including encoded unique key identifier value),
+ * resourceClassName: is the canonical name of the resource class name,
+ * fromAppId:
+ * transId:
+ *
+ * Will return null (if the resource doesn’t exist) (or)
+ * Will return the specified resource from the Graph.
+ *
+ * Example:
+ * LogicalLink llink = new LogicalLink();
+ * String resourceClassName = llink.getClass().getCanonicalName();
+ * llink = RestController.DoesResourceExist("network/logical-links/logical-link/" + <encoded-link-name>, resourceClassName, fromAppId, transId);
+ */
+ public static <T> T DoesResourceExist(String resourcePath, String resourceClassName, String fromAppId, String transId) {
+ String methodName = "DoesResourceExist";
+ System.out.println(methodName);
+
+ logline.init(COMPONENT, transId, fromAppId, "DoesResourceExist");
+
+ try {
+
+ RestObject<T> restObj = new RestObject<T>();
+ @SuppressWarnings("unchecked")
+ T resourceObj = (T)getInstance(Class.forName(resourceClassName));
+ restObj.set(resourceObj);
+ RestController.<T>Get(resourceObj, fromAppId, transId, resourcePath, restObj, false);
+
+ resourceObj = restObj.get();
+ if (resourceObj != null)
+ return resourceObj;
+
+ } catch (AAIException e) {
+
+ } catch (ClientHandlerException che) {
+
+ }catch (Exception e) {
+
+ }
+
+ return null;
+ }
+
+}