From 04a24129c9de4ccc48196944bee9a64ac1682f0c Mon Sep 17 00:00:00 2001 From: James Richard Date: Wed, 29 Apr 2020 16:45:56 -0400 Subject: [PATCH 1/2] Feature: Adding trace logging for the response content, added a null check when we are converting the response to an object. --- .../integration/rest/client/IntHttpClient.java | 15 ++++++++++++++- .../rest/service/IntJsonTransformer.java | 5 +++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/synopsys/integration/rest/client/IntHttpClient.java b/src/main/java/com/synopsys/integration/rest/client/IntHttpClient.java index 38644c9..0b48aab 100644 --- a/src/main/java/com/synopsys/integration/rest/client/IntHttpClient.java +++ b/src/main/java/com/synopsys/integration/rest/client/IntHttpClient.java @@ -57,13 +57,14 @@ import com.jayway.jsonpath.JsonPath; import com.synopsys.integration.exception.IntegrationException; import com.synopsys.integration.log.IntLogger; +import com.synopsys.integration.log.LogLevel; import com.synopsys.integration.rest.HttpMethod; import com.synopsys.integration.rest.exception.ApiException; import com.synopsys.integration.rest.exception.IntegrationRestException; import com.synopsys.integration.rest.proxy.ProxyInfo; import com.synopsys.integration.rest.request.Request; -import com.synopsys.integration.rest.response.Response; import com.synopsys.integration.rest.response.ErrorResponse; +import com.synopsys.integration.rest.response.Response; /** * A basic, extendable http client. @@ -194,6 +195,17 @@ public final void logResponseHeaders(HttpResponse response) { logHeaders(responseName, response.getAllHeaders()); } + public final void logResponseContent(Response response) { + if (LogLevel.TRACE == logger.getLogLevel()) { + try { + String responseContent = response.getContentString(); + logger.trace("Response content : " + responseContent); + } catch (IntegrationException e) { + logger.trace("Could not log the response content. ", e); + } + } + } + private void addBuilderConnectionTimes() { defaultRequestConfigBuilder.setConnectTimeout(timeoutInSeconds * 1000); defaultRequestConfigBuilder.setSocketTimeout(timeoutInSeconds * 1000); @@ -242,6 +254,7 @@ private Response handleClientExecution(HttpUriRequest request) throws Integratio CloseableHttpResponse closeableHttpResponse = client.execute(request); Response response = new Response(request, client, closeableHttpResponse); logResponseHeaders(closeableHttpResponse); + logResponseContent(response); if (response.isStatusCodeError()) { handleErrorResponse(request, response); } diff --git a/src/main/java/com/synopsys/integration/rest/service/IntJsonTransformer.java b/src/main/java/com/synopsys/integration/rest/service/IntJsonTransformer.java index 8ecf235..1d836ac 100644 --- a/src/main/java/com/synopsys/integration/rest/service/IntJsonTransformer.java +++ b/src/main/java/com/synopsys/integration/rest/service/IntJsonTransformer.java @@ -30,6 +30,8 @@ import java.util.List; import java.util.Map; +import org.apache.commons.lang3.StringUtils; + import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; @@ -78,6 +80,9 @@ public C getComponentAs(String json, Type responseT public C getComponentAs(JsonObject jsonObject, Type responseType) throws IntegrationException { final String json = gson.toJson(jsonObject); + if (null == jsonObject || StringUtils.isBlank(json)) { + throw new IntegrationException(String.format("The server did not have a response body. Can not convert the response to '%s'", responseType.getTypeName())); + } try { addJsonAsField(jsonObject); C transformedResponse = gson.fromJson(jsonObject, responseType); From d891456e7d983fe0c4825bf0b0b35713f94ba001 Mon Sep 17 00:00:00 2001 From: James Richard Date: Thu, 30 Apr 2020 17:53:35 -0400 Subject: [PATCH 2/2] Removing the logging of the response content. --- .../integration/rest/client/IntHttpClient.java | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/main/java/com/synopsys/integration/rest/client/IntHttpClient.java b/src/main/java/com/synopsys/integration/rest/client/IntHttpClient.java index 0b48aab..7c849c7 100644 --- a/src/main/java/com/synopsys/integration/rest/client/IntHttpClient.java +++ b/src/main/java/com/synopsys/integration/rest/client/IntHttpClient.java @@ -57,7 +57,6 @@ import com.jayway.jsonpath.JsonPath; import com.synopsys.integration.exception.IntegrationException; import com.synopsys.integration.log.IntLogger; -import com.synopsys.integration.log.LogLevel; import com.synopsys.integration.rest.HttpMethod; import com.synopsys.integration.rest.exception.ApiException; import com.synopsys.integration.rest.exception.IntegrationRestException; @@ -195,17 +194,6 @@ public final void logResponseHeaders(HttpResponse response) { logHeaders(responseName, response.getAllHeaders()); } - public final void logResponseContent(Response response) { - if (LogLevel.TRACE == logger.getLogLevel()) { - try { - String responseContent = response.getContentString(); - logger.trace("Response content : " + responseContent); - } catch (IntegrationException e) { - logger.trace("Could not log the response content. ", e); - } - } - } - private void addBuilderConnectionTimes() { defaultRequestConfigBuilder.setConnectTimeout(timeoutInSeconds * 1000); defaultRequestConfigBuilder.setSocketTimeout(timeoutInSeconds * 1000); @@ -254,7 +242,6 @@ private Response handleClientExecution(HttpUriRequest request) throws Integratio CloseableHttpResponse closeableHttpResponse = client.execute(request); Response response = new Response(request, client, closeableHttpResponse); logResponseHeaders(closeableHttpResponse); - logResponseContent(response); if (response.isStatusCodeError()) { handleErrorResponse(request, response); }