You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2023/06/01 16:54:54 UTC

[commons-io] branch master updated: Add AbstractOrigin.size()

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 <ga...@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);
+    }
+
 }