From f5c92c40f6ba7073f263e2ad1a8b38c778538dd0 Mon Sep 17 00:00:00 2001 From: Iulian Manda Date: Thu, 3 Jun 2021 18:13:09 +0300 Subject: [PATCH] BAEL-4856 Remove BinaryFileDownloadApplication.java and use correct indentation --- .../BinaryFileDownloadApplication.java | 26 ------- .../okhttp/download/BinaryFileDownloader.java | 74 +++++++++--------- .../okhttp/download/BinaryFileWriter.java | 42 +++++----- .../BinaryFileDownloaderUnitTest.java | 78 +++++++++---------- .../download/BinaryFileWriterUnitTest.java | 46 +++++------ 5 files changed, 117 insertions(+), 149 deletions(-) delete mode 100644 libraries-http-2/src/main/java/com/baeldung/okhttp/download/BinaryFileDownloadApplication.java diff --git a/libraries-http-2/src/main/java/com/baeldung/okhttp/download/BinaryFileDownloadApplication.java b/libraries-http-2/src/main/java/com/baeldung/okhttp/download/BinaryFileDownloadApplication.java deleted file mode 100644 index f350fe6f6e..0000000000 --- a/libraries-http-2/src/main/java/com/baeldung/okhttp/download/BinaryFileDownloadApplication.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.baeldung.okhttp.download; - -import okhttp3.OkHttpClient; - -import java.io.FileOutputStream; - -public class BinaryFileDownloadApplication { - - public static void main(String[] args) { - String url = args[0]; - String file = args[1]; - try (BinaryFileDownloader downloader = new BinaryFileDownloader(new OkHttpClient(), - new BinaryFileWriter(new FileOutputStream(file)))) { - long downloadSize = downloader.download(url); - double downloadSizeInMB = convertToMB(downloadSize); - System.out.printf("Successfully downloaded file %s from %s. Total size %.2fMB%n", file, url, downloadSizeInMB); - } catch (Exception ex) { - System.err.printf("Could not download file %s from %s. %nError: %s%n", file, url, ex); - } - } - - private static double convertToMB(double downloadSize) { - return downloadSize / (1024.0 * 1024.0); - } - -} diff --git a/libraries-http-2/src/main/java/com/baeldung/okhttp/download/BinaryFileDownloader.java b/libraries-http-2/src/main/java/com/baeldung/okhttp/download/BinaryFileDownloader.java index f4c98751f4..e9fb42185b 100644 --- a/libraries-http-2/src/main/java/com/baeldung/okhttp/download/BinaryFileDownloader.java +++ b/libraries-http-2/src/main/java/com/baeldung/okhttp/download/BinaryFileDownloader.java @@ -10,45 +10,45 @@ import java.io.IOException; public class BinaryFileDownloader implements AutoCloseable { - private final OkHttpClient client; - private final BinaryFileWriter writer; + private final OkHttpClient client; + private final BinaryFileWriter writer; - public BinaryFileDownloader(OkHttpClient client, BinaryFileWriter writer) { - this.client = client; - this.writer = writer; - } - - public long download(String url) throws IOException { - Request request = createRequest(url); - Response response = executeRequest(request); - ResponseBody responseBody = getResponseBodyOrFail(response); - return write(responseBody); - } - - @NotNull - private Request createRequest(String url) { - return new Request.Builder().url(url).build(); - } - - @NotNull - private Response executeRequest(Request request) throws IOException { - return client.newCall(request).execute(); - } - - private ResponseBody getResponseBodyOrFail(Response response) { - ResponseBody responseBody = response.body(); - if (responseBody == null) { - throw new IllegalStateException("Response doesn't contain a file"); + public BinaryFileDownloader(OkHttpClient client, BinaryFileWriter writer) { + this.client = client; + this.writer = writer; } - return responseBody; - } - private long write(ResponseBody responseBody) throws IOException { - return writer.write(responseBody.byteStream()); - } + public long download(String url) throws IOException { + Request request = createRequest(url); + Response response = executeRequest(request); + ResponseBody responseBody = getResponseBodyOrFail(response); + return write(responseBody); + } - @Override - public void close() throws Exception { - writer.close(); - } + @NotNull + private Request createRequest(String url) { + return new Request.Builder().url(url).build(); + } + + @NotNull + private Response executeRequest(Request request) throws IOException { + return client.newCall(request).execute(); + } + + private ResponseBody getResponseBodyOrFail(Response response) { + ResponseBody responseBody = response.body(); + if (responseBody == null) { + throw new IllegalStateException("Response doesn't contain a file"); + } + return responseBody; + } + + private long write(ResponseBody responseBody) throws IOException { + return writer.write(responseBody.byteStream()); + } + + @Override + public void close() throws Exception { + writer.close(); + } } diff --git a/libraries-http-2/src/main/java/com/baeldung/okhttp/download/BinaryFileWriter.java b/libraries-http-2/src/main/java/com/baeldung/okhttp/download/BinaryFileWriter.java index 95f91e26b2..653cd07449 100644 --- a/libraries-http-2/src/main/java/com/baeldung/okhttp/download/BinaryFileWriter.java +++ b/libraries-http-2/src/main/java/com/baeldung/okhttp/download/BinaryFileWriter.java @@ -7,28 +7,28 @@ import java.io.OutputStream; public class BinaryFileWriter implements AutoCloseable { - private static final int CHUNK_SIZE = 1024; - private final OutputStream outputStream; + private static final int CHUNK_SIZE = 1024; + private final OutputStream outputStream; - public BinaryFileWriter(OutputStream outputStream) { - this.outputStream = outputStream; - } - - public long write(InputStream inputStream) throws IOException { - try (BufferedInputStream input = new BufferedInputStream(inputStream)) { - byte[] dataBuffer = new byte[CHUNK_SIZE]; - int readBytes; - long totalBytes = 0; - while ((readBytes = input.read(dataBuffer)) != -1) { - totalBytes += readBytes; - outputStream.write(dataBuffer, 0, readBytes); - } - return totalBytes; + public BinaryFileWriter(OutputStream outputStream) { + this.outputStream = outputStream; } - } - @Override - public void close() throws IOException { - outputStream.close(); - } + public long write(InputStream inputStream) throws IOException { + try (BufferedInputStream input = new BufferedInputStream(inputStream)) { + byte[] dataBuffer = new byte[CHUNK_SIZE]; + int readBytes; + long totalBytes = 0; + while ((readBytes = input.read(dataBuffer)) != -1) { + totalBytes += readBytes; + outputStream.write(dataBuffer, 0, readBytes); + } + return totalBytes; + } + } + + @Override + public void close() throws IOException { + outputStream.close(); + } } diff --git a/libraries-http-2/src/test/java/com/baeldung/okhttp/download/BinaryFileDownloaderUnitTest.java b/libraries-http-2/src/test/java/com/baeldung/okhttp/download/BinaryFileDownloaderUnitTest.java index 5472eaefee..6a7d7aca7e 100644 --- a/libraries-http-2/src/test/java/com/baeldung/okhttp/download/BinaryFileDownloaderUnitTest.java +++ b/libraries-http-2/src/test/java/com/baeldung/okhttp/download/BinaryFileDownloaderUnitTest.java @@ -27,54 +27,48 @@ import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class BinaryFileDownloaderUnitTest { - @Mock - private OkHttpClient client; - @Mock - private BinaryFileWriter writer; - @InjectMocks - private BinaryFileDownloader tested; + @Mock + private OkHttpClient client; + @Mock + private BinaryFileWriter writer; + @InjectMocks + private BinaryFileDownloader tested; - @Test - public void givenUrlAndResponse_whenDownload_thenExpectFileWritten() throws Exception { - String url = "http://example.com/file"; - Call call = mock(Call.class); - when(client.newCall(any(Request.class))).thenReturn(call); - ResponseBody body = ResponseBody.create("BODY", MediaType.get("application/text")); - Response response = createResponse(url, body); - when(call.execute()).thenReturn(response); - when(writer.write(any())).thenReturn(1L); + @Test + public void givenUrlAndResponse_whenDownload_thenExpectFileWritten() throws Exception { + String url = "http://example.com/file"; + Call call = mock(Call.class); + when(client.newCall(any(Request.class))).thenReturn(call); + ResponseBody body = ResponseBody.create("BODY", MediaType.get("application/text")); + Response response = createResponse(url, body); + when(call.execute()).thenReturn(response); + when(writer.write(any())).thenReturn(1L); - try (BinaryFileDownloader tested = new BinaryFileDownloader(client, writer)) { - long size = tested.download(url); - assertEquals(1L, size); - verify(writer).write(any(InputStream.class)); + try (BinaryFileDownloader tested = new BinaryFileDownloader(client, writer)) { + long size = tested.download(url); + assertEquals(1L, size); + verify(writer).write(any(InputStream.class)); + } + verify(writer).close(); } - verify(writer).close(); - } - @Test - public void givenUrlAndResponseWithNullBody_whenDownload_thenExpectIllegalStateException() throws Exception { - String url = "http://example.com/file"; - Call call = mock(Call.class); - when(client.newCall(any(Request.class))).thenReturn(call); - Response response = createResponse(url, null); - when(call.execute()).thenReturn(response); + @Test + public void givenUrlAndResponseWithNullBody_whenDownload_thenExpectIllegalStateException() throws Exception { + String url = "http://example.com/file"; + Call call = mock(Call.class); + when(client.newCall(any(Request.class))).thenReturn(call); + Response response = createResponse(url, null); + when(call.execute()).thenReturn(response); - assertThrows(IllegalStateException.class, () -> tested.download(url)); + assertThrows(IllegalStateException.class, () -> tested.download(url)); - verify(writer, times(0)).write(any(InputStream.class)); - } + verify(writer, times(0)).write(any(InputStream.class)); + } - @NotNull - private Response createResponse(String url, ResponseBody body) { - Request request = new Request.Builder().url(url).build(); - return new Response.Builder() - .code(200) - .request(request) - .protocol(Protocol.HTTP_2) - .message("Message") - .body(body) - .build(); - } + @NotNull + private Response createResponse(String url, ResponseBody body) { + Request request = new Request.Builder().url(url).build(); + return new Response.Builder().code(200).request(request).protocol(Protocol.HTTP_2).message("Message").body(body).build(); + } } \ No newline at end of file diff --git a/libraries-http-2/src/test/java/com/baeldung/okhttp/download/BinaryFileWriterUnitTest.java b/libraries-http-2/src/test/java/com/baeldung/okhttp/download/BinaryFileWriterUnitTest.java index 51012311da..e4b823f843 100644 --- a/libraries-http-2/src/test/java/com/baeldung/okhttp/download/BinaryFileWriterUnitTest.java +++ b/libraries-http-2/src/test/java/com/baeldung/okhttp/download/BinaryFileWriterUnitTest.java @@ -20,36 +20,36 @@ import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class BinaryFileWriterUnitTest { - @Mock - private OutputStream outputStream; + @Mock + private OutputStream outputStream; - @Test - public void givenInputStream_whenWrite_thenExpectWritten() throws Exception { - InputStream inputStream = mock(InputStream.class); - when(inputStream.read(any(), anyInt(), anyInt())).thenReturn(10, -1); + @Test + public void givenInputStream_whenWrite_thenExpectWritten() throws Exception { + InputStream inputStream = mock(InputStream.class); + when(inputStream.read(any(), anyInt(), anyInt())).thenReturn(10, -1); - try (BinaryFileWriter tested = new BinaryFileWriter(outputStream)) { - long result = tested.write(inputStream); + try (BinaryFileWriter tested = new BinaryFileWriter(outputStream)) { + long result = tested.write(inputStream); - assertEquals(10, result); - verify(outputStream).write(any(), eq(0), eq(10)); - verify(inputStream).close(); + assertEquals(10, result); + verify(outputStream).write(any(), eq(0), eq(10)); + verify(inputStream).close(); + } + verify(outputStream).close(); } - verify(outputStream).close(); - } - @Test - public void givenInputStreamEmpty_whenWrite_thenExpectNotWritten() throws Exception { - InputStream inputStream = mock(InputStream.class); + @Test + public void givenInputStreamEmpty_whenWrite_thenExpectNotWritten() throws Exception { + InputStream inputStream = mock(InputStream.class); - try (BinaryFileWriter tested = new BinaryFileWriter(outputStream)) { - long result = tested.write(inputStream); + try (BinaryFileWriter tested = new BinaryFileWriter(outputStream)) { + long result = tested.write(inputStream); - assertEquals(0, result); - verify(outputStream, times(0)).write(any(), anyInt(), anyInt()); - verify(inputStream).close(); + assertEquals(0, result); + verify(outputStream, times(0)).write(any(), anyInt(), anyInt()); + verify(inputStream).close(); + } + verify(outputStream).close(); } - verify(outputStream).close(); - } } \ No newline at end of file