summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFiete Ostkamp <Fiete.Ostkamp@telekom.de>2024-09-16 16:52:32 +0200
committerFiete Ostkamp <Fiete.Ostkamp@telekom.de>2024-09-17 11:36:04 +0200
commit9817670cf1b469b887e16e0a80dc855cf97e859f (patch)
treec0f75d6e63e884c1c47d20e9cde22a83e50062b6
parent089252de752d987756ae339b4a719ad689d02aa9 (diff)
Migrate remnants of jersey 1 to 2 in aai-common
- use org.glassfish.jersey instead of com.sun.jersey Issue-ID: AAI-3990 Change-Id: Ice5731a241be3adf03a64a66fe6f595e5970c7c0 Signed-off-by: Fiete Ostkamp <Fiete.Ostkamp@telekom.de>
-rw-r--r--aai-core/pom.xml15
-rw-r--r--aai-core/src/main/java/org/onap/aai/util/HttpsAuthClient.java49
-rw-r--r--aai-core/src/main/java/org/onap/aai/util/HttpsAuthExternalClient.java91
-rw-r--r--aai-core/src/main/java/org/onap/aai/util/RestController.java162
-rw-r--r--aai-els-onap-logging/pom.xml15
-rw-r--r--aai-els-onap-logging/src/main/java/org/onap/aai/aailog/filter/RestControllerClientRequestLoggingInterceptor.java (renamed from aai-els-onap-logging/src/main/java/org/onap/aai/aailog/filter/RestControllerClientLoggingInterceptor.java)77
-rw-r--r--aai-els-onap-logging/src/main/java/org/onap/aai/aailog/filter/RestControllerClientResponseLoggingInterceptor.java91
-rw-r--r--aai-els-onap-logging/src/test/java/org/onap/aai/aailog/filter/RestControllerClientLoggingInterceptorTest.java24
-rw-r--r--aai-parent/pom.xml21
9 files changed, 297 insertions, 248 deletions
diff --git a/aai-core/pom.xml b/aai-core/pom.xml
index 2f5908b4..e53d233c 100644
--- a/aai-core/pom.xml
+++ b/aai-core/pom.xml
@@ -250,16 +250,12 @@ limitations under the License.
<artifactId>jackson-module-jaxb-annotations</artifactId>
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-core</artifactId>
- </dependency>
- <dependency>
- <groupId>com.sun.jersey</groupId>
+ <groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-json</artifactId>
+ <groupId>org.glassfish.jersey.media</groupId>
+ <artifactId>jersey-media-json-jackson</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
@@ -417,11 +413,6 @@ limitations under the License.
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-configuration2</artifactId>
- <version>2.7</version>
- </dependency>
</dependencies>
<!-- Plugins and repositories -->
diff --git a/aai-core/src/main/java/org/onap/aai/util/HttpsAuthClient.java b/aai-core/src/main/java/org/onap/aai/util/HttpsAuthClient.java
index f8f0b65e..b31bfcb8 100644
--- a/aai-core/src/main/java/org/onap/aai/util/HttpsAuthClient.java
+++ b/aai-core/src/main/java/org/onap/aai/util/HttpsAuthClient.java
@@ -20,13 +20,6 @@
package org.onap.aai.util;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.config.ClientConfig;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
-import com.sun.jersey.api.json.JSONConfiguration;
-import com.sun.jersey.client.urlconnection.HTTPSProperties;
-
import java.io.FileInputStream;
import java.io.IOException;
import java.security.KeyManagementException;
@@ -41,8 +34,16 @@ import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
-
-import org.onap.aai.aailog.filter.RestControllerClientLoggingInterceptor;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.apache.commons.configuration2.JSONConfiguration;
+import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.client.ClientProperties;
+import org.onap.aai.aailog.filter.RestControllerClientRequestLoggingInterceptor;
+import org.onap.aai.aailog.filter.RestControllerClientResponseLoggingInterceptor;
import org.onap.aai.exceptions.AAIException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -62,12 +63,10 @@ public class HttpsAuthClient {
System.out.println("Making Jersey https call...");
Client client = HttpsAuthClient.getClient();
- ClientResponse res = client.resource(url).accept("application/json").header("X-TransactionId", "PROV001")
- .header("X-FromAppId", "AAI").type("application/json").get(ClientResponse.class);
-
- // System.out.println("Jersey result: ");
- // System.out.println(res.getEntity(String.class).toString());
-
+ Response res = client.target(url)
+ .request(MediaType.APPLICATION_JSON)
+ .header("X-TransactionId", "PROV001")
+ .header("X-FromAppId", "AAI").get();
} catch (KeyManagementException e) {
logger.debug("HttpsAuthClient KeyManagement error : {}", e.getMessage());
} catch (Exception e) {
@@ -89,9 +88,9 @@ public class HttpsAuthClient {
String keystorePassword) throws KeyManagementException, UnrecoverableKeyException, CertificateException,
NoSuchAlgorithmException, KeyStoreException, IOException {
- ClientConfig config = new DefaultClientConfig();
- config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
- config.getClasses().add(org.onap.aai.restcore.CustomJacksonJaxBJsonProvider.class);
+ ClientConfig config = new ClientConfig();
+ config.register(org.onap.aai.restcore.CustomJacksonJaxBJsonProvider.class);
+
SSLContext ctx = null;
try {
System.setProperty("javax.net.ssl.trustStore", truststorePath);
@@ -117,20 +116,16 @@ public class HttpsAuthClient {
}
ctx.init(kmf.getKeyManagers(), null, null);
- config.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES,
- new HTTPSProperties(new HostnameVerifier() {
- @Override
- public boolean verify(String s, SSLSession sslSession) {
- return true;
- }
- }, ctx));
+ config.property("jersey.config.client.ssl.context", ctx);
+ config.property("jersey.config.client.hostname.verifier", (HostnameVerifier) (s, sslSession) -> true);
} catch (Exception e) {
System.out.println("Error setting up config: exiting " + e.getMessage());
throw e;
}
- Client client = Client.create(config);
- client.addFilter(new RestControllerClientLoggingInterceptor());
+ Client client = ClientBuilder.newClient(config);
+ client.register(new RestControllerClientRequestLoggingInterceptor());
+ client.register(new RestControllerClientResponseLoggingInterceptor());
// uncomment this line to get more logging for the request/response
// client.addFilter(new LoggingFilter(System.out));
diff --git a/aai-core/src/main/java/org/onap/aai/util/HttpsAuthExternalClient.java b/aai-core/src/main/java/org/onap/aai/util/HttpsAuthExternalClient.java
index 53e2d958..1ace66c7 100644
--- a/aai-core/src/main/java/org/onap/aai/util/HttpsAuthExternalClient.java
+++ b/aai-core/src/main/java/org/onap/aai/util/HttpsAuthExternalClient.java
@@ -20,21 +20,16 @@
package org.onap.aai.util;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.config.ClientConfig;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
-import com.sun.jersey.api.json.JSONConfiguration;
-import com.sun.jersey.client.urlconnection.HTTPSProperties;
-
import java.io.FileInputStream;
-import java.security.KeyStore;
+
+import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.SslConfigurator;
import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
-import javax.net.ssl.TrustManagerFactory;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
public class HttpsAuthExternalClient {
@@ -48,63 +43,45 @@ public class HttpsAuthExternalClient {
*/
public static Client getClient(String keystoreFileName, String keystorePassword) throws Exception {
- ClientConfig config = new DefaultClientConfig();
- config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
- config.getClasses().add(org.onap.aai.restcore.CustomJacksonJaxBJsonProvider.class);
- Client client = null;
- SSLContext ctx = null;
- String truststore_path = AAIConstants.AAI_HOME_ETC_AUTH + AAIConfig.get(AAIConstants.AAI_TRUSTSTORE_FILENAME);
- try (FileInputStream tin = new FileInputStream(truststore_path)) {
- String truststore_password = AAIConfig.get(AAIConstants.AAI_TRUSTSTORE_PASSWD);
- String keystore_path = AAIConstants.AAI_HOME_ETC_AUTH + keystoreFileName;
- String keystore_password = keystorePassword;
- // System.setProperty("javax.net.ssl.trustStore", truststore_path);
- // System.setProperty("javax.net.ssl.trustStorePassword", truststore_password);
- HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
- public boolean verify(String string, SSLSession ssls) {
- return true;
- }
- });
+ ClientConfig config = new ClientConfig();
+ config.register(org.onap.aai.restcore.CustomJacksonJaxBJsonProvider.class);
- ctx = SSLContext.getInstance("TLS");
- KeyManagerFactory kmf = null;
+ SSLContext sslContext = null;
+ String truststorePath = AAIConstants.AAI_HOME_ETC_AUTH + AAIConfig.get(AAIConstants.AAI_TRUSTSTORE_FILENAME);
+ try (FileInputStream tin = new FileInputStream(truststorePath)) {
+ String truststorePassword = AAIConfig.get(AAIConstants.AAI_TRUSTSTORE_PASSWD);
+ String keystorePath = AAIConstants.AAI_HOME_ETC_AUTH + keystoreFileName;
- /****
- * kmf = KeyManagerFactory.getInstance("SunX509");
- * FileInputStream fin = new FileInputStream(keystore_path);
- * KeyStore ks = KeyStore.getInstance("PKCS12");
- * char[] pwd = keystore_password.toCharArray();
- * ks.load(fin, pwd);
- * kmf.init(ks, pwd);
- ***/
+ SslConfigurator sslConfig = SslConfigurator.newInstance()
+ .trustStoreFile(truststorePath)
+ .trustStorePassword(truststorePassword)
+ .keyStoreFile(keystorePath)
+ .keyStorePassword(keystorePassword);
- String alg = TrustManagerFactory.getDefaultAlgorithm();
- TrustManagerFactory tmf = TrustManagerFactory.getInstance(alg);
+ sslContext = sslConfig.createSSLContext();
- KeyStore ts = KeyStore.getInstance("PKCS12");
- char[] tpwd = truststore_password.toCharArray();
- ts.load(tin, tpwd);
- tmf.init(ts);
+ HostnameVerifier hostnameVerifier = new HostnameVerifier() {
+ @Override
+ public boolean verify(String s, SSLSession sslSession) {
+ return true;
+ }
+ };
- // ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
- // Updating key manager to null, to disable two way SSL
- ctx.init(null, tmf.getTrustManagers(), null);
+ Client client = ClientBuilder.newBuilder()
+ .withConfig(config)
+ .sslContext(sslContext)
+ .hostnameVerifier(hostnameVerifier)
+ .build();
- config.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES,
- new HTTPSProperties(new HostnameVerifier() {
- @Override
- public boolean verify(String s, SSLSession sslSession) {
- return true;
- }
- }, ctx));
+ // Uncomment this line to get more logging for the request/response
+ // client.register(new
+ // LoggingFeature(Logger.getLogger(LoggingFeature.DEFAULT_LOGGER_NAME),
+ // Level.INFO, LoggingFeature.Verbosity.PAYLOAD_ANY, 8192));
- client = Client.create(config);
- // uncomment this line to get more logging for the request/response
- // client.addFilter(new LoggingFilter(System.out));
+ return client;
} catch (Exception e) {
throw e;
}
- return client;
}
}
diff --git a/aai-core/src/main/java/org/onap/aai/util/RestController.java b/aai-core/src/main/java/org/onap/aai/util/RestController.java
index 1b050829..b72b5af5 100644
--- a/aai-core/src/main/java/org/onap/aai/util/RestController.java
+++ b/aai-core/src/main/java/org/onap/aai/util/RestController.java
@@ -22,9 +22,8 @@ package org.onap.aai.util;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.type.TypeFactory;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientHandlerException;
-import com.sun.jersey.api.client.ClientResponse;
+
+import javax.ws.rs.client.Entity;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
@@ -37,6 +36,11 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
+import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
import org.onap.aai.exceptions.AAIException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -69,8 +73,7 @@ public class RestController implements RestControllerInterface {
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_VIRTUAL_DATA_CENTER =
- "cloud-infrastructure/virtual-data-centers/virtual-data-center/";
+ 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/";
public static final String REST_APIPATH_GENERIC_VNF = "network/generic-vnfs/generic-vnf/";
public static final String REST_APIPATH_GENERIC_VNFS = "network/generic-vnfs";
@@ -173,8 +176,8 @@ public class RestController implements RestControllerInterface {
url = AAIConfig.get(AAIConstants.AAI_OLDSERVER_URL) + path;
} else {
if (overrideLocalHost == null) {
- overrideLocalHost =
- AAIConfig.get(AAIConstants.AAI_LOCAL_OVERRIDE, AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT);
+ overrideLocalHost = AAIConfig.get(AAIConstants.AAI_LOCAL_OVERRIDE,
+ AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT);
}
if (AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT.equals(overrideLocalHost)) {
url = String.format(AAIConstants.AAI_LOCAL_REST, port,
@@ -185,21 +188,26 @@ public class RestController implements RestControllerInterface {
}
}
LOGGER.debug(url + " for the get REST API");
- ClientResponse cres = client.resource(url).accept("application/json").header("X-TransactionId", transId)
- .header("X-FromAppId", sourceID).header("Real-Time", "true").type("application/json")
- .get(ClientResponse.class);
+ Response response = client.target(url)
+ .request(MediaType.APPLICATION_JSON)
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .header("Real-Time", "true")
+ .get();
- // System.out.println("cres.EntityInputSream()="+cres.getEntityInputStream().toString());
- // System.out.println("cres.tostring()="+cres.toString());
+ // System.out.println("response.EntityInputSream()="+response.getEntityInputStream().toString());
+ // System.out.println("response.tostring()="+response.toString());
- if (cres.getStatus() == 200) {
+ if (response.getStatus() == 200) {
// System.out.println(methodName + ": url=" + url);
- t = (T) cres.getEntity(t.getClass());
+ T entity = response.readEntity((Class<T>) t.getClass());
+ restObject.set(entity);
restObject.set(t);
LOGGER.debug(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);
+ // System.out.println(methodName + ": url=" + url + " failed with status=" +
+ // response.getStatus());
+ throw new AAIException("AAI_7116", methodName + " with status=" + response.getStatus() + ", url=" + url);
}
}
@@ -229,21 +237,25 @@ public class RestController implements RestControllerInterface {
url = AAIConfig.get(AAIConstants.AAI_SERVER_URL_BASE) + apiVersion + "/" + path;
LOGGER.debug(url + " for the get REST API");
- ClientResponse cres = client.resource(url).accept("application/json").header("X-TransactionId", transId)
- .header("X-FromAppId", sourceID).header("Real-Time", "true").type("application/json")
- .get(ClientResponse.class);
+ Response response = client.target(url)
+ .request(MediaType.APPLICATION_JSON)
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .header("Real-Time", "true")
+ .get();
- // System.out.println("cres.EntityInputSream()="+cres.getEntityInputStream().toString());
- // System.out.println("cres.tostring()="+cres.toString());
+ // System.out.println("response.EntityInputSream()="+response.getEntityInputStream().toString());
+ // System.out.println("response.tostring()="+response.toString());
- if (cres.getStatus() == 200) {
+ if (response.getStatus() == 200) {
// System.out.println(methodName + ": url=" + url);
- t = (T) cres.getEntity(t.getClass());
- restObject.set(t);
+ T entity = response.readEntity((Class<T>) t.getClass());
+ restObject.set(entity);
LOGGER.debug(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);
+ // System.out.println(methodName + ": url=" + url + " failed with status=" +
+ // response.getStatus());
+ throw new AAIException("AAI_7116", methodName + " with status=" + response.getStatus() + ", url=" + url);
}
}
@@ -318,8 +330,8 @@ public class RestController implements RestControllerInterface {
url = AAIConfig.get(AAIConstants.AAI_OLDSERVER_URL) + path;
} else {
if (overrideLocalHost == null) {
- overrideLocalHost =
- AAIConfig.get(AAIConstants.AAI_LOCAL_OVERRIDE, AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT);
+ overrideLocalHost = AAIConfig.get(AAIConstants.AAI_LOCAL_OVERRIDE,
+ AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT);
}
if (AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT.equals(overrideLocalHost)) {
url = String.format(AAIConstants.AAI_LOCAL_REST, port,
@@ -330,18 +342,21 @@ public class RestController implements RestControllerInterface {
}
}
- ClientResponse cres = client.resource(url).accept("application/json").header("X-TransactionId", transId)
- .header("X-FromAppId", sourceID).header("Real-Time", "true").type("application/json").entity(t)
- .put(ClientResponse.class);
+ Response response = client.target(url)
+ .request(MediaType.APPLICATION_JSON)
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .header("Real-Time", "true")
+ .put(Entity.entity(t, MediaType.APPLICATION_JSON));
- // System.out.println("cres.tostring()="+cres.toString());
+ // System.out.println("response.tostring()="+response.toString());
- int statuscode = cres.getStatus();
+ int statuscode = response.getStatus();
if (statuscode >= 200 && statuscode <= 299) {
LOGGER.debug(methodName + ": url=" + url + ", request=" + path);
} else {
throw new AAIException("AAI_7116", methodName + " with status=" + statuscode + ", url=" + url + ", msg="
- + cres.getEntity(String.class));
+ + response.readEntity(String.class));
}
}
@@ -365,18 +380,21 @@ public class RestController implements RestControllerInterface {
url = AAIConfig.get(AAIConstants.AAI_SERVER_URL_BASE) + apiVersion + "/" + path;
- ClientResponse cres = client.resource(url).accept("application/json").header("X-TransactionId", transId)
- .header("X-FromAppId", sourceID).header("Real-Time", "true").type("application/json").entity(t)
- .put(ClientResponse.class);
+ Response response = client.target(url)
+ .request(MediaType.APPLICATION_JSON)
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .header("Real-Time", "true")
+ .put(Entity.entity(t, MediaType.APPLICATION_JSON));
- // System.out.println("cres.tostring()="+cres.toString());
+ // System.out.println("response.tostring()="+response.toString());
- int statuscode = cres.getStatus();
+ int statuscode = response.getStatus();
if (statuscode >= 200 && statuscode <= 299) {
LOGGER.debug(methodName + ": url=" + url + ", request=" + path);
} else {
throw new AAIException("AAI_7116", methodName + " with status=" + statuscode + ", url=" + url + ", msg="
- + cres.getEntity(String.class));
+ + response.getEntity());
}
}
@@ -410,16 +428,20 @@ public class RestController implements RestControllerInterface {
url = String.format(AAIConstants.AAI_LOCAL_REST_OVERRIDE, overrideLocalHost,
AAIConfig.get(AAIConstants.AAI_DEFAULT_API_VERSION_PROP)) + path;
}
- ClientResponse cres = client.resource(url).accept("application/json").header("X-TransactionId", transId)
- .header("X-FromAppId", sourceID).header("Real-Time", "true").type("application/json").entity(request)
- .delete(ClientResponse.class);
-
- if (cres.getStatus() == 404) { // resource not found
- LOGGER.info("Resource does not exist...: " + cres.getStatus() + ":" + cres.getEntity(String.class));
- } else if (cres.getStatus() == 200 || cres.getStatus() == 204) {
+ Response response = client.target(url)
+ .request(MediaType.APPLICATION_JSON)
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .header("Real-Time", "true")
+ .delete();
+
+ if (response.getStatus() == 404) { // resource not found
+ LOGGER.info(
+ "Resource does not exist...: " + response.getStatus() + ":" + response.readEntity(String.class));
+ } else if (response.getStatus() == 200 || response.getStatus() == 204) {
LOGGER.info("Resource " + url + " deleted");
} else {
- LOGGER.error("Deleting Resource failed: " + cres.getStatus() + ":" + cres.getEntity(String.class));
+ LOGGER.error("Deleting Resource failed: " + response.getStatus() + ":" + response.readEntity(String.class));
throw new AAIException("AAI_7116", "Error during DELETE");
}
}
@@ -451,17 +473,20 @@ public class RestController implements RestControllerInterface {
url = AAIConfig.get(AAIConstants.AAI_SERVER_URL_BASE) + apiVersion + "/" + path;
- ClientResponse cres = client.resource(url).accept("application/json").header("X-TransactionId", transId)
- .header("X-FromAppId", sourceID).header("Real-Time", "true").type("application/json").entity(t)
- .post(ClientResponse.class);
+ Response response = client.target(url)
+ .request(MediaType.APPLICATION_JSON)
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .header("Real-Time", "true")
+ .post(Entity.entity(t, MediaType.APPLICATION_JSON));
- int statuscode = cres.getStatus();
+ int statuscode = response.getStatus();
if (statuscode >= 200 && statuscode <= 299) {
LOGGER.debug(methodName + "REST api POST was successful!");
- return cres.getEntity(String.class);
+ return response.readEntity(String.class);
} else {
throw new AAIException("AAI_7116", methodName + " with status=" + statuscode + ", url=" + url + ", msg="
- + cres.getEntity(String.class));
+ + response.readEntity(String.class));
}
} catch (AAIException e) {
@@ -503,17 +528,17 @@ public class RestController implements RestControllerInterface {
*/
/*
* 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();
@@ -536,7 +561,7 @@ public class RestController implements RestControllerInterface {
} catch (AAIException e) {
- } catch (ClientHandlerException che) {
+ } catch (ClientErrorException che) {
} catch (Exception e) {
@@ -560,13 +585,13 @@ public class RestController implements RestControllerInterface {
transId += ":" + UUID.randomUUID().toString();
int numRetries = 5;
- ClientResponse cres = null;
+ Response response = null;
int statusCode = -1;
try {
if (overrideLocalHost == null) {
- overrideLocalHost =
- AAIConfig.get(AAIConstants.AAI_LOCAL_OVERRIDE, AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT);
+ overrideLocalHost = AAIConfig.get(AAIConstants.AAI_LOCAL_OVERRIDE,
+ AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT);
}
if (AAIConstants.AAI_LOCAL_OVERRIDE_DEFAULT.equals(overrideLocalHost)) {
url = String.format(AAIConstants.AAI_LOCAL_REST, AAIConstants.AAI_RESOURCES_PORT,
@@ -578,11 +603,14 @@ public class RestController implements RestControllerInterface {
do {
- cres = client.resource(url).accept("application/json").header("X-TransactionId", transId)
- .header("X-FromAppId", sourceID).header("X-HTTP-Method-Override", "PATCH")
- .type("application/merge-patch+json").entity(t).post(ClientResponse.class);
+ response = client.target(url)
+ .request(MediaType.APPLICATION_JSON)
+ .header("X-TransactionId", transId)
+ .header("X-FromAppId", sourceID)
+ .header("X-HTTP-Method-Override", "PATCH")
+ .post(Entity.entity(t, "application/merge-patch+json"));
- statusCode = cres.getStatus();
+ statusCode = response.getStatus();
if (statusCode >= 200 && statusCode <= 299) {
LOGGER.debug(methodName + "REST api PATCH was successful!");
@@ -598,7 +626,7 @@ public class RestController implements RestControllerInterface {
LOGGER.debug(methodName + "Unable to make the patch request to url " + url + " even after trying = "
+ numRetries + " times.");
throw new AAIException("AAI_7116", methodName + " with status=" + statusCode + ", url=" + url + ", msg="
- + cres.getEntity(String.class));
+ + response.readEntity(String.class));
} catch (AAIException e) {
throw new AAIException("AAI_7116", methodName + " with url=" + url + ", Exception: " + e.toString());
diff --git a/aai-els-onap-logging/pom.xml b/aai-els-onap-logging/pom.xml
index 1f7cec5c..bf4c00f3 100644
--- a/aai-els-onap-logging/pom.xml
+++ b/aai-els-onap-logging/pom.xml
@@ -123,7 +123,7 @@
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
+ <groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
</dependency>
<dependency>
@@ -165,17 +165,4 @@
</exclusions>
</dependency>
</dependencies>
-
- <!-- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- </plugin>
- </plugins>
- </build> -->
</project>
diff --git a/aai-els-onap-logging/src/main/java/org/onap/aai/aailog/filter/RestControllerClientLoggingInterceptor.java b/aai-els-onap-logging/src/main/java/org/onap/aai/aailog/filter/RestControllerClientRequestLoggingInterceptor.java
index c09023d1..7a90aff0 100644
--- a/aai-els-onap-logging/src/main/java/org/onap/aai/aailog/filter/RestControllerClientLoggingInterceptor.java
+++ b/aai-els-onap-logging/src/main/java/org/onap/aai/aailog/filter/RestControllerClientRequestLoggingInterceptor.java
@@ -20,57 +20,39 @@
package org.onap.aai.aailog.filter;
-import com.sun.jersey.api.client.ClientHandler;
-import com.sun.jersey.api.client.ClientHandlerException;
-import com.sun.jersey.api.client.ClientRequest;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.filter.ClientFilter;
-
+import java.io.IOException;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.UUID;
import javax.ws.rs.core.MultivaluedMap;
-
+import javax.ws.rs.client.ClientRequestContext;
+import javax.ws.rs.client.ClientRequestFilter;
+import org.glassfish.jersey.client.ClientResponse;
import org.onap.aai.aailog.logs.ServiceName;
import org.onap.logging.filter.base.Constants;
import org.onap.logging.filter.base.MDCSetup;
import org.onap.logging.ref.slf4j.ONAPLogConstants;
import org.slf4j.*;
-public class RestControllerClientLoggingInterceptor extends ClientFilter {
- private static final Logger logger = LoggerFactory.getLogger(RestControllerClientLoggingInterceptor.class);
+public class RestControllerClientRequestLoggingInterceptor implements ClientRequestFilter {
+ private static final Logger logger = LoggerFactory.getLogger(RestControllerClientRequestLoggingInterceptor.class);
private static final Marker INVOKE_RETURN = MarkerFactory.getMarker("INVOKE-RETURN");
private final MDCSetup mdcSetup;
private final String partnerName;
- public RestControllerClientLoggingInterceptor() {
+ public RestControllerClientRequestLoggingInterceptor() {
mdcSetup = new MDCSetup();
partnerName = getPartnerName();
}
- @Override
- public ClientResponse handle(ClientRequest clientRequest) throws ClientHandlerException {
- ClientResponse clientResponse = null;
- pre(clientRequest);
- // Call the next client handler in the filter chain
- ClientHandler nextHandler = getNext();
- if (nextHandler != null) {
- clientResponse = nextHandler.handle(clientRequest);
- }
- if (clientResponse != null) {
- post(clientResponse);
- }
- return clientResponse;
- }
-
- protected String getTargetServiceName(ClientRequest clientRequest) {
- return getServiceName(clientRequest);
+ protected String getTargetServiceName(ClientRequestContext requestContext) {
+ return getServiceName(requestContext);
}
- protected String getServiceName(ClientRequest clientRequest) {
- String path = clientRequest.getURI().getRawPath();
+ protected String getServiceName(ClientRequestContext requestContext) {
+ String path = requestContext.getUri().getRawPath();
return ServiceName.extractServiceName(path);
}
@@ -82,24 +64,29 @@ public class RestControllerClientLoggingInterceptor extends ClientFilter {
return String.valueOf(clientResponse.getStatus());
}
- protected String getTargetEntity(ClientRequest ClientRequest) {
+ protected String getTargetEntity(ClientRequestContext requestContext) {
return Constants.DefaultValues.UNKNOWN_TARGET_ENTITY;
};
- protected void pre(ClientRequest clientRequest) {
+ @Override
+ public void filter(ClientRequestContext requestContext) throws IOException {
+ pre(requestContext);
+ }
+
+ protected void pre(ClientRequestContext requestContext) {
try {
- setInvocationId(clientRequest);
- setupMDC(clientRequest);
- setupHeaders(clientRequest);
+ setInvocationId(requestContext);
+ setupMDC(requestContext);
+ setupHeaders(requestContext);
logger.info(ONAPLogConstants.Markers.INVOKE, "Invoke");
} catch (Exception e) {
logger.warn("Error in RestControllerClientLoggingInterceptor pre", e.getMessage());
}
}
- public void setInvocationId(ClientRequest clientRequest) {
+ public void setInvocationId(ClientRequestContext requestContext) {
String invocationId = null;
- MultivaluedMap<String, Object> requestHeaders = clientRequest.getHeaders();
+ MultivaluedMap<String, Object> requestHeaders = requestContext.getHeaders();
Object id = requestHeaders.get(ONAPLogConstants.Headers.INVOCATION_ID);
if (id != null) {
invocationId = (String) id;
@@ -111,9 +98,9 @@ public class RestControllerClientLoggingInterceptor extends ClientFilter {
MDC.put(ONAPLogConstants.MDCs.INVOCATION_ID, invocationId);
}
- protected void setupHeaders(ClientRequest clientRequest) {
- String requestId = extractRequestID(clientRequest);
- MultivaluedMap<String, Object> requestHeaders = clientRequest.getHeaders();
+ protected void setupHeaders(ClientRequestContext requestContext) {
+ String requestId = extractRequestID(requestContext);
+ MultivaluedMap<String, Object> requestHeaders = requestContext.getHeaders();
addHeader(requestHeaders, ONAPLogConstants.Headers.REQUEST_ID, requestId);
addHeader(requestHeaders, Constants.HttpHeaders.HEADER_REQUEST_ID, requestId);
Object requestIdObj = requestHeaders.getFirst(Constants.HttpHeaders.TRANSACTION_ID);
@@ -127,15 +114,15 @@ public class RestControllerClientLoggingInterceptor extends ClientFilter {
}
}
- protected void setupMDC(ClientRequest clientRequest) {
+ protected void setupMDC(ClientRequestContext requestContext) {
MDC.put(ONAPLogConstants.MDCs.INVOKE_TIMESTAMP,
ZonedDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ISO_INSTANT));
- MDC.put(ONAPLogConstants.MDCs.TARGET_SERVICE_NAME, getTargetServiceName(clientRequest));
+ MDC.put(ONAPLogConstants.MDCs.TARGET_SERVICE_NAME, getTargetServiceName(requestContext));
MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, ONAPLogConstants.ResponseStatus.INPROGRESS.toString());
mdcSetup.setInvocationIdFromMDC();
if (MDC.get(ONAPLogConstants.MDCs.TARGET_ENTITY) == null) {
- String targetEntity = getTargetEntity(clientRequest);
+ String targetEntity = getTargetEntity(requestContext);
if (targetEntity != null) {
MDC.put(ONAPLogConstants.MDCs.TARGET_ENTITY, targetEntity);
} else {
@@ -144,15 +131,15 @@ public class RestControllerClientLoggingInterceptor extends ClientFilter {
}
if (MDC.get(ONAPLogConstants.MDCs.SERVICE_NAME) == null) {
- MDC.put(ONAPLogConstants.MDCs.SERVICE_NAME, getServiceName(clientRequest));
+ MDC.put(ONAPLogConstants.MDCs.SERVICE_NAME, getServiceName(requestContext));
}
mdcSetup.setServerFQDN();
}
- protected String extractRequestID(ClientRequest clientRequest) {
+ protected String extractRequestID(ClientRequestContext requestContext) {
String requestId = MDC.get(ONAPLogConstants.MDCs.REQUEST_ID);
if (requestId == null || requestId.isEmpty()) {
- MultivaluedMap<String, Object> requestHeaders = clientRequest.getHeaders();
+ MultivaluedMap<String, Object> requestHeaders = requestContext.getHeaders();
Object requestIdObj = requestHeaders.getFirst(Constants.HttpHeaders.TRANSACTION_ID);
if (requestIdObj != null) {
requestId = (String) requestIdObj;
diff --git a/aai-els-onap-logging/src/main/java/org/onap/aai/aailog/filter/RestControllerClientResponseLoggingInterceptor.java b/aai-els-onap-logging/src/main/java/org/onap/aai/aailog/filter/RestControllerClientResponseLoggingInterceptor.java
new file mode 100644
index 00000000..f35e9490
--- /dev/null
+++ b/aai-els-onap-logging/src/main/java/org/onap/aai/aailog/filter/RestControllerClientResponseLoggingInterceptor.java
@@ -0,0 +1,91 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 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.onap.aai.aailog.filter;
+
+import java.io.IOException;
+import java.util.UUID;
+
+import javax.ws.rs.client.ClientRequestContext;
+import javax.ws.rs.client.ClientResponseContext;
+import javax.ws.rs.client.ClientResponseFilter;
+import javax.ws.rs.core.MultivaluedMap;
+
+import org.onap.logging.filter.base.Constants;
+import org.onap.logging.filter.base.MDCSetup;
+import org.onap.logging.ref.slf4j.ONAPLogConstants;
+import org.slf4j.*;
+
+public class RestControllerClientResponseLoggingInterceptor implements ClientResponseFilter {
+ private static final Logger logger = LoggerFactory.getLogger(RestControllerClientRequestLoggingInterceptor.class);
+ private static final Marker INVOKE_RETURN = MarkerFactory.getMarker("INVOKE-RETURN");
+ private final MDCSetup mdcSetup;
+ private final String partnerName;
+
+ public RestControllerClientResponseLoggingInterceptor() {
+ mdcSetup = new MDCSetup();
+ partnerName = getPartnerName();
+ }
+
+ @Override
+ public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
+ post(responseContext);
+ }
+
+ protected void post(ClientResponseContext responseContext) {
+ try {
+ mdcSetup.setLogTimestamp();
+ mdcSetup.setElapsedTimeInvokeTimestamp();
+ mdcSetup.setResponseStatusCode(getHttpStatusCode(responseContext));
+ mdcSetup.setResponseDescription(getHttpStatusCode(responseContext));
+ MDC.put(ONAPLogConstants.MDCs.RESPONSE_CODE, getResponseCode(responseContext));
+ logger.info(INVOKE_RETURN, "InvokeReturn");
+ mdcSetup.clearClientMDCs();
+ } catch (Exception e) {
+ logger.warn("Error in RestControllerClientLoggingInterceptor post", e.getMessage());
+ }
+ }
+
+ protected int getHttpStatusCode(ClientResponseContext responseContext) {
+ return responseContext.getStatus();
+ }
+
+ protected String getResponseCode(ClientResponseContext responseContext) {
+ return String.valueOf(responseContext.getStatus());
+ }
+
+ public void setInvocationId(ClientRequestContext requestContext) {
+ String invocationId = null;
+ MultivaluedMap<String, Object> requestHeaders = requestContext.getHeaders();
+ Object id = requestHeaders.get(ONAPLogConstants.Headers.INVOCATION_ID);
+ if (id != null) {
+ invocationId = (String) id;
+ }
+ requestHeaders.remove(ONAPLogConstants.Headers.INVOCATION_ID);
+ if (invocationId == null) {
+ invocationId = UUID.randomUUID().toString();
+ }
+ MDC.put(ONAPLogConstants.MDCs.INVOCATION_ID, invocationId);
+ }
+
+ protected String getPartnerName() {
+ return mdcSetup.getProperty(Constants.Property.PARTNER_NAME);
+ }
+}
diff --git a/aai-els-onap-logging/src/test/java/org/onap/aai/aailog/filter/RestControllerClientLoggingInterceptorTest.java b/aai-els-onap-logging/src/test/java/org/onap/aai/aailog/filter/RestControllerClientLoggingInterceptorTest.java
index 9c4b2655..84e032d8 100644
--- a/aai-els-onap-logging/src/test/java/org/onap/aai/aailog/filter/RestControllerClientLoggingInterceptorTest.java
+++ b/aai-els-onap-logging/src/test/java/org/onap/aai/aailog/filter/RestControllerClientLoggingInterceptorTest.java
@@ -22,14 +22,14 @@ package org.onap.aai.aailog.filter;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-
-import com.sun.jersey.api.client.ClientRequest;
+import static org.mockito.Mockito.when;
import java.net.InetAddress;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.UnknownHostException;
+import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.core.MultivaluedHashMap;
import javax.ws.rs.core.MultivaluedMap;
@@ -38,6 +38,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
+import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.MockitoJUnitRunner;
import org.onap.logging.filter.base.Constants;
@@ -47,17 +48,24 @@ import org.slf4j.MDC;
@RunWith(MockitoJUnitRunner.class)
public class RestControllerClientLoggingInterceptorTest {
- private ClientRequest clientRequest;
+ @Spy
+ private ClientRequestContext clientRequest;
@Spy
@InjectMocks
- private RestControllerClientLoggingInterceptor restControllerClientLoggingInterceptor;
+ private RestControllerClientRequestLoggingInterceptor restControllerClientLoggingInterceptor;
@Before
public void init() throws URISyntaxException {
System.setProperty("javax.ws.rs.ext.RuntimeDelegate", "com.sun.ws.rs.ext.RuntimeDelegateImpl");
- clientRequest = ClientRequest.create().build(
- new URI("https://localhost:9999/aai/v1/cloud-infrastructure/complexes/complex/complex-1"), "GET");
+ when(clientRequest.getHeaders()).thenReturn(new MultivaluedHashMap<String, Object>());
+ when(clientRequest.getUri())
+ .thenReturn(new URI("https://localhost:9999/aai/v1/cloud-infrastructure/complexes/complex/complex-1"));
+
+ // clientRequest = ClientRequest.create().build(
+ // new
+ // URI("https://localhost:9999/aai/v1/cloud-infrastructure/complexes/complex/complex-1"),
+ // "GET");
}
@After
@@ -71,6 +79,10 @@ public class RestControllerClientLoggingInterceptorTest {
String transId = "37b3ab2a-e57e-4fe8-8d8f-eee3019efce6";
MultivaluedMap<String, Object> requestHeaders = new MultivaluedHashMap<String, Object>();
requestHeaders.add(Constants.HttpHeaders.TRANSACTION_ID, transId);
+ when(clientRequest.getHeaders()).thenReturn(requestHeaders);
+ when(clientRequest.getUri())
+ .thenReturn(new URI("https://localhost:9999/aai/v1/cloud-infrastructure/complexes/complex/complex-1"));
+
clientRequest.getHeaders().putAll(requestHeaders);
restControllerClientLoggingInterceptor.pre(clientRequest);
MultivaluedMap<String, Object> headers = clientRequest.getHeaders();
diff --git a/aai-parent/pom.xml b/aai-parent/pom.xml
index d9a80223..d9b0c6ad 100644
--- a/aai-parent/pom.xml
+++ b/aai-parent/pom.xml
@@ -52,7 +52,7 @@ limitations under the License.
<commons.compress.version>1.27.0</commons.compress.version>
<commons.configuration.version>1.10</commons.configuration.version>
<commons.io.version>2.16.1</commons.io.version>
- <commons.lang3.version>3.9</commons.lang3.version>
+ <commons.lang3.version>3.15.0</commons.lang3.version>
<commons.net.version>3.8.0</commons.net.version>
<commons.text.version>1.10.0</commons.text.version>
<docker.fabric.version>0.40.2</docker.fabric.version>
@@ -72,7 +72,6 @@ limitations under the License.
<old.jaxb.version>2.3.0.1</old.jaxb.version>
<jaxrs.version>2.1.1</jaxrs.version>
<jcommander.version>1.78</jcommander.version>
- <jersey.version>1.19.4</jersey.version>
<jnr.ffi.version>2.2.12</jnr.ffi.version>
<jolt.version>0.1.7</jolt.version>
<jopt.simple.version>5.0.4</jopt.simple.version>
@@ -496,24 +495,6 @@ limitations under the License.
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-core</artifactId>
- <version>${jersey.version}</version>
- </dependency>
-
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-client</artifactId>
- <version>${jersey.version}</version>
- </dependency>
-
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-json</artifactId>
- <version>${jersey.version}</version>
- </dependency>
-
- <dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>${jaxrs.version}</version>