X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=portal-BE%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fportal%2Fservice%2FApplicationsRestClientService.java;h=1c66c6d8ffd91dc8e49565e9f29455e5ed6b8e06;hb=ffd9af970318c1f5a0bad46d7aad5d4611414aae;hp=e606cb0bfcf9b8ed8f9cc7d144faf2220ff11556;hpb=d904fc786956891946e7bd92b559fdb98f62330f;p=portal.git diff --git a/portal-BE/src/main/java/org/onap/portal/service/ApplicationsRestClientService.java b/portal-BE/src/main/java/org/onap/portal/service/ApplicationsRestClientService.java index e606cb0b..1c66c6d8 100644 --- a/portal-BE/src/main/java/org/onap/portal/service/ApplicationsRestClientService.java +++ b/portal-BE/src/main/java/org/onap/portal/service/ApplicationsRestClientService.java @@ -42,6 +42,7 @@ package org.onap.portal.service; import static com.att.eelf.configuration.Configuration.MDC_KEY_REQUEST_ID; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import java.net.MalformedURLException; import java.net.URL; @@ -51,13 +52,11 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.apache.commons.lang.StringUtils; import org.apache.cxf.jaxrs.client.WebClient; -import org.apache.cxf.jaxrs.impl.ResponseImpl; import org.apache.cxf.transport.http.HTTPException; import org.onap.portal.domain.db.fn.FnApp; import org.onap.portal.logging.aop.EPMetricsLog; import org.onap.portal.logging.format.EPAppMessagesEnum; import org.onap.portal.logging.logic.EPLogUtil; -import org.onap.portal.service.fn.old.AppsCacheService; import org.onap.portal.utils.EPCommonSystemProperties; import org.onap.portal.utils.EcompPortalUtils; import org.onap.portal.utils.SystemType; @@ -72,321 +71,340 @@ import org.springframework.stereotype.Service; @Service public class ApplicationsRestClientService { - private static final String PASSWORD_HEADER = "password"; - private static final String APP_USERNAME_HEADER = "username"; - private static final String BASIC_AUTHENTICATION_HEADER = "Authorization"; - - private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ApplicationsRestClientService.class); - - Gson gson = null; - - private final AppsCacheService appsCacheService; - - @Autowired - public ApplicationsRestClientService(AppsCacheService appsCacheService) { - this.appsCacheService = appsCacheService; - } - - private static boolean isHttpSuccess(int status) { - return status / 100 == 2; - } - - @EPMetricsLog - private void verifyResponse(Response response, String restPath) throws HTTPException { - int status = response.getStatus(); - logger.debug(EELFLoggerDelegate.debugLogger, "http response status=" + status); - MDC.put(EPCommonSystemProperties.EXTERNAL_API_RESPONSE_CODE, Integer.toString(status)); - if (!isHttpSuccess(status)) { - String errMsg = - "Failed. Status=" + status + restPath + "; [" + ((ResponseImpl) response).getStatusInfo() - .getReasonPhrase().toString() - + "]"; - URL url = null; - try { - // must not be null to avoid NPE in HTTPException constructor - url = new URL("http://null"); - if (((ResponseImpl) response).getLocation() != null) { - url = ((ResponseImpl) response).getLocation().toURL(); - } - } catch (MalformedURLException e) { - // never mind. it is only for the debug message. - logger.warn(EELFLoggerDelegate.errorLogger, "Failed to build URL", e); - } - logger.error(EELFLoggerDelegate.errorLogger, - "http response failed. " + restPath + errMsg + "; url=" + url); - EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeIncorrectHttpStatusError); - throw new HTTPException(status, errMsg, url); - } - } - - private WebClient createClientForApp(long appId, String restPath) { - return createClientFor(appId, restPath, SystemType.APPLICATION); - } - - private static WebClient createClientForPath(String baseUri, String path) { - logger.info(EELFLoggerDelegate.debugLogger, "Creating web client for " + baseUri + " + " + path); - WebClient client = WebClient.create(baseUri); - client.type(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON); - client.path(path); - return client; - } - - //TODO Need to implement the mylogins once the endpoint is confirmed - @EPMetricsLog - private WebClient createClientFor(long appSystemId, String restPath, SystemType type) { - logger.debug(EELFLoggerDelegate.debugLogger, - "creating client for appId=" + appSystemId + "; restPath=" + restPath); - FnApp externalApp = null; - - if (type == SystemType.APPLICATION) { - externalApp = appsCacheService.getApp(appSystemId); - } else { - // TO DO - } - - if (externalApp != null) { - String appBaseUri = (type == SystemType.APPLICATION) ? externalApp.getAppRestEndpoint() : ""; - String username = (type == SystemType.APPLICATION) ? externalApp.getAppUsername() : ""; - String encriptedPwd = (type == SystemType.APPLICATION) ? externalApp.getAppPassword() : ""; - - String appName = (type == SystemType.APPLICATION) ? externalApp.getAppName() : ""; - String decreptedAppPwd = StringUtils.EMPTY; - - // Set local context - MDC.put(EPCommonSystemProperties.PROTOCOL, EPCommonSystemProperties.HTTP); - if (appBaseUri != null && appBaseUri.contains("https")) { - MDC.put(EPCommonSystemProperties.PROTOCOL, EPCommonSystemProperties.HTTPS); - } - MDC.put(EPCommonSystemProperties.FULL_URL, appBaseUri + restPath); - MDC.put(EPCommonSystemProperties.TARGET_ENTITY, appName); - MDC.put(EPCommonSystemProperties.TARGET_SERVICE_NAME, restPath); - - if (!encriptedPwd.isEmpty() || encriptedPwd != null || StringUtils.isEmpty(encriptedPwd)) { - try { - decreptedAppPwd = CipherUtil.decryptPKC(encriptedPwd, - SystemProperties.getProperty(SystemProperties.Decryption_Key)); - } catch (Exception e) { - logger.error(EELFLoggerDelegate.errorLogger, "createClientFor failed to decrypt", e); - } - } - WebClient client = createClientForPath(appBaseUri, restPath); - - if (externalApp.getAppPassword().isEmpty() || externalApp.getAppPassword() == null) { - logger.debug(EELFLoggerDelegate.debugLogger, - "Entering in the externalApp get app password contains null : {}"); - - externalApp = appsCacheService.getApp(1L); - logger.debug(EELFLoggerDelegate.debugLogger, "external App Information : {}", externalApp); - - String mechidUsername = externalApp.getAppUsername(); - logger.debug(EELFLoggerDelegate.debugLogger, "external App mechidUsername Information : {}", - mechidUsername); - - String password = externalApp.getAppPassword(); - String decreptedexternalAppPwd = StringUtils.EMPTY; - try { - decreptedexternalAppPwd = CipherUtil.decryptPKC(password, - SystemProperties.getProperty(SystemProperties.Decryption_Key)); - } catch (CipherUtilException e) { - logger.error(EELFLoggerDelegate.errorLogger, - "failed to decreptedexternalAppPwd when external app pwd is null", e); - } - - username = mechidUsername; - decreptedAppPwd = decreptedexternalAppPwd; - - } else { - logger.debug(EELFLoggerDelegate.debugLogger, - "Entering in the externalApp get app password is not null : {}"); - - // support basic authentication for some partners - String encoding = Base64.getEncoder() - .encodeToString((username + ":" + decreptedAppPwd).getBytes()); - String encodingStr = "Basic " + encoding; - client.header(BASIC_AUTHENTICATION_HEADER, encodingStr); - } - - // But still keep code downward compatible for non compliant apps - client.header(APP_USERNAME_HEADER, username); - client.header(PASSWORD_HEADER, decreptedAppPwd); - - String encoding = Base64.getEncoder() - .encodeToString((username + ":" + decreptedAppPwd).getBytes()); - String encodingStr = "Basic " + encoding; - client.header(BASIC_AUTHENTICATION_HEADER, encodingStr); - client.header(SystemProperties.ECOMP_REQUEST_ID, MDC.get(MDC_KEY_REQUEST_ID)); - client.header(SystemProperties.USERAGENT_NAME, EPCommonSystemProperties.ECOMP_PORTAL_BE); - logger.debug(EELFLoggerDelegate.debugLogger, - String.format( - "check the partner application URL App %d found, baseUri=[%s], Headers: [%s=%s]", - appSystemId, appBaseUri, - APP_USERNAME_HEADER, username)); - return client; - } - return null; - } - - public T post(Class clazz, long appId, Object payload, String restPath, SystemType type) - throws HTTPException { - WebClient client = null; - Response response = null; - T t = null; - - client = createClientFor(appId, restPath, type); - EcompPortalUtils.logAndSerializeObject(logger, restPath, "POST request =", payload); - - try { - if (client != null) { - response = client.post(payload); - } else { - logger.error(EELFLoggerDelegate.errorLogger, - "Unable to create the Webclient to make the '" + restPath + "' API call."); - } - } catch (Exception e) { - MDC.put(EPCommonSystemProperties.EXTERNAL_API_RESPONSE_CODE, - Integer.toString(HttpServletResponse.SC_INTERNAL_SERVER_ERROR)); - EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeRestApiGeneralError, e); - logger.error(EELFLoggerDelegate.errorLogger, - "Exception occurred while making the POST REST API call", e); - } - - if (response != null) { - //verifyResponse(response); - verifyResponse(response, restPath); - // String contentType = response.getHeaderString("Content-Type"); - if (clazz != null) { - String str = ((ResponseImpl) response).readEntity(String.class); - EcompPortalUtils.logAndSerializeObject(logger, restPath, "POST result =", str); - try { - t = (T) gson.fromJson(str, clazz); - - //t = gson.fromJson(str, clazz); - } catch (Exception e) { - EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeInvalidJsonInput, e); - } - } - } - return t; - } - - public T post(Class clazz, long appId, Object payload, String restPath) throws HTTPException { - return post(clazz, appId, payload, restPath, SystemType.APPLICATION); - } - - public T put(Class clazz, long appId, Object payload, String restPath) throws HTTPException { - WebClient client = null; - Response response = null; - T t = null; - - logger.debug(EELFLoggerDelegate.debugLogger, - "Entering to createClientForApp method for payload: {} and restPath: {} and appId: {}", - payload.toString(), restPath, appId); - - client = createClientForApp(appId, restPath); - EcompPortalUtils.logAndSerializeObject(logger, restPath, "PUT request =", payload); - - logger.debug(EELFLoggerDelegate.debugLogger, - "Finished createClientForApp method for payload: {} and restPath: {} and appId: {}", - payload.toString(), restPath, appId); - - try { - if (client != null) { - logger.debug(EELFLoggerDelegate.debugLogger, - "Entering to PUT for payload: {} and restPath: {} and appId: {}", - payload.toString(), restPath, appId); - - response = client.put(payload); - - logger.debug(EELFLoggerDelegate.debugLogger, - "Finished to PUT for payload: {} and restPath: {} and appId: {}", - payload.toString(), restPath, appId); - - } else { - logger.error(EELFLoggerDelegate.errorLogger, - "Unable to create the Webclient to make the '" + restPath + "' API call."); - } - } catch (Exception e) { - MDC.put(EPCommonSystemProperties.EXTERNAL_API_RESPONSE_CODE, - Integer.toString(HttpServletResponse.SC_INTERNAL_SERVER_ERROR)); - EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeRestApiGeneralError, e); - logger.error(EELFLoggerDelegate.errorLogger, - "Exception occurred while making the PUT REST API call", e); - } - - if (response != null) { - //verifyResponse(response); - verifyResponse(response, restPath); - String str = ((ResponseImpl) response).readEntity(String.class); - EcompPortalUtils.logAndSerializeObject(logger, restPath, "PUT result =", str); - try { - t = gson.fromJson(str, clazz); - } catch (Exception e) { - EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeInvalidJsonInput, e); - } - } - return t; - } - - protected Response getResponse(long appId, String restPath) { - WebClient webClient = null; - Response response = null; - - webClient = createClientForApp(appId, restPath); - EcompPortalUtils.logAndSerializeObject(logger, restPath, "GET request =", "no-payload"); - - try { - if (webClient != null) { - response = webClient.get(); - } else { - logger.error(EELFLoggerDelegate.errorLogger, - "Unable to create the Webclient to make the '" + restPath + "' API call."); - } - } catch (Exception e) { - MDC.put(EPCommonSystemProperties.EXTERNAL_API_RESPONSE_CODE, - Integer.toString(HttpServletResponse.SC_INTERNAL_SERVER_ERROR)); - EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeRestApiGeneralError, e); - logger.error(EELFLoggerDelegate.errorLogger, - "Exception occurred while making the GET REST API call", e); - } - return response; - } - - public T get(Class clazz, long appId, String restPath) throws HTTPException { - T t = null; - Response response = getResponse(appId, restPath); - - if (response != null) { - //verifyResponse(response); - verifyResponse(response, restPath); + private static final String PASSWORD_HEADER = "password"; + private static final String APP_USERNAME_HEADER = "username"; + private static final String BASIC_AUTHENTICATION_HEADER = "Authorization"; + + private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ApplicationsRestClientService.class); + + private final Gson gson = null; + + private final ObjectMapper mapper = new ObjectMapper(); + + private final AppsCacheService appsCacheService; + + @Autowired + public ApplicationsRestClientService(AppsCacheService appsCacheService) { + this.appsCacheService = appsCacheService; + } + + private static boolean isHttpSuccess(int status) { + return status / 100 == 2; + } + + @EPMetricsLog + private void verifyResponse(Response response, String restPath) throws HTTPException { + int status = response.getStatus(); + logger.debug(EELFLoggerDelegate.debugLogger, "http response status=" + status); + MDC.put(EPCommonSystemProperties.EXTERNAL_API_RESPONSE_CODE, Integer.toString(status)); + if (!isHttpSuccess(status)) { + String errMsg = + "Failed. Status=" + status + restPath + "; [" + response.getStatusInfo() + .getReasonPhrase() + + "]"; + URL url = null; + try { + // must not be null to avoid NPE in HTTPException constructor + url = new URL("http://null"); + if (response.getLocation() != null) { + url = response.getLocation().toURL(); + } + } catch (MalformedURLException e) { + // never mind. it is only for the debug message. + logger.warn(EELFLoggerDelegate.errorLogger, "Failed to build URL", e); + } + logger.error(EELFLoggerDelegate.errorLogger, + "http response failed. " + restPath + errMsg + "; url=" + url); + EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeIncorrectHttpStatusError); + throw new HTTPException(status, errMsg, url); + } + } + + private WebClient createClientForApp(long appId, String restPath) { + return createClientFor(appId, restPath, SystemType.APPLICATION); + } + + private static WebClient createClientForPath(String baseUri, String path) { + logger.info(EELFLoggerDelegate.debugLogger, "Creating web client for " + baseUri + " + " + path); + WebClient client = WebClient.create(baseUri); + client.type(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON); + client.path(path); + return client; + } + + //TODO Need to implement the mylogins once the endpoint is confirmed + @EPMetricsLog + private WebClient createClientFor(long appSystemId, String restPath, SystemType type) { + logger.debug(EELFLoggerDelegate.debugLogger, + "creating client for appId=" + appSystemId + "; restPath=" + restPath); + FnApp externalApp = null; + + if (type == SystemType.APPLICATION) { + externalApp = appsCacheService.getApp(appSystemId); + } + + if (externalApp != null) { + String appBaseUri = (type == SystemType.APPLICATION) ? externalApp.getAppRestEndpoint() : ""; + String username = (type == SystemType.APPLICATION) ? externalApp.getAppUsername() : ""; + String encriptedPwd = (type == SystemType.APPLICATION) ? externalApp.getAppPassword() : ""; + + String appName = (type == SystemType.APPLICATION) ? externalApp.getAppName() : ""; + String decreptedAppPwd = StringUtils.EMPTY; + + // Set local context + MDC.put(EPCommonSystemProperties.PROTOCOL, EPCommonSystemProperties.HTTP); + if (appBaseUri != null && appBaseUri.contains("https")) { + MDC.put(EPCommonSystemProperties.PROTOCOL, EPCommonSystemProperties.HTTPS); + } + MDC.put(EPCommonSystemProperties.FULL_URL, appBaseUri + restPath); + MDC.put(EPCommonSystemProperties.TARGET_ENTITY, appName); + MDC.put(EPCommonSystemProperties.TARGET_SERVICE_NAME, restPath); + + try { + decreptedAppPwd = CipherUtil.decryptPKC(encriptedPwd, + SystemProperties.getProperty(SystemProperties.Decryption_Key)); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "createClientFor failed to decrypt", e); + } + WebClient client = createClientForPath(appBaseUri, restPath); + + if (externalApp.getAppPassword().isEmpty() || externalApp.getAppPassword() == null) { + logger.debug(EELFLoggerDelegate.debugLogger, + "Entering in the externalApp get app password contains null : {}"); + + externalApp = appsCacheService.getApp(1L); + logger.debug(EELFLoggerDelegate.debugLogger, "external App Information : {}", externalApp); + + String mechidUsername = externalApp.getAppUsername(); + logger.debug(EELFLoggerDelegate.debugLogger, "external App mechidUsername Information : {}", + mechidUsername); + + String password = externalApp.getAppPassword(); + String decreptedexternalAppPwd = StringUtils.EMPTY; + try { + decreptedexternalAppPwd = CipherUtil.decryptPKC(password, + SystemProperties.getProperty(SystemProperties.Decryption_Key)); + } catch (CipherUtilException e) { + logger.error(EELFLoggerDelegate.errorLogger, + "failed to decreptedexternalAppPwd when external app pwd is null", e); + } + + username = mechidUsername; + decreptedAppPwd = decreptedexternalAppPwd; + + } else { + logger.debug(EELFLoggerDelegate.debugLogger, + "Entering in the externalApp get app password is not null : {}"); + + // support basic authentication for some partners + String encoding = Base64.getEncoder() + .encodeToString((username + ":" + decreptedAppPwd).getBytes()); + String encodingStr = "Basic " + encoding; + client.header(BASIC_AUTHENTICATION_HEADER, encodingStr); + } + + // But still keep code downward compatible for non compliant apps + client.header(APP_USERNAME_HEADER, username); + client.header(PASSWORD_HEADER, decreptedAppPwd); + + String encoding = Base64.getEncoder() + .encodeToString((username + ":" + decreptedAppPwd).getBytes()); + String encodingStr = "Basic " + encoding; + client.header(BASIC_AUTHENTICATION_HEADER, encodingStr); + client.header(SystemProperties.ECOMP_REQUEST_ID, MDC.get(MDC_KEY_REQUEST_ID)); + client.header(SystemProperties.USERAGENT_NAME, EPCommonSystemProperties.ECOMP_PORTAL_BE); + logger.debug(EELFLoggerDelegate.debugLogger, + String.format( + "check the partner application URL App %d found, baseUri=[%s], Headers: [%s=%s]", + appSystemId, appBaseUri, + APP_USERNAME_HEADER, username)); + return client; + } + return null; + } + + public T post(Class clazz, long appId, Object payload, String restPath, SystemType type) + throws HTTPException { + WebClient client; + Response response = null; + T t = null; + + client = createClientFor(appId, restPath, type); + EcompPortalUtils.logAndSerializeObject(logger, restPath, "POST request =", payload); + + try { + if (client != null) { + response = client.post(payload); + } else { + logger.error(EELFLoggerDelegate.errorLogger, + "Unable to create the Webclient to make the '" + restPath + "' API call."); + } + } catch (Exception e) { + MDC.put(EPCommonSystemProperties.EXTERNAL_API_RESPONSE_CODE, + Integer.toString(HttpServletResponse.SC_INTERNAL_SERVER_ERROR)); + EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeRestApiGeneralError, e); + logger.error(EELFLoggerDelegate.errorLogger, + "Exception occurred while making the POST REST API call", e); + } + + if (response != null) { + verifyResponse(response, restPath); + if (clazz != null) { + String str = response.readEntity(String.class); + EcompPortalUtils.logAndSerializeObject(logger, restPath, "POST result =", str); + try { + t = gson.fromJson(str, clazz); + } catch (Exception e) { + EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeInvalidJsonInput, e); + } + } + } + return t; + } + + public T post(Class clazz, long appId, Object payload, String restPath) throws HTTPException { + return post(clazz, appId, payload, restPath, SystemType.APPLICATION); + } + + public T put(Class clazz, long appId, Object payload, String restPath) throws HTTPException { + WebClient client; + Response response = null; + T t = null; + + logger.debug(EELFLoggerDelegate.debugLogger, + "Entering to createClientForApp method for payload: {} and restPath: {} and appId: {}", + payload.toString(), restPath, appId); + + client = createClientForApp(appId, restPath); + EcompPortalUtils.logAndSerializeObject(logger, restPath, "PUT request =", payload); + + logger.debug(EELFLoggerDelegate.debugLogger, + "Finished createClientForApp method for payload: {} and restPath: {} and appId: {}", + payload.toString(), restPath, appId); + + try { + if (client != null) { + logger.debug(EELFLoggerDelegate.debugLogger, + "Entering to PUT for payload: {} and restPath: {} and appId: {}", + payload.toString(), restPath, appId); + + response = client.put(payload); + + logger.debug(EELFLoggerDelegate.debugLogger, + "Finished to PUT for payload: {} and restPath: {} and appId: {}", + payload.toString(), restPath, appId); + + } else { + logger.error(EELFLoggerDelegate.errorLogger, + "Unable to create the Webclient to make the '" + restPath + "' API call."); + } + } catch (Exception e) { + MDC.put(EPCommonSystemProperties.EXTERNAL_API_RESPONSE_CODE, + Integer.toString(HttpServletResponse.SC_INTERNAL_SERVER_ERROR)); + EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeRestApiGeneralError, e); + logger.error(EELFLoggerDelegate.errorLogger, + "Exception occurred while making the PUT REST API call", e); + } + + if (response != null) { + verifyResponse(response, restPath); + String str = response.readEntity(String.class); + EcompPortalUtils.logAndSerializeObject(logger, restPath, "PUT result =", str); + try { + t = gson.fromJson(str, clazz); + } catch (Exception e) { + EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeInvalidJsonInput, e); + } + } + return t; + } + + private Response getResponse(long appId, String restPath) { + WebClient webClient; + Response response = null; + + webClient = createClientForApp(appId, restPath); + EcompPortalUtils.logAndSerializeObject(logger, restPath, "GET request =", "no-payload"); + + try { + if (webClient != null) { + response = webClient.get(); + } else { + logger.error(EELFLoggerDelegate.errorLogger, + "Unable to create the Webclient to make the '" + restPath + "' API call."); + } + } catch (Exception e) { + MDC.put(EPCommonSystemProperties.EXTERNAL_API_RESPONSE_CODE, + Integer.toString(HttpServletResponse.SC_INTERNAL_SERVER_ERROR)); + EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeRestApiGeneralError, e); + logger.error(EELFLoggerDelegate.errorLogger, + "Exception occurred while making the GET REST API call", e); + } + return response; + } + + public T get(Class clazz, long appId, String restPath) throws HTTPException { + T t = null; + Response response = getResponse(appId, restPath); + + if (response != null) { + //verifyResponse(response); + verifyResponse(response, restPath); /* It is not recommendable to use the implementation class org.apache.cxf.jaxrs.impl.ResponseImpl in the code, but had to force this in-order to prevent conflict with the ResponseImpl class of Jersey Client which doesn't work as expected. Created Portal-253 for tracking */ - String str = ((ResponseImpl) response).readEntity(String.class); + String str = response.readEntity(String.class); - EcompPortalUtils.logAndSerializeObject(logger, restPath, "GET result =", str); - try { - t = gson.fromJson(str, clazz); - } catch (Exception e) { - EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeInvalidJsonInput, e); - } - } + EcompPortalUtils.logAndSerializeObject(logger, restPath, "GET result =", str); + try { + t = gson.fromJson(str, clazz); + } catch (Exception e) { + EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeInvalidJsonInput, e); + } + } - return t; - } + return t; + } - public String getIncomingJsonString(final Long appId, final String restPath) throws HTTPException { - Response response = getResponse(appId, restPath); + public String getIncomingJsonString(final Long appId, final String restPath) throws HTTPException { + Response response = getResponse(appId, restPath); - if (response != null) { - //verifyResponse(response); - verifyResponse(response,restPath); + if (response != null) { + //verifyResponse(response); + verifyResponse(response, restPath); /* It is not recommendable to use the implementation class org.apache.cxf.jaxrs.impl.ResponseImpl in the code, but had to force this in-order to prevent conflict with the ResponseImpl class of Jersey Client which doesn't work as expected. Created Portal-253 for tracking */ - String incomingJson = ((ResponseImpl)response).readEntity(String.class); - return incomingJson; - } + return (response).readEntity(String.class); + } + + return ""; + } + + public T get(Class clazz, Long appId, String restPath, boolean useJacksonMapper) throws HTTPException { + + if (!useJacksonMapper) { + return get(clazz, appId, restPath); + } + + T t = null; + Response response = getResponse(appId, restPath); + + if (response != null) { + //verifyResponse(response); + verifyResponse(response, restPath); + String str = (response).readEntity(String.class); + EcompPortalUtils.logAndSerializeObject(logger, restPath, "GET result =", str); + + try { + t = mapper.readValue(str, clazz); + } catch (Exception e) { + e.printStackTrace(); + EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeInvalidJsonInput, e); + } + } + + return t; + } - return ""; - } }