You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2013/04/21 01:23:36 UTC
svn commit: r1470251 - in /commons/proper/io/trunk/src: changes/changes.xml
main/java/org/apache/commons/io/IOUtils.java
test/java/org/apache/commons/io/IOUtilsTestCase.java
Author: sebb
Date: Sat Apr 20 23:23:36 2013
New Revision: 1470251
URL: http://svn.apache.org/r1470251
Log:
IO-330 IOUtils#toBufferedOutputStream/toBufferedWriter to conditionally wrap the output
Added asBufferedInputStream, asBufferedOutputStream, asBufferedReader, asBufferedWriter
Modified:
commons/proper/io/trunk/src/changes/changes.xml
commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java
commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.java
Modified: commons/proper/io/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/changes/changes.xml?rev=1470251&r1=1470250&r2=1470251&view=diff
==============================================================================
--- commons/proper/io/trunk/src/changes/changes.xml (original)
+++ commons/proper/io/trunk/src/changes/changes.xml Sat Apr 20 23:23:36 2013
@@ -47,6 +47,10 @@ The <action> type attribute can be add,u
<body>
<!-- The release date is the date RC is cut -->
<release version="2.5" date="2013-??-??" description="New features and bug fixes.">
+ <action issue="IO-330" dev="sebb" type="add">
+ IOUtils#toBufferedOutputStream/toBufferedWriter to conditionally wrap the output
+ Added asBufferedInputStream, asBufferedOutputStream, asBufferedReader, asBufferedWriter
+ </action>
<action issue="IO-346" dev="sebb" type="add">
Add ByteArrayOutputStream.toInputStream()
</action>
Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java?rev=1470251&r1=1470250&r2=1470251&view=diff
==============================================================================
--- commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java (original)
+++ commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java Sat Apr 20 23:23:36 2013
@@ -17,7 +17,9 @@
package org.apache.commons.io;
import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
import java.io.BufferedReader;
+import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.CharArrayWriter;
import java.io.Closeable;
@@ -434,18 +436,84 @@ public class IOUtils {
}
/**
- * Returns the given reader if it is a {@link BufferedReader}, otherwise creates a toBufferedReader for the given
+ * Returns the given reader if it is a {@link BufferedReader}, otherwise creates a BufferedReader from the given
* reader.
*
* @param reader
- * the reader to wrap or return
+ * the reader to wrap or return (not null)
* @return the given reader or a new {@link BufferedReader} for the given reader
* @since 2.2
+ * @see #asBufferedReader(Reader)
+ * @throws NullPointerException if the input parameter is null
*/
public static BufferedReader toBufferedReader(final Reader reader) {
return reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader);
}
+ /**
+ * Returns the given reader if it is already a {@link BufferedReader}, otherwise creates a BufferedReader from the given
+ * reader.
+ *
+ * @param reader
+ * the reader to wrap or return (not null)
+ * @return the given reader or a new {@link BufferedReader} for the given reader
+ * @since 2.5
+ * @throws NullPointerException if the input parameter is null
+ */
+ public static BufferedReader asBufferedReader(final Reader reader) {
+ return reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader);
+ }
+
+ /**
+ * Returns the given Writer if it is already a {@link BufferedWriter}, otherwise creates a BufferedWriter from the given
+ * Writer.
+ *
+ * @param writer
+ * the Writer to wrap or return (not null)
+ * @return the given Writer or a new {@link BufferedWriter} for the given Writer
+ * @since 2.5
+ * @throws NullPointerException if the input parameter is null
+ */
+ public static BufferedWriter asBufferedWriter(final Writer writer) {
+ return writer instanceof BufferedWriter ? (BufferedWriter) writer : new BufferedWriter(writer);
+ }
+
+ /**
+ * Returns the given OutputStream if it is already a {@link BufferedOutputStream}, otherwise creates a BufferedOutputStream from the given
+ * OutputStream.
+ *
+ * @param outputStream
+ * the OutputStream to wrap or return (not null)
+ * @return the given OutputStream or a new {@link BufferedOutputStream} for the given OutputStream
+ * @since 2.5
+ * @throws NullPointerException if the input parameter is null
+ */
+ public static BufferedOutputStream asBufferedOutputStream(final OutputStream outputStream) {
+ // reject null early on rather than waiting for IO operation to fail
+ if (outputStream == null) { // not checked by BufferedOutputStream
+ throw new NullPointerException();
+ }
+ return outputStream instanceof BufferedOutputStream ? (BufferedOutputStream) outputStream : new BufferedOutputStream(outputStream);
+ }
+
+ /**
+ * Returns the given InputStream if it is already a {@link BufferedInputStream}, otherwise creates a BufferedInputStream from the given
+ * InputStream.
+ *
+ * @param inputStream
+ * the InputStream to wrap or return (not null)
+ * @return the given InputStream or a new {@link BufferedInputStream} for the given InputStream
+ * @since 2.5
+ * @throws NullPointerException if the input parameter is null
+ */
+ public static BufferedInputStream asBufferedInputStream(final InputStream inputStream) {
+ // reject null early on rather than waiting for IO operation to fail
+ if (inputStream == null) { // not checked by BufferedInputStream
+ throw new NullPointerException();
+ }
+ return inputStream instanceof BufferedInputStream ? (BufferedInputStream) inputStream : new BufferedInputStream(inputStream);
+ }
+
// read toByteArray
//-----------------------------------------------------------------------
/**
Modified: commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.java?rev=1470251&r1=1470250&r2=1470251&view=diff
==============================================================================
--- commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.java (original)
+++ commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.java Sat Apr 20 23:23:36 2013
@@ -17,7 +17,9 @@
package org.apache.commons.io;
import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
import java.io.BufferedReader;
+import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.CharArrayReader;
@@ -32,8 +34,10 @@ import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.io.OutputStream;
import java.io.Reader;
import java.io.StringReader;
+import java.io.Writer;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URI;
@@ -1205,4 +1209,86 @@ public class IOUtilsTestCase extends Fil
public void testToString_URL_CharsetNameNull() throws Exception {
testToString_URL(null);
}
+
+ public void testAsBufferedNull() {
+ try {
+ IOUtils.asBufferedInputStream(null);
+ fail("Expected NullPointerException");
+ } catch (NullPointerException npe) {
+ // expected
+ }
+ try {
+ IOUtils.asBufferedOutputStream(null);
+ fail("Expected NullPointerException");
+ } catch (NullPointerException npe) {
+ // expected
+ }
+ try {
+ IOUtils.asBufferedReader(null);
+ fail("Expected NullPointerException");
+ } catch (NullPointerException npe) {
+ // expected
+ }
+ try {
+ IOUtils.asBufferedWriter(null);
+ fail("Expected NullPointerException");
+ } catch (NullPointerException npe) {
+ // expected
+ }
+ }
+
+ public void testAsBufferedInputStream() {
+ InputStream is = new InputStream() {
+ @Override
+ public int read() throws IOException {
+ return 0;
+ }
+ };
+ final BufferedInputStream bis = IOUtils.asBufferedInputStream(is);
+ assertNotSame(is, bis);
+ assertSame(bis, IOUtils.asBufferedInputStream(bis));
+ }
+
+ public void testAsBufferedOutputStream() {
+ OutputStream is = new OutputStream() {
+ @Override
+ public void write(int b) throws IOException { }
+ };
+ final BufferedOutputStream bis = IOUtils.asBufferedOutputStream(is);
+ assertNotSame(is, bis);
+ assertSame(bis, IOUtils.asBufferedOutputStream(bis));
+ }
+
+ public void testAsBufferedReader() {
+ Reader is = new Reader() {
+ @Override
+ public int read(char[] cbuf, int off, int len) throws IOException {
+ return 0;
+ }
+ @Override
+ public void close() throws IOException { }
+ };
+ final BufferedReader bis = IOUtils.asBufferedReader(is);
+ assertNotSame(is, bis);
+ assertSame(bis, IOUtils.asBufferedReader(bis));
+ }
+
+ public void testAsBufferedWriter() {
+ Writer is = new Writer() {
+ @Override
+ public void write(int b) throws IOException { }
+
+ @Override
+ public void write(char[] cbuf, int off, int len) throws IOException { }
+
+ @Override
+ public void flush() throws IOException { }
+
+ @Override
+ public void close() throws IOException { }
+ };
+ final BufferedWriter bis = IOUtils.asBufferedWriter(is);
+ assertNotSame(is, bis);
+ assertSame(bis, IOUtils.asBufferedWriter(bis));
+ }
}