Replace CloseShield* constructors with factory methods (#173)
* Replace CloseShield* constructors with factory methods
* Renamed CloseShield*.dontClose to wrap
* Changed parameter names and tags as requested
diff --git a/src/main/java/org/apache/commons/io/input/CloseShieldInputStream.java b/src/main/java/org/apache/commons/io/input/CloseShieldInputStream.java
index 0463506..8b31603 100644
--- a/src/main/java/org/apache/commons/io/input/CloseShieldInputStream.java
+++ b/src/main/java/org/apache/commons/io/input/CloseShieldInputStream.java
@@ -35,7 +35,11 @@
* closed.
*
* @param in underlying input stream
+ * @deprecated Using this constructor prevents IDEs from warning if
+ * the underlying input stream is never closed.
+ * Use {@link #wrap(InputStream)} instead.
*/
+ @Deprecated
public CloseShieldInputStream(final InputStream in) {
super(in);
}
@@ -50,4 +54,16 @@
in = ClosedInputStream.CLOSED_INPUT_STREAM;
}
+ /**
+ * Creates a proxy that shields the given input stream from being
+ * closed.
+ *
+ * @param inputStream the input stream to wrap
+ * @return the created proxy
+ * @since 2.9.0
+ */
+ public static CloseShieldInputStream wrap(final InputStream inputStream) {
+ return new CloseShieldInputStream(inputStream);
+ }
+
}
diff --git a/src/main/java/org/apache/commons/io/input/CloseShieldReader.java b/src/main/java/org/apache/commons/io/input/CloseShieldReader.java
index 612feb5..e1b33b2 100644
--- a/src/main/java/org/apache/commons/io/input/CloseShieldReader.java
+++ b/src/main/java/org/apache/commons/io/input/CloseShieldReader.java
@@ -35,7 +35,11 @@
* closed.
*
* @param in underlying reader
+ * @deprecated Using this constructor prevents IDEs from warning if
+ * the underlying reader is never closed.
+ * Use {@link #wrap(Reader)} instead.
*/
+ @Deprecated
public CloseShieldReader(final Reader in) {
super(in);
}
@@ -50,4 +54,16 @@
in = ClosedReader.CLOSED_READER;
}
+ /**
+ * Creates a proxy that shields the given reader from being
+ * closed.
+ *
+ * @param reader the reader to wrap
+ * @return the created proxy
+ * @since 2.9.0
+ */
+ public static CloseShieldReader wrap(final Reader reader) {
+ return new CloseShieldReader(reader);
+ }
+
}
diff --git a/src/main/java/org/apache/commons/io/output/CloseShieldOutputStream.java b/src/main/java/org/apache/commons/io/output/CloseShieldOutputStream.java
index 8146533..6a0db0e 100644
--- a/src/main/java/org/apache/commons/io/output/CloseShieldOutputStream.java
+++ b/src/main/java/org/apache/commons/io/output/CloseShieldOutputStream.java
@@ -35,7 +35,11 @@
* closed.
*
* @param out underlying output stream
+ * @deprecated Using this constructor prevents IDEs from warning if
+ * the underlying output stream is never closed.
+ * Use {@link #wrap(OutputStream)} instead.
*/
+ @Deprecated
public CloseShieldOutputStream(final OutputStream out) {
super(out);
}
@@ -50,4 +54,16 @@
out = ClosedOutputStream.CLOSED_OUTPUT_STREAM;
}
+ /**
+ * Creates a proxy that shields the given output stream from being
+ * closed.
+ *
+ * @param outputStream the output stream to wrap
+ * @return the created proxy
+ * @since 2.9.0
+ */
+ public static CloseShieldOutputStream wrap(final OutputStream outputStream) {
+ return new CloseShieldOutputStream(outputStream);
+ }
+
}
diff --git a/src/main/java/org/apache/commons/io/output/CloseShieldWriter.java b/src/main/java/org/apache/commons/io/output/CloseShieldWriter.java
index 73a351b..4a1efa1 100644
--- a/src/main/java/org/apache/commons/io/output/CloseShieldWriter.java
+++ b/src/main/java/org/apache/commons/io/output/CloseShieldWriter.java
@@ -33,7 +33,11 @@
* Creates a proxy that shields the given writer from being closed.
*
* @param out underlying writer
+ * @deprecated Using this constructor prevents IDEs from warning if
+ * the underlying writer is never closed.
+ * Use {@link #wrap(Writer)} instead.
*/
+ @Deprecated
public CloseShieldWriter(final Writer out) {
super(out);
}
@@ -47,4 +51,15 @@
out = ClosedWriter.CLOSED_WRITER;
}
+ /**
+ * Creates a proxy that shields the given writer from being closed.
+ *
+ * @param writer the writer to wrap
+ * @return the created proxy
+ * @since 2.9.0
+ */
+ public static CloseShieldWriter wrap(final Writer writer) {
+ return new CloseShieldWriter(writer);
+ }
+
}
diff --git a/src/test/java/org/apache/commons/io/input/CloseShieldInputStreamTest.java b/src/test/java/org/apache/commons/io/input/CloseShieldInputStreamTest.java
index 62b6cda..4a09310 100644
--- a/src/test/java/org/apache/commons/io/input/CloseShieldInputStreamTest.java
+++ b/src/test/java/org/apache/commons/io/input/CloseShieldInputStreamTest.java
@@ -48,7 +48,7 @@
closed = true;
}
};
- shielded = new CloseShieldInputStream(original);
+ shielded = CloseShieldInputStream.wrap(original);
closed = false;
}
diff --git a/src/test/java/org/apache/commons/io/input/CloseShieldReaderTest.java b/src/test/java/org/apache/commons/io/input/CloseShieldReaderTest.java
index dfc54ca..59a9959 100644
--- a/src/test/java/org/apache/commons/io/input/CloseShieldReaderTest.java
+++ b/src/test/java/org/apache/commons/io/input/CloseShieldReaderTest.java
@@ -42,7 +42,7 @@
public void setUp() {
data = "xyz";
original = spy(new CharSequenceReader(data));
- shielded = new CloseShieldReader(original);
+ shielded = CloseShieldReader.wrap(original);
}
@Test
diff --git a/src/test/java/org/apache/commons/io/output/CloseShieldOutputStreamTest.java b/src/test/java/org/apache/commons/io/output/CloseShieldOutputStreamTest.java
index 0a563a0..bd9d45f 100644
--- a/src/test/java/org/apache/commons/io/output/CloseShieldOutputStreamTest.java
+++ b/src/test/java/org/apache/commons/io/output/CloseShieldOutputStreamTest.java
@@ -18,7 +18,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.fail;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import java.io.IOException;
import java.io.OutputStream;
@@ -45,7 +45,7 @@
closed = true;
}
};
- shielded = new CloseShieldOutputStream(original);
+ shielded = CloseShieldOutputStream.wrap(original);
closed = false;
}
@@ -53,12 +53,7 @@
public void testClose() throws IOException {
shielded.close();
assertFalse(closed, "closed");
- try {
- shielded.write('x');
- fail("write(b)");
- } catch (final IOException ignore) {
- // expected
- }
+ assertThrows(IOException.class, () -> shielded.write('x'), "write(b)");
original.write('y');
assertEquals(1, original.size());
assertEquals('y', original.toByteArray()[0]);
diff --git a/src/test/java/org/apache/commons/io/output/CloseShieldWriterTest.java b/src/test/java/org/apache/commons/io/output/CloseShieldWriterTest.java
index 3fb3eae..a792868 100644
--- a/src/test/java/org/apache/commons/io/output/CloseShieldWriterTest.java
+++ b/src/test/java/org/apache/commons/io/output/CloseShieldWriterTest.java
@@ -17,7 +17,7 @@
package org.apache.commons.io.output;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.fail;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -40,19 +40,14 @@
@BeforeEach
public void setUp() {
original = spy(new StringBuilderWriter());
- shielded = new CloseShieldWriter(original);
+ shielded = CloseShieldWriter.wrap(original);
}
@Test
public void testClose() throws IOException {
shielded.close();
verify(original, never()).close();
- try {
- shielded.write('x');
- fail("write(c)");
- } catch (final IOException ignore) {
- // expected
- }
+ assertThrows(IOException.class, () -> shielded.write('x'), "write(c)");
original.write('y');
assertEquals(1, original.getBuilder().length());
assertEquals('y', original.toString().charAt(0));