This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-io.git

commit 22487c3cebb4d2dc41db60ccd3b20e1dd8c14d48
Author: Gary Gregory <[email protected]>
AuthorDate: Sun Jul 25 14:53:55 2021 -0400

    Sort members.
---
 .../commons/io/output/FileWriterWithEncoding.java  | 246 ++++++++++-----------
 1 file changed, 123 insertions(+), 123 deletions(-)

diff --git 
a/src/main/java/org/apache/commons/io/output/FileWriterWithEncoding.java 
b/src/main/java/org/apache/commons/io/output/FileWriterWithEncoding.java
index c1ff5c6..d01937a 100644
--- a/src/main/java/org/apache/commons/io/output/FileWriterWithEncoding.java
+++ b/src/main/java/org/apache/commons/io/output/FileWriterWithEncoding.java
@@ -54,85 +54,93 @@ public class FileWriterWithEncoding extends Writer {
     // Cannot extend ProxyWriter, as requires writer to be
     // known when super() is called
 
-    /** The writer to decorate. */
-    private final Writer out;
-
     /**
-     * Constructs a FileWriterWithEncoding with a file encoding.
+     * Initializes the wrapped file writer. Ensure that a cleanup occurs if 
the writer creation fails.
      *
-     * @param fileName  the name of the file to write to, not null
-     * @param charsetName  the name of the requested charset, not null
-     * @throws NullPointerException if the file name or encoding is null
-     * @throws IOException in case of an I/O error
+     * @param file the file to be accessed
+     * @param encoding the encoding to use - may be Charset, CharsetEncoder or 
String, null uses the default Charset.
+     * @param append true to append
+     * @return the initialized writer
+     * @throws IOException if an error occurs
      */
-    public FileWriterWithEncoding(final String fileName, final String 
charsetName) throws IOException {
-        this(new File(fileName), charsetName, false);
+    private static Writer initWriter(final File file, final Object encoding, 
final boolean append) throws IOException {
+        Objects.requireNonNull(file, "file");
+        OutputStream stream = null;
+        final boolean fileExistedAlready = file.exists();
+        try {
+            stream = Files.newOutputStream(file.toPath(), append ? 
StandardOpenOption.APPEND : StandardOpenOption.CREATE, 
StandardOpenOption.TRUNCATE_EXISTING);
+            if (encoding == null || encoding instanceof Charset) {
+                return new OutputStreamWriter(stream, 
Charsets.toCharset((Charset) encoding));
+            }
+            if (encoding instanceof CharsetEncoder) {
+                return new OutputStreamWriter(stream, (CharsetEncoder) 
encoding);
+            }
+            return new OutputStreamWriter(stream, (String) encoding);
+        } catch (final IOException | RuntimeException ex) {
+            try {
+                IOUtils.close(stream);
+            } catch (final IOException e) {
+                ex.addSuppressed(e);
+            }
+            if (!fileExistedAlready) {
+                FileUtils.deleteQuietly(file);
+            }
+            throw ex;
+        }
     }
 
-    /**
-     * Constructs a FileWriterWithEncoding with a file encoding.
-     *
-     * @param fileName  the name of the file to write to, not null
-     * @param charsetName  the name of the requested charset, not null
-     * @param append  true if content should be appended, false to overwrite
-     * @throws NullPointerException if the file name or encoding is null
-     * @throws IOException in case of an I/O error
-     */
-    public FileWriterWithEncoding(final String fileName, final String 
charsetName, final boolean append)
-            throws IOException {
-        this(new File(fileName), charsetName, append);
-    }
+    /** The writer to decorate. */
+    private final Writer out;
 
     /**
      * Constructs a FileWriterWithEncoding with a file encoding.
      *
-     * @param fileName  the name of the file to write to, not null
-     * @param charset  the charset to use, not null
-     * @throws NullPointerException if the file name or encoding is null
+     * @param file  the file to write to, not null
+     * @param charset  the encoding to use, not null
+     * @throws NullPointerException if the file or encoding is null
      * @throws IOException in case of an I/O error
      */
-    public FileWriterWithEncoding(final String fileName, final Charset 
charset) throws IOException {
-        this(new File(fileName), charset, false);
+    public FileWriterWithEncoding(final File file, final Charset charset) 
throws IOException {
+        this(file, charset, false);
     }
 
     /**
      * Constructs a FileWriterWithEncoding with a file encoding.
      *
-     * @param fileName  the name of the file to write to, not null
-     * @param charset  the encoding to use, not null
-     * @param append  true if content should be appended, false to overwrite
-     * @throws NullPointerException if the file name or encoding is null
-     * @throws IOException in case of an I/O error
+     * @param file  the file to write to, not null.
+     * @param encoding  the name of the requested charset, null uses the 
default Charset.
+     * @param append  true if content should be appended, false to overwrite.
+     * @throws NullPointerException if the file is null.
+     * @throws IOException in case of an I/O error.
      */
-    public FileWriterWithEncoding(final String fileName, final Charset 
charset, final boolean append)
-            throws IOException {
-        this(new File(fileName), charset, append);
+    public FileWriterWithEncoding(final File file, final Charset encoding, 
final boolean append) throws IOException {
+        this.out = initWriter(file, encoding, append);
     }
 
     /**
      * Constructs a FileWriterWithEncoding with a file encoding.
      *
-     * @param fileName  the name of the file to write to, not null
-     * @param encoding  the encoding to use, not null
-     * @throws NullPointerException if the file name or encoding is null
+     * @param file  the file to write to, not null
+     * @param charsetEncoder  the encoding to use, not null
+     * @throws NullPointerException if the file or encoding is null
      * @throws IOException in case of an I/O error
      */
-    public FileWriterWithEncoding(final String fileName, final CharsetEncoder 
encoding) throws IOException {
-        this(new File(fileName), encoding, false);
+    public FileWriterWithEncoding(final File file, final CharsetEncoder 
charsetEncoder) throws IOException {
+        this(file, charsetEncoder, false);
     }
 
     /**
      * Constructs a FileWriterWithEncoding with a file encoding.
      *
-     * @param fileName  the name of the file to write to, not null
-     * @param charsetEncoder  the encoding to use, not null
-     * @param append  true if content should be appended, false to overwrite
-     * @throws NullPointerException if the file name or encoding is null
-     * @throws IOException in case of an I/O error
+     * @param file  the file to write to, not null.
+     * @param charsetEncoder  the encoding to use, null uses the default 
Charset.
+     * @param append  true if content should be appended, false to overwrite.
+     * @throws NullPointerException if the file  is null.
+     * @throws IOException in case of an I/O error.
      */
-    public FileWriterWithEncoding(final String fileName, final CharsetEncoder 
charsetEncoder, final boolean append)
+    public FileWriterWithEncoding(final File file, final CharsetEncoder 
charsetEncoder, final boolean append)
             throws IOException {
-        this(new File(fileName), charsetEncoder, append);
+        this.out = initWriter(file, charsetEncoder, append);
     }
 
     /**
@@ -163,97 +171,97 @@ public class FileWriterWithEncoding extends Writer {
     /**
      * Constructs a FileWriterWithEncoding with a file encoding.
      *
-     * @param file  the file to write to, not null
+     * @param fileName  the name of the file to write to, not null
+     * @param charset  the charset to use, not null
+     * @throws NullPointerException if the file name or encoding is null
+     * @throws IOException in case of an I/O error
+     */
+    public FileWriterWithEncoding(final String fileName, final Charset 
charset) throws IOException {
+        this(new File(fileName), charset, false);
+    }
+
+    /**
+     * Constructs a FileWriterWithEncoding with a file encoding.
+     *
+     * @param fileName  the name of the file to write to, not null
      * @param charset  the encoding to use, not null
-     * @throws NullPointerException if the file or encoding is null
+     * @param append  true if content should be appended, false to overwrite
+     * @throws NullPointerException if the file name or encoding is null
      * @throws IOException in case of an I/O error
      */
-    public FileWriterWithEncoding(final File file, final Charset charset) 
throws IOException {
-        this(file, charset, false);
+    public FileWriterWithEncoding(final String fileName, final Charset 
charset, final boolean append)
+            throws IOException {
+        this(new File(fileName), charset, append);
     }
 
     /**
      * Constructs a FileWriterWithEncoding with a file encoding.
      *
-     * @param file  the file to write to, not null.
-     * @param encoding  the name of the requested charset, null uses the 
default Charset.
-     * @param append  true if content should be appended, false to overwrite.
-     * @throws NullPointerException if the file is null.
-     * @throws IOException in case of an I/O error.
+     * @param fileName  the name of the file to write to, not null
+     * @param encoding  the encoding to use, not null
+     * @throws NullPointerException if the file name or encoding is null
+     * @throws IOException in case of an I/O error
      */
-    public FileWriterWithEncoding(final File file, final Charset encoding, 
final boolean append) throws IOException {
-        this.out = initWriter(file, encoding, append);
+    public FileWriterWithEncoding(final String fileName, final CharsetEncoder 
encoding) throws IOException {
+        this(new File(fileName), encoding, false);
     }
 
     /**
      * Constructs a FileWriterWithEncoding with a file encoding.
      *
-     * @param file  the file to write to, not null
+     * @param fileName  the name of the file to write to, not null
      * @param charsetEncoder  the encoding to use, not null
-     * @throws NullPointerException if the file or encoding is null
+     * @param append  true if content should be appended, false to overwrite
+     * @throws NullPointerException if the file name or encoding is null
      * @throws IOException in case of an I/O error
      */
-    public FileWriterWithEncoding(final File file, final CharsetEncoder 
charsetEncoder) throws IOException {
-        this(file, charsetEncoder, false);
+    public FileWriterWithEncoding(final String fileName, final CharsetEncoder 
charsetEncoder, final boolean append)
+            throws IOException {
+        this(new File(fileName), charsetEncoder, append);
     }
 
     /**
      * Constructs a FileWriterWithEncoding with a file encoding.
      *
-     * @param file  the file to write to, not null.
-     * @param charsetEncoder  the encoding to use, null uses the default 
Charset.
-     * @param append  true if content should be appended, false to overwrite.
-     * @throws NullPointerException if the file  is null.
-     * @throws IOException in case of an I/O error.
+     * @param fileName  the name of the file to write to, not null
+     * @param charsetName  the name of the requested charset, not null
+     * @throws NullPointerException if the file name or encoding is null
+     * @throws IOException in case of an I/O error
      */
-    public FileWriterWithEncoding(final File file, final CharsetEncoder 
charsetEncoder, final boolean append)
-            throws IOException {
-        this.out = initWriter(file, charsetEncoder, append);
+    public FileWriterWithEncoding(final String fileName, final String 
charsetName) throws IOException {
+        this(new File(fileName), charsetName, false);
     }
 
     /**
-     * Initializes the wrapped file writer. Ensure that a cleanup occurs if 
the writer creation fails.
+     * Constructs a FileWriterWithEncoding with a file encoding.
      *
-     * @param file the file to be accessed
-     * @param encoding the encoding to use - may be Charset, CharsetEncoder or 
String, null uses the default Charset.
-     * @param append true to append
-     * @return the initialized writer
-     * @throws IOException if an error occurs
+     * @param fileName  the name of the file to write to, not null
+     * @param charsetName  the name of the requested charset, not null
+     * @param append  true if content should be appended, false to overwrite
+     * @throws NullPointerException if the file name or encoding is null
+     * @throws IOException in case of an I/O error
      */
-    private static Writer initWriter(final File file, final Object encoding, 
final boolean append) throws IOException {
-        Objects.requireNonNull(file, "file");
-        OutputStream stream = null;
-        final boolean fileExistedAlready = file.exists();
-        try {
-            stream = Files.newOutputStream(file.toPath(), append ? 
StandardOpenOption.APPEND : StandardOpenOption.CREATE, 
StandardOpenOption.TRUNCATE_EXISTING);
-            if (encoding == null || encoding instanceof Charset) {
-                return new OutputStreamWriter(stream, 
Charsets.toCharset((Charset) encoding));
-            }
-            if (encoding instanceof CharsetEncoder) {
-                return new OutputStreamWriter(stream, (CharsetEncoder) 
encoding);
-            }
-            return new OutputStreamWriter(stream, (String) encoding);
-        } catch (final IOException | RuntimeException ex) {
-            try {
-                IOUtils.close(stream);
-            } catch (final IOException e) {
-                ex.addSuppressed(e);
-            }
-            if (!fileExistedAlready) {
-                FileUtils.deleteQuietly(file);
-            }
-            throw ex;
-        }
+    public FileWriterWithEncoding(final String fileName, final String 
charsetName, final boolean append)
+            throws IOException {
+        this(new File(fileName), charsetName, append);
     }
 
     /**
-     * Writes a character.
-     * @param idx the character to write
+     * Closes the stream.
      * @throws IOException if an I/O error occurs.
      */
      @Override
-    public void write(final int idx) throws IOException {
-        out.write(idx);
+    public void close() throws IOException {
+        out.close();
+    }
+
+    /**
+     * Flushes the stream.
+     * @throws IOException if an I/O error occurs.
+     */
+     @Override
+    public void flush() throws IOException {
+        out.flush();
     }
 
     /**
@@ -279,6 +287,16 @@ public class FileWriterWithEncoding extends Writer {
     }
 
     /**
+     * Writes a character.
+     * @param idx the character to write
+     * @throws IOException if an I/O error occurs.
+     */
+     @Override
+    public void write(final int idx) throws IOException {
+        out.write(idx);
+    }
+
+    /**
      * Writes the characters from a string.
      * @param str the string to write
      * @throws IOException if an I/O error occurs.
@@ -299,22 +317,4 @@ public class FileWriterWithEncoding extends Writer {
     public void write(final String str, final int st, final int end) throws 
IOException {
         out.write(str, st, end);
     }
-
-    /**
-     * Flushes the stream.
-     * @throws IOException if an I/O error occurs.
-     */
-     @Override
-    public void flush() throws IOException {
-        out.flush();
-    }
-
-    /**
-     * Closes the stream.
-     * @throws IOException if an I/O error occurs.
-     */
-     @Override
-    public void close() throws IOException {
-        out.close();
-    }
 }

Reply via email to