From ada0741e1002f2a36389a532e2ad2af355d3c3ba Mon Sep 17 00:00:00 2001 From: Scott Frederick Date: Thu, 27 Feb 2020 16:09:30 -0600 Subject: [PATCH] Polish Docker client exception handling --- .../buildpack/platform/docker/HttpClientHttp.java | 12 ++++-------- .../platform/docker/HttpClientHttpTests.java | 10 ++++++---- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/HttpClientHttp.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/HttpClientHttp.java index 1446f603878..5b38e8c1aa1 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/HttpClientHttp.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/HttpClientHttp.java @@ -48,6 +48,7 @@ import org.springframework.boot.buildpack.platform.json.SharedObjectMapper; * * @author Phillip Webb * @author Mike Smithson + * @author Scott Frederick */ class HttpClientHttp implements Http { @@ -129,9 +130,8 @@ class HttpClientHttp implements Http { } private Response execute(HttpUriRequest request) { - CloseableHttpResponse response; try { - response = this.client.execute(request); + CloseableHttpResponse response = this.client.execute(request); StatusLine statusLine = response.getStatusLine(); int statusCode = statusLine.getStatusCode(); HttpEntity entity = response.getEntity(); @@ -143,15 +143,11 @@ class HttpClientHttp implements Http { if (statusCode == 500) { throw new DockerException(request.getURI(), statusCode, statusLine.getReasonPhrase(), null); } + return new HttpClientResponse(response); } catch (IOException ioe) { - StringWriter stringWriter = new StringWriter(); - PrintWriter printWriter = new PrintWriter(stringWriter); - ioe.printStackTrace(printWriter); - throw new DockerException(request.getURI(), 500, stringWriter.toString(), null); + throw new DockerException(request.getURI(), 500, ioe.getMessage(), null); } - - return new HttpClientResponse(response); } /** diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/HttpClientHttpTests.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/HttpClientHttpTests.java index 7ea9d2d6a14..c8cd96cb5c1 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/HttpClientHttpTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/HttpClientHttpTests.java @@ -54,6 +54,7 @@ import static org.mockito.Mockito.verify; * * @author Phillip Webb * @author Mike Smithson + * @author Scott Frederick */ class HttpClientHttpTests { @@ -186,11 +187,12 @@ class HttpClientHttpTests { } @Test - void executeWhenClientExecutesRequestThrowsIOExceptionRethrowsAsDockerException() throws IOException { - given(this.client.execute(any())).willThrow(IOException.class); + void executeWhenClientThrowsIOExceptionRethrowsAsDockerException() throws IOException { + given(this.client.execute(any())).willThrow(new IOException("test IO exception")); assertThatExceptionOfType(DockerException.class).isThrownBy(() -> this.http.get(this.uri)) - .satisfies((ex) -> assertThat(ex.getErrors()).isNull()).satisfies(DockerException::getStatusCode) - .withMessageContaining("500").satisfies((ex) -> assertThat(ex.getReasonPhrase())).isNotNull(); + .satisfies((ex) -> assertThat(ex.getErrors()).isNull()) + .satisfies(DockerException::getStatusCode).withMessageContaining("500") + .satisfies((ex) -> assertThat(ex.getReasonPhrase()).contains("test IO exception")); } private String writeToString(HttpEntity entity) throws IOException {