From 1976a5f3e69b65743bb46ff78b6263b9437d06ce Mon Sep 17 00:00:00 2001 From: John Blum Date: Mon, 20 Jul 2020 21:51:38 -0700 Subject: [PATCH] Refactor FileResourceWriter to throw a ResourceWriteException on a IOException. Resolves gh-92. --- .../geode/core/io/support/FileResourceWriter.java | 6 ++++-- .../io/support/FileResourceWriterUnitTests.java | 15 ++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/spring-geode/src/main/java/org/springframework/geode/core/io/support/FileResourceWriter.java b/spring-geode/src/main/java/org/springframework/geode/core/io/support/FileResourceWriter.java index c24636aa..c7c6d149 100644 --- a/spring-geode/src/main/java/org/springframework/geode/core/io/support/FileResourceWriter.java +++ b/spring-geode/src/main/java/org/springframework/geode/core/io/support/FileResourceWriter.java @@ -30,6 +30,8 @@ import org.springframework.core.io.Resource; import org.springframework.dao.DataAccessResourceFailureException; import org.springframework.data.gemfire.util.ArrayUtils; import org.springframework.geode.core.io.AbstractResourceWriter; +import org.springframework.geode.core.io.ResourceDataAccessException; +import org.springframework.geode.core.io.ResourceWriteException; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; @@ -81,7 +83,7 @@ public class FileResourceWriter extends AbstractResourceWriter { String message = String.format("Failed to write data (%1$d byte(s)) to Resource using [%2$s]", data.length, getClass().getName()); - throw new DataAccessResourceFailureException(message, cause); + throw new ResourceWriteException(message, cause); } } } @@ -189,7 +191,7 @@ public class FileResourceWriter extends AbstractResourceWriter { String message = String.format("Failed to access the Resource [%s] as a file", resource.getDescription()); - throw new DataAccessResourceFailureException(message, cause); + throw new ResourceDataAccessException(message, cause); } }) .orElseThrow(() -> newIllegalStateException("Resource [%s] is not a file based resource", diff --git a/spring-geode/src/test/java/org/springframework/geode/core/io/support/FileResourceWriterUnitTests.java b/spring-geode/src/test/java/org/springframework/geode/core/io/support/FileResourceWriterUnitTests.java index 1cf64376..013ddee0 100644 --- a/spring-geode/src/test/java/org/springframework/geode/core/io/support/FileResourceWriterUnitTests.java +++ b/spring-geode/src/test/java/org/springframework/geode/core/io/support/FileResourceWriterUnitTests.java @@ -40,7 +40,8 @@ import org.junit.Test; import org.springframework.core.io.Resource; import org.springframework.core.io.WritableResource; -import org.springframework.dao.DataAccessResourceFailureException; +import org.springframework.geode.core.io.ResourceDataAccessException; +import org.springframework.geode.core.io.ResourceWriteException; /** * Unit Tests for {@link FileResourceWriter}. @@ -74,12 +75,12 @@ public class FileResourceWriterUnitTests { assertThat(out.toByteArray()).isEqualTo(data); verify(mockResource, times(1)).isFile(); - verify(mockResource, times(1)).isWritable(); verify(mockResource, times(1)).getOutputStream(); verify(writer, times(1)).doWrite(eq(out), eq(data)); + verifyNoMoreInteractions(mockResource); } - @Test(expected = DataAccessResourceFailureException.class) + @Test(expected = ResourceWriteException.class) public void doWriteHandlesIOExceptionThrowsDataAccessResourceFailureException() throws IOException { byte[] data = { (byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE }; @@ -95,7 +96,7 @@ public class FileResourceWriterUnitTests { try { writer.doWrite(mockOutputStream, data); } - catch (DataAccessResourceFailureException expected) { + catch (ResourceWriteException expected) { assertThat(expected) .hasMessageStartingWith("Failed to write data (%d byte(s)) to Resource using [%s]", @@ -264,8 +265,8 @@ public class FileResourceWriterUnitTests { } } - @Test(expected = DataAccessResourceFailureException.class) - public void newFileOutputStreamHandlesIOExceptionThrowsDataAccessResourceFailureException() throws IOException { + @Test(expected = ResourceDataAccessException.class) + public void newFileOutputStreamHandlesIOExceptionThrowsResourceDataAccessException() throws IOException { Resource mockResource = mock(Resource.class); @@ -280,7 +281,7 @@ public class FileResourceWriterUnitTests { try { writer.newFileOutputStream(); } - catch (DataAccessResourceFailureException expected) { + catch (ResourceDataAccessException expected) { assertThat(expected).hasMessageStartingWith("Failed to access the Resource [FILE] as a file"); assertThat(expected).hasCauseInstanceOf(IOException.class);