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 2019/10/17 16:08:55 UTC

[commons-vfs] 02/02: [VFS-742] Add org.apache.commons.vfs2.FileContent.isEmpty().

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-vfs.git

commit 8b96e71ab4d52eb9b1ec5f5989888b2a26e41dbe
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Oct 17 12:08:48 2019 -0400

    [VFS-742] Add org.apache.commons.vfs2.FileContent.isEmpty().
---
 .../vfs2/provider/webdav/test/WebdavVersioningTests.java  |  3 +++
 .../provider/webdav4/test/Webdav4VersioningTests.java     |  3 +++
 .../main/java/org/apache/commons/vfs2/FileContent.java    | 15 +++++++++++++--
 .../org/apache/commons/vfs2/filter/EmptyFileFilter.java   |  2 +-
 .../commons/vfs2/provider/DefaultFileContentTest.java     |  1 +
 .../vfs2/provider/hdfs/test/HdfsFileProviderTest.java     |  1 +
 .../vfs2/provider/http/test/HttpProviderTestCase.java     |  2 ++
 .../vfs2/provider/http4/test/Http4ProviderTestCase.java   |  4 ++--
 .../org/apache/commons/vfs2/test/ProviderWriteTests.java  |  1 +
 src/changes/changes.xml                                   |  3 +++
 10 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/commons-vfs2-jackrabbit/src/test/java/org/apache/commons/vfs2/provider/webdav/test/WebdavVersioningTests.java b/commons-vfs2-jackrabbit/src/test/java/org/apache/commons/vfs2/provider/webdav/test/WebdavVersioningTests.java
index bde2c5c..a11c5d3 100644
--- a/commons-vfs2-jackrabbit/src/test/java/org/apache/commons/vfs2/provider/webdav/test/WebdavVersioningTests.java
+++ b/commons-vfs2-jackrabbit/src/test/java/org/apache/commons/vfs2/provider/webdav/test/WebdavVersioningTests.java
@@ -28,6 +28,7 @@ import org.apache.commons.vfs2.provider.webdav.WebdavFileSystemConfigBuilder;
 import org.apache.commons.vfs2.test.AbstractProviderTestCase;
 import org.apache.jackrabbit.webdav.version.DeltaVConstants;
 import org.apache.jackrabbit.webdav.version.VersionControlledResource;
+import org.junit.Assert;
 
 /**
  * Test to verify Webdav Versioning support
@@ -51,6 +52,7 @@ public class WebdavVersioningTests extends AbstractProviderTestCase {
         assertSame(FileType.FILE, file.getType());
         assertTrue(file.isFile());
         assertEquals(0, file.getContent().getSize());
+        assertTrue(file.getContent().isEmpty());
         assertFalse(file.isExecutable());
         assertFalse(file.isHidden());
         assertTrue(file.isReadable());
@@ -101,6 +103,7 @@ public class WebdavVersioningTests extends AbstractProviderTestCase {
         assertSame(FileType.FILE, file.getType());
         assertTrue(file.isFile());
         assertEquals(0, file.getContent().getSize());
+        assertTrue(file.getContent().isEmpty());
         assertFalse(file.isExecutable());
         assertFalse(file.isHidden());
         assertTrue(file.isReadable());
diff --git a/commons-vfs2-jackrabbit2/src/test/java/org/apache/commons/vfs2/provider/webdav4/test/Webdav4VersioningTests.java b/commons-vfs2-jackrabbit2/src/test/java/org/apache/commons/vfs2/provider/webdav4/test/Webdav4VersioningTests.java
index e0c82c4..0174ea2 100644
--- a/commons-vfs2-jackrabbit2/src/test/java/org/apache/commons/vfs2/provider/webdav4/test/Webdav4VersioningTests.java
+++ b/commons-vfs2-jackrabbit2/src/test/java/org/apache/commons/vfs2/provider/webdav4/test/Webdav4VersioningTests.java
@@ -28,6 +28,7 @@ import org.apache.commons.vfs2.provider.webdav4.Webdav4FileSystemConfigBuilder;
 import org.apache.commons.vfs2.test.AbstractProviderTestCase;
 import org.apache.jackrabbit.webdav.version.DeltaVConstants;
 import org.apache.jackrabbit.webdav.version.VersionControlledResource;
+import org.junit.Assert;
 
 /**
  * Test to verify Webdav Versioning support
@@ -53,6 +54,7 @@ public class Webdav4VersioningTests extends AbstractProviderTestCase {
         assertSame(FileType.FILE, file.getType());
         assertTrue(file.isFile());
         assertEquals(0, file.getContent().getSize());
+        assertTrue(file.getContent().isEmpty());
         assertFalse(file.isExecutable());
         assertFalse(file.isHidden());
         assertTrue(file.isReadable());
@@ -103,6 +105,7 @@ public class Webdav4VersioningTests extends AbstractProviderTestCase {
         assertSame(FileType.FILE, file.getType());
         assertTrue(file.isFile());
         assertEquals(0, file.getContent().getSize());
+        assertTrue(file.getContent().isEmpty());
         assertFalse(file.isExecutable());
         assertFalse(file.isHidden());
         assertTrue(file.isReadable());
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileContent.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileContent.java
index 054a1a3..247fb1a 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileContent.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileContent.java
@@ -303,12 +303,23 @@ public interface FileContent extends Closeable {
     boolean hasAttribute(String attrName) throws FileSystemException;
 
     /**
-     * check if this file has open streams.
+     * Checks if the receiver is empty.
+     * 
+     * @return true if the receiver is empty, false otherwise.
+     * @throws FileSystemException
+     * @since 2.5.0
+     */
+    default boolean isEmpty() throws FileSystemException {
+        return getSize() <= 0;
+    }
+
+    /**
+     * Checks if this file has open streams.
      *
      * @return true if the file is open, false otherwise.
      */
     boolean isOpen();
-
+    
     /**
      * Removes the value of an attribute of the file's content.
      *
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/filter/EmptyFileFilter.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/filter/EmptyFileFilter.java
index bc5cdaa..df6db58 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/filter/EmptyFileFilter.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/filter/EmptyFileFilter.java
@@ -95,7 +95,7 @@ public class EmptyFileFilter implements FileFilter, Serializable {
                 return files == null || files.length == 0;
             }
             try (final FileContent content = file.getContent();) {
-                return content.getSize() == 0;
+                return content.isEmpty();
             }
         }
     }
diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/DefaultFileContentTest.java b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/DefaultFileContentTest.java
index e818474..17f84c4 100644
--- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/DefaultFileContentTest.java
+++ b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/DefaultFileContentTest.java
@@ -48,6 +48,7 @@ public class DefaultFileContentTest {
         try (final FileObject fo = fsManager.resolveFile(new File("."), "src/test/resources/test-data/size-0-file.bin");
                 final FileContent content = fo.getContent()) {
             Assert.assertEquals(0, content.getSize());
+            Assert.assertTrue(content.isEmpty());
             Assert.assertEquals(StringUtils.EMPTY, content.getString(StandardCharsets.UTF_8));
             Assert.assertEquals(StringUtils.EMPTY, content.getString(StandardCharsets.UTF_8.name()));
             Assert.assertArrayEquals(ArrayUtils.EMPTY_BYTE_ARRAY, content.getByteArray());
diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/hdfs/test/HdfsFileProviderTest.java b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/hdfs/test/HdfsFileProviderTest.java
index 8f5e748..7bd14c6 100644
--- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/hdfs/test/HdfsFileProviderTest.java
+++ b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/hdfs/test/HdfsFileProviderTest.java
@@ -231,6 +231,7 @@ public class HdfsFileProviderTest {
         final FileObject file = createTestFile(hdfs);
         Assert.assertTrue(fo.exists());
         Assert.assertEquals(0, file.getContent().getSize());
+        Assert.assertTrue(file.getContent().isEmpty());
     }
 
     @Test
diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/http/test/HttpProviderTestCase.java b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/http/test/HttpProviderTestCase.java
index 73a5962..39c455a 100644
--- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/http/test/HttpProviderTestCase.java
+++ b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/http/test/HttpProviderTestCase.java
@@ -178,6 +178,8 @@ public class HttpProviderTestCase extends AbstractProviderTestConfig {
         try (final FileObject fileObject = VFS.getManager()
                 .resolveFile("http://www.w3schools.com/webservices/tempconvert.asmx?action=WSDL")) {
             assert fileObject.getContent().getSize() > 0;
+            assert !fileObject.getContent().isEmpty();
+
         }
     }
 
diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/http4/test/Http4ProviderTestCase.java b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/http4/test/Http4ProviderTestCase.java
index 9cdca28..c49e90c 100644
--- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/http4/test/Http4ProviderTestCase.java
+++ b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/http4/test/Http4ProviderTestCase.java
@@ -188,9 +188,9 @@ public class Http4ProviderTestCase extends AbstractProviderTestConfig {
 
     // Test no longer passing 2016/04/28
     public void ignoreTestHttp405() throws FileSystemException {
-        final FileObject f = VFS.getManager()
+        final FileObject fileObject = VFS.getManager()
                 .resolveFile("http4://www.w3schools.com/webservices/tempconvert.asmx?action=WSDL");
-        assert f.getContent().getSize() > 0;
+        assert !fileObject.getContent().isEmpty();
     }
 
     /** Ensure VFS-453 options are present. */
diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/test/ProviderWriteTests.java b/commons-vfs2/src/test/java/org/apache/commons/vfs2/test/ProviderWriteTests.java
index 4c34269..7ccc0f1 100644
--- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/test/ProviderWriteTests.java
+++ b/commons-vfs2/src/test/java/org/apache/commons/vfs2/test/ProviderWriteTests.java
@@ -110,6 +110,7 @@ public class ProviderWriteTests extends AbstractProviderTestCase {
         assertSame(FileType.FILE, file.getType());
         assertTrue(file.isFile());
         assertEquals(0, file.getContent().getSize());
+        assertTrue(file.getContent().isEmpty());
         assertFalse(file.isHidden());
         assertFalse(file.isSymbolicLink());
         assertTrue(file.isReadable());
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index a282deb..bbed4e4 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -104,6 +104,9 @@ The <action> type attribute can be add,update,fix,remove.
       <action issue="VFS-686" dev="ggregory" type="fix" due-to="Woonsan Ko, Gary Gregory">
         webdav4 provider based on the latest Jackrabbit 2.x #52.
       </action>
+      <action issue="VFS-742" dev="ggregory" type="add" due-to="Gary Gregory">
+        Add org.apache.commons.vfs2.FileContent.isEmpty().
+      </action>
     </release>
     <release version="2.4.1" date="2019-08-10" description="Bug fix release.">
       <action issue="VFS-725" dev="ggregory" type="fix" due-to="Gary Gregory">