package org.onap.vid.mso;
+import static org.onap.vid.logging.Headers.PARTNER_NAME;
+import static org.onap.vid.utils.Logging.ONAP_REQUEST_ID_HEADER_KEY;
+import static org.onap.vid.utils.Logging.REQUEST_ID_HEADER_KEY;
+import static org.onap.vid.utils.Logging.getMethodCallerName;
+import static org.onap.vid.utils.Logging.getMethodName;
+
import com.att.eelf.configuration.EELFLogger;
import com.fasterxml.jackson.databind.ObjectMapper;
+import java.util.Collections;
+import java.util.Optional;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedHashMap;
+import javax.ws.rs.core.Response;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpException;
import org.eclipse.jetty.util.security.Password;
+import org.glassfish.jersey.client.ClientProperties;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
-import org.onap.portalsdk.core.util.SystemProperties;
import org.onap.vid.aai.ExceptionWithRequestInfo;
import org.onap.vid.aai.util.HttpClientMode;
import org.onap.vid.aai.util.HttpsAuthClient;
import org.onap.vid.exceptions.GenericUncheckedException;
import org.onap.vid.mso.rest.RestInterface;
import org.onap.vid.utils.Logging;
+import org.onap.vid.utils.SystemPropertiesWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
-import javax.ws.rs.client.Client;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.client.Invocation;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.Response;
-import java.util.Collections;
-import java.util.Optional;
-
-import static org.onap.vid.utils.Logging.*;
-
/**
* Created by pickjonathan on 26/06/2017.
*/
public class RestMsoImplementation implements RestInterface {
+
/**
* The logger.
*/
protected HttpsAuthClient httpsAuthClient;
+ protected SystemPropertiesWrapper systemProperties;
+ protected final Logging loggingService;
private static final String START_LOG = " start";
private static final String APPLICATION_JSON = "application/json";
*/
@Autowired
- protected RestMsoImplementation(HttpsAuthClient httpsAuthClient){
+ protected RestMsoImplementation(HttpsAuthClient httpsAuthClient, SystemPropertiesWrapper systemProperties, Logging loggingService){
this.httpsAuthClient=httpsAuthClient;
+ this.systemProperties = systemProperties;
+ this.loggingService = loggingService;
}
@SuppressWarnings("Duplicates")
{
final String methodname = "initRestClient()";
- final String username = SystemProperties.getProperty(MsoProperties.MSO_USER_NAME);
- final String password = SystemProperties.getProperty(MsoProperties.MSO_PASSWORD);
- final String mso_url = SystemProperties.getProperty(MsoProperties.MSO_SERVER_URL);
+ final String username = systemProperties.getProperty(MsoProperties.MSO_USER_NAME);
+ final String password = systemProperties.getProperty(MsoProperties.MSO_PASSWORD);
+ final String mso_url = systemProperties.getProperty(MsoProperties.MSO_SERVER_URL);
final String decrypted_password = Password.deobfuscate(password);
String authString = username + ":" + decrypted_password;
MultivaluedHashMap<String, Object> commonHeaders = new MultivaluedHashMap();
commonHeaders.put("Authorization", Collections.singletonList(("Basic " + authStringEnc)));
- commonHeaders.put("X-ONAP-PartnerName", Collections.singletonList("VID"));
+ commonHeaders.put(PARTNER_NAME.getHeaderName(), Collections.singletonList(PARTNER_NAME.getHeaderValue()));
String requestIdValue = Logging.extractOrGenerateRequestId();
commonHeaders.put(REQUEST_ID_HEADER_KEY, Collections.singletonList(requestIdValue));
try {
restObject.set(t);
- url = SystemProperties.getProperty(MsoProperties.MSO_SERVER_URL) + path;
+ url = systemProperties.getProperty(MsoProperties.MSO_SERVER_URL) + path;
MultivaluedHashMap<String, Object> commonHeaders = initMsoClient();
- Logging.logRequest(outgoingRequestsLogger, HttpMethod.GET, url);
+ loggingService.logRequest(outgoingRequestsLogger, HttpMethod.GET, url);
final Response cres = client.target(url)
.request()
.accept(APPLICATION_JSON)
.headers(commonHeaders)
.get();
- Logging.logResponse(outgoingRequestsLogger, HttpMethod.GET, url, cres);
+ loggingService.logResponse(outgoingRequestsLogger, HttpMethod.GET, url, cres);
cres.bufferEntity();
status = cres.getStatus();
final String methodName = getMethodName();
logger.debug(EELFLoggerDelegate.debugLogger, "start {}->{}({}, {})", getMethodCallerName(), methodName, path, clazz);
- String url = SystemProperties.getProperty(MsoProperties.MSO_SERVER_URL) + path;
+ String url = systemProperties.getProperty(MsoProperties.MSO_SERVER_URL) + path;
logger.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + " sending request to url= " + url);
MultivaluedHashMap<String, Object> commonHeaders = initMsoClient();
- Logging.logRequest(outgoingRequestsLogger, HttpMethod.GET, url);
+ loggingService.logRequest(outgoingRequestsLogger, HttpMethod.GET, url);
final Response cres = client.target(url)
.request()
.accept(APPLICATION_JSON)
.headers(commonHeaders)
.get();
- Logging.logResponse(outgoingRequestsLogger, HttpMethod.GET, url, cres);
+ loggingService.logResponse(outgoingRequestsLogger, HttpMethod.GET, url, cres);
final RestObject<T> restObject = cresToRestObject(cres, clazz);
int status = cres.getStatus();
return restObject;
}
- @Override
- public <T> void Delete(T t, Object r, String path, RestObject<T> restObject) {
-
- String methodName = "Delete";
- String url="";
- Response cres;
-
- logger.debug(EELFLoggerDelegate.debugLogger,"<== " + methodName + START_LOG);
-
- try {
- MultivaluedHashMap<String, Object> commonHeaders = initMsoClient();
-
- url = SystemProperties.getProperty(MsoProperties.MSO_SERVER_URL) + path;
- Logging.logRequest(outgoingRequestsLogger, HttpMethod.DELETE, url, r);
- cres = client.target(url)
- .request()
-
- .accept(APPLICATION_JSON)
- .headers(commonHeaders)
- //.entity(r)
- .build("DELETE", Entity.entity(r, MediaType.APPLICATION_JSON))
- .invoke();
- Logging.logResponse(outgoingRequestsLogger, HttpMethod.DELETE, url, cres);
- int status = cres.getStatus();
- restObject.setStatusCode (status);
-
- if (status == 404) { // resource not found
- String msg = "Resource does not exist...: " + cres.getStatus();
- logger.debug(EELFLoggerDelegate.debugLogger,"<== " + msg);
- } else if (status == 200 || status == 204){
- logger.debug(EELFLoggerDelegate.debugLogger,"<== " + "Resource " + url + " deleted");
- } else if (status == 202) {
- String msg = "Delete in progress: " + status;
- logger.debug(EELFLoggerDelegate.debugLogger,"<== " + msg);
- }
- else {
- String msg = "Deleting Resource failed: " + status;
- logger.debug(EELFLoggerDelegate.debugLogger,"<== " + msg);
- }
-
- try {
- t = (T) cres.readEntity(t.getClass());
- restObject.set(t);
- }
- catch ( Exception e ) {
- logger.debug(EELFLoggerDelegate.debugLogger,"<== " + methodName + NO_RESPONSE_ENTITY_LOG
- + e.getMessage());
- throw e;
- }
-
- }
- catch (Exception e)
- {
- logger.debug(EELFLoggerDelegate.debugLogger,"<== " + methodName + WITH_URL_LOG +url+ EXCEPTION_LOG + e.toString());
- throw e;
- }
- }
-
public <T> RestObject<T> PostForObject(Object requestDetails, String path, Class<T> clazz) {
logger.debug(EELFLoggerDelegate.debugLogger, REST_MSG_TEMPLATE, getMethodCallerName(), getMethodName(), requestDetails, path, clazz);
return restCall(HttpMethod.POST, clazz, requestDetails, path);
public Invocation.Builder prepareClient(String path, String methodName) {
MultivaluedHashMap<String, Object> commonHeaders = initMsoClient();
- String url = SystemProperties.getProperty(MsoProperties.MSO_SERVER_URL) + path;
+ String url = systemProperties.getProperty(MsoProperties.MSO_SERVER_URL) + path;
logger.debug(EELFLoggerDelegate.debugLogger,"<== " + methodName + " sending request to url= " + url);
// Change the content length
return client.target(url)
MultivaluedHashMap<String, Object> commonHeaders = initMsoClient();
userId.ifPresent(id->commonHeaders.put("X-RequestorID", Collections.singletonList(id)));
- url = SystemProperties.getProperty(MsoProperties.MSO_SERVER_URL) + path;
- Logging.logRequest(outgoingRequestsLogger, httpMethod, url, payload);
+ url = systemProperties.getProperty(MsoProperties.MSO_SERVER_URL) + path;
+ loggingService.logRequest(outgoingRequestsLogger, httpMethod, url, payload);
// Change the content length
final Invocation.Builder restBuilder = client.target(url)
.request()
.accept(APPLICATION_JSON)
- .headers(commonHeaders);
+ .headers(commonHeaders)
+ .property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true)
+ ;
Invocation restInvocation = payload==null ?
restBuilder.build(httpMethod.name()) :
restBuilder.build(httpMethod.name(), Entity.entity(payload, MediaType.APPLICATION_JSON));
final Response cres = restInvocation.invoke();
- Logging.logResponse(outgoingRequestsLogger, httpMethod, url, cres);
+ loggingService.logResponse(outgoingRequestsLogger, httpMethod, url, cres);
return cresToRestObject(cres, tClass);
}
catch (Exception e) {
MultivaluedHashMap<String, Object> commonHeaders = initMsoClient();
- url = SystemProperties.getProperty(MsoProperties.MSO_SERVER_URL) + path;
- Logging.logRequest(outgoingRequestsLogger, HttpMethod.PUT, url, r);
+ url = systemProperties.getProperty(MsoProperties.MSO_SERVER_URL) + path;
+ loggingService.logRequest(outgoingRequestsLogger, HttpMethod.PUT, url, r);
// Change the content length
final Response cres = client.target(url)
.request()
//.header("content-length", 201)
.put(Entity.entity(r, MediaType.APPLICATION_JSON));
- Logging.logResponse(outgoingRequestsLogger, HttpMethod.PUT, url, cres);
+ loggingService.logResponse(outgoingRequestsLogger, HttpMethod.PUT, url, cres);
try {
t = (T) cres.readEntity(t.getClass());