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


The following commit(s) were added to refs/heads/master by this push:
     new e79837752 Add RandomAccessFileOutputStream.getRandomAccessFile()
e79837752 is described below

commit e7983775255c0a680c6700062fffd77cc0ddb179
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Wed Jan 1 16:49:18 2025 -0500

    Add RandomAccessFileOutputStream.getRandomAccessFile()
---
 src/changes/changes.xml                             |  1 +
 .../io/output/RandomAccessFileOutputStream.java     | 10 ++++++++++
 .../io/output/RandomAccessFileOutputStreamTest.java | 21 ++++++++++++++++++---
 3 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 526f8f587..621dc27b2 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -57,6 +57,7 @@ The <action> type attribute can be add,update,fix,remove.
       <action dev="ggregory" type="add"                due-to="Gary 
Gregory">ReversedLinesFileReader implements IOIterable&lt;String&gt;.</action>
       <action dev="ggregory" type="add"                due-to="Gary 
Gregory">Add AbstractByteArrayOutputStream.write(CharSequence, 
Charset).</action>
       <action dev="ggregory" type="add"                due-to="Gary 
Gregory">Add AbstractByteArrayOutputStream.write(byte[]).</action>
+      <action dev="ggregory" type="add"                due-to="Gary 
Gregory">Add RandomAccessFileOutputStream.getRandomAccessFile().</action>
       <!-- UPDATE -->
       <action dev="ggregory" type="update"             due-to="Dependabot, 
Gary Gregory">Bump commons.bytebuddy.version from 1.15.10 to 1.15.11 
#710.</action>
     </release>
diff --git 
a/src/main/java/org/apache/commons/io/output/RandomAccessFileOutputStream.java 
b/src/main/java/org/apache/commons/io/output/RandomAccessFileOutputStream.java
index 0edaba63e..ca2177b63 100644
--- 
a/src/main/java/org/apache/commons/io/output/RandomAccessFileOutputStream.java
+++ 
b/src/main/java/org/apache/commons/io/output/RandomAccessFileOutputStream.java
@@ -96,6 +96,16 @@ public final class RandomAccessFileOutputStream extends 
OutputStream {
         super.flush();
     }
 
+    /**
+     * Gets the underlying random access file.
+     *
+     * @return the underlying random access file.
+     * @since 2.19.0
+     */
+    public RandomAccessFile getRandomAccessFile() {
+        return randomAccessFile;
+    }
+
     @Override
     public void write(final int b) throws IOException {
         randomAccessFile.write(b);
diff --git 
a/src/test/java/org/apache/commons/io/output/RandomAccessFileOutputStreamTest.java
 
b/src/test/java/org/apache/commons/io/output/RandomAccessFileOutputStreamTest.java
index 5984a0d83..76b6b23f6 100644
--- 
a/src/test/java/org/apache/commons/io/output/RandomAccessFileOutputStreamTest.java
+++ 
b/src/test/java/org/apache/commons/io/output/RandomAccessFileOutputStreamTest.java
@@ -18,9 +18,11 @@
 package org.apache.commons.io.output;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.io.IOException;
+import java.io.RandomAccessFile;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
@@ -56,6 +58,7 @@ public class RandomAccessFileOutputStreamTest {
         assertEquals(EXPECTED, new String(Files.readAllBytes(fixturePath), 
charset));
         // @formatter:on
         try (RandomAccessFileOutputStream os = 
RandomAccessFileOutputStream.builder().setPath(fixturePath).get()) {
+            validateState(os);
         }
     }
 
@@ -77,6 +80,7 @@ public class RandomAccessFileOutputStreamTest {
         assertEquals(EXPECTED, new String(Files.readAllBytes(fixturePath), 
charset));
         // @formatter:on
         try (RandomAccessFileOutputStream os = 
RandomAccessFileOutputStream.builder().setPath(fixturePath).get()) {
+            validateState(os);
         }
     }
 
@@ -94,6 +98,7 @@ public class RandomAccessFileOutputStreamTest {
         assertEquals(EXPECTED, new String(Files.readAllBytes(fixturePath), 
charset));
         // @formatter:on
         try (RandomAccessFileOutputStream os = 
RandomAccessFileOutputStream.builder().setPath(fixturePath).get()) {
+            validateState(os);
         }
     }
 
@@ -111,6 +116,7 @@ public class RandomAccessFileOutputStreamTest {
         assertEquals(EXPECTED.subSequence(1, EXPECTED.length() - 1), new 
String(Files.readAllBytes(fixturePath), charset));
         // @formatter:on
         try (RandomAccessFileOutputStream os = 
RandomAccessFileOutputStream.builder().setPath(fixturePath).get()) {
+            validateState(os);
         }
     }
 
@@ -122,7 +128,7 @@ public class RandomAccessFileOutputStreamTest {
                 .setPath(fixturePath)
                 .setOpenOptions(StandardOpenOption.WRITE)
                 .get()) {
-            // doNothing
+            validateState(os);
         }
         // @formatter:on
     }
@@ -131,7 +137,7 @@ public class RandomAccessFileOutputStreamTest {
     public void testWriteGetDefault() throws IOException {
         assertThrows(IllegalStateException.class, () -> {
             try (RandomAccessFileOutputStream os = 
RandomAccessFileOutputStream.builder().get()) {
-                // doNothing
+                validateState(os);
             }
         });
     }
@@ -148,7 +154,7 @@ public class RandomAccessFileOutputStreamTest {
         try (RandomAccessFileOutputStream os = 
RandomAccessFileOutputStream.builder()
                 .setPath(fixturePath)
                 .get()) {
-            // doNothing
+            validateState(os);
         }
         // @formatter:on
     }
@@ -162,6 +168,7 @@ public class RandomAccessFileOutputStreamTest {
                 .setPath(fixturePath)
                 .setOpenOptions(StandardOpenOption.WRITE)
                 .get()) {
+            validateState(os);
             final byte[] bytes = EXPECTED.getBytes(charset);
             for (final byte element : bytes) {
                 os.write(element);
@@ -170,7 +177,15 @@ public class RandomAccessFileOutputStreamTest {
         assertEquals(EXPECTED, new String(Files.readAllBytes(fixturePath), 
charset));
         // @formatter:on
         try (RandomAccessFileOutputStream os = 
RandomAccessFileOutputStream.builder().setPath(fixturePath).get()) {
+            validateState(os);
         }
     }
 
+    @SuppressWarnings("resource")
+    private void validateState(final RandomAccessFileOutputStream os) throws 
IOException {
+        final RandomAccessFile randomAccessFile = os.getRandomAccessFile();
+        assertNotNull(randomAccessFile);
+        assertNotNull(randomAccessFile.getFD());
+    }
+
 }

Reply via email to