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 ec50f298 Add AbstractOrigin.size() ec50f298 is described below commit ec50f2987e0fa7f7503154eca25666d78c75a549 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Thu Jun 1 12:54:50 2023 -0400 Add AbstractOrigin.size() --- src/changes/changes.xml | 3 +++ .../org/apache/commons/io/build/AbstractOrigin.java | 21 +++++++++++++++++++++ .../apache/commons/io/build/AbstractOriginTest.java | 6 ++++++ .../commons/io/build/OutputStreamOriginTest.java | 7 +++++++ .../commons/io/build/WriterStreamOriginTest.java | 7 +++++++ 5 files changed, 44 insertions(+) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index c733565c..eff21635 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -86,6 +86,9 @@ The <action> type attribute can be add,update,fix,remove. <action dev="ggregory" type="add" due-to="Gary Gregory"> Add and use RandomAccessFiles. </action> + <action dev="ggregory" type="add" due-to="Gary Gregory"> + Add AbstractOrigin.size(). + </action> <!-- UPDATE --> <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot"> Bump commons-parent from 57 to 58. diff --git a/src/main/java/org/apache/commons/io/build/AbstractOrigin.java b/src/main/java/org/apache/commons/io/build/AbstractOrigin.java index efb3d051..2e19a163 100644 --- a/src/main/java/org/apache/commons/io/build/AbstractOrigin.java +++ b/src/main/java/org/apache/commons/io/build/AbstractOrigin.java @@ -86,6 +86,11 @@ public abstract class AbstractOrigin<T, B extends AbstractOrigin<T, B>> extends return new InputStreamReader(getInputStream(), charset); } + @Override + public long size() throws IOException { + return origin.length; + } + } /** @@ -127,6 +132,11 @@ public abstract class AbstractOrigin<T, B extends AbstractOrigin<T, B>> extends return new InputStreamReader(getInputStream(), charset); } + @Override + public long size() throws IOException { + return origin.length(); + } + } /** @@ -501,6 +511,17 @@ public abstract class AbstractOrigin<T, B extends AbstractOrigin<T, B>> extends return Files.newBufferedWriter(getPath(), charset, options); } + /** + * Gets the size of the origin, if possible. + * + * @return the size of the origin in bytes or characters. + * @throws IOException if an I/O error occurs. + * @since 2.13.0 + */ + public long size() throws IOException { + return Files.size(getPath()); + } + @Override public String toString() { return origin.toString(); diff --git a/src/test/java/org/apache/commons/io/build/AbstractOriginTest.java b/src/test/java/org/apache/commons/io/build/AbstractOriginTest.java index b36332b7..8cd1c1ff 100644 --- a/src/test/java/org/apache/commons/io/build/AbstractOriginTest.java +++ b/src/test/java/org/apache/commons/io/build/AbstractOriginTest.java @@ -17,6 +17,7 @@ package org.apache.commons.io.build; import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import java.io.IOException; @@ -124,4 +125,9 @@ public abstract class AbstractOriginTest<T, B extends AbstractOrigin<T, B>> { assertNotNull(writer); } } + + @Test + public void testSize() throws IOException { + assertEquals(Files.size(Paths.get(FILE_NAME_RO)), getOriginRo().getByteArray().length); + } } diff --git a/src/test/java/org/apache/commons/io/build/OutputStreamOriginTest.java b/src/test/java/org/apache/commons/io/build/OutputStreamOriginTest.java index 231fc3c6..fcd6f10d 100644 --- a/src/test/java/org/apache/commons/io/build/OutputStreamOriginTest.java +++ b/src/test/java/org/apache/commons/io/build/OutputStreamOriginTest.java @@ -102,4 +102,11 @@ public class OutputStreamOriginTest extends AbstractOriginTest<OutputStream, Out assertThrows(UnsupportedOperationException.class, super::testGetReader); } + @Override + @Test + public void testSize() { + // Cannot convert a Writer to a size. + assertThrows(UnsupportedOperationException.class, super::testSize); + } + } diff --git a/src/test/java/org/apache/commons/io/build/WriterStreamOriginTest.java b/src/test/java/org/apache/commons/io/build/WriterStreamOriginTest.java index 36e703dc..c7779e39 100644 --- a/src/test/java/org/apache/commons/io/build/WriterStreamOriginTest.java +++ b/src/test/java/org/apache/commons/io/build/WriterStreamOriginTest.java @@ -101,4 +101,11 @@ public class WriterStreamOriginTest extends AbstractOriginTest<Writer, WriterOri assertThrows(UnsupportedOperationException.class, super::testGetReader); } + @Override + @Test + public void testSize() { + // Cannot convert a Writer to a size. + assertThrows(UnsupportedOperationException.class, super::testSize); + } + }