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
The following commit(s) were added to refs/heads/master by this push: new 107b80b8f Add LocalFileProvider.findLocalFile(Path) 107b80b8f is described below commit 107b80b8f1b63b027b7084eece82f68f81d5739c Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Fri Jan 31 16:06:18 2025 -0500 Add LocalFileProvider.findLocalFile(Path) --- .../org/apache/commons/vfs2/FileSystemManager.java | 13 +++++++++++++ .../commons/vfs2/FileSystemManagerFactoryTest.java | 3 +++ .../vfs2/impl/DefaultFileSystemManagerTest.java | 19 ++++++++++++++++--- src/changes/changes.xml | 1 + 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemManager.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemManager.java index f7582e056..5987b4110 100644 --- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemManager.java +++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemManager.java @@ -21,6 +21,7 @@ import java.lang.reflect.Constructor; import java.net.URI; import java.net.URL; import java.net.URLStreamHandlerFactory; +import java.nio.file.Path; import java.util.Collection; import org.apache.commons.logging.Log; @@ -351,4 +352,16 @@ public interface FileSystemManager extends AutoCloseable { */ FileObject toFileObject(File file) throws FileSystemException; + /** + * Converts a local path into a {@link FileObject}. + * + * @param path The path to convert. + * @return The {@link FileObject} that represents the local file. Never returns null. + * @throws FileSystemException On error converting the file. + * @since 2.10.0 + */ + default FileObject toFileObject(final Path path) throws FileSystemException { + return toFileObject(path.toFile()); + } + } diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/FileSystemManagerFactoryTest.java b/commons-vfs2/src/test/java/org/apache/commons/vfs2/FileSystemManagerFactoryTest.java index 901f864e3..f33bcc007 100644 --- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/FileSystemManagerFactoryTest.java +++ b/commons-vfs2/src/test/java/org/apache/commons/vfs2/FileSystemManagerFactoryTest.java @@ -57,6 +57,9 @@ public class FileSystemManagerFactoryTest { // File final FileObject file = manager.toFileObject(jarFile); check(manager, file); + // Path + final FileObject path = manager.toFileObject(jarFile.toPath()); + check(manager, file); // URI final FileObject file2 = manager.resolveFile(jarFile.toURI()); check(manager, file2); diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/impl/DefaultFileSystemManagerTest.java b/commons-vfs2/src/test/java/org/apache/commons/vfs2/impl/DefaultFileSystemManagerTest.java index 6675e31f5..2161da803 100644 --- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/impl/DefaultFileSystemManagerTest.java +++ b/commons-vfs2/src/test/java/org/apache/commons/vfs2/impl/DefaultFileSystemManagerTest.java @@ -25,6 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; import java.io.File; +import java.nio.file.Path; import java.nio.file.Paths; import org.apache.commons.vfs2.CacheStrategy; @@ -86,7 +87,10 @@ public class DefaultFileSystemManagerTest { VFS.setManager(null); } assertNotNull(VFS.getManager()); - assertFalse(VFS.getManager().resolveFile(Paths.get("DoesNotExist.not").toUri()).exists()); + final Path path = Paths.get("DoesNotExist.not"); + assertFalse(VFS.getManager().resolveFile(path.toUri()).exists()); + assertFalse(VFS.getManager().toFileObject(path.toFile()).exists()); + assertFalse(VFS.getManager().toFileObject(path).exists()); } @Test @@ -94,9 +98,18 @@ public class DefaultFileSystemManagerTest { testCreateFileSystem("src/test/resources/test-data/bla.txt.bz2", Bzip2FileObject.class); } - private void testCreateFileSystem(final String path, final Class<?> clazz) throws FileSystemException { + private void testCreateFileSystem(final String fileStr, final Class<?> clazz) throws FileSystemException { final FileSystemManager manager = VFS.getManager(); - try (FileObject localFileObject = manager.resolveFile(new File(path).getAbsolutePath()); + final Path path = Paths.get(fileStr); + try (FileObject localFileObject = manager.toFileObject(path); + FileObject fileObject = manager.createFileSystem(localFileObject)) { + assertEquals(clazz, fileObject.getClass()); + } + try (FileObject localFileObject = manager.toFileObject(path.toFile()); + FileObject fileObject = manager.createFileSystem(localFileObject)) { + assertEquals(clazz, fileObject.getClass()); + } + try (FileObject localFileObject = manager.resolveFile(new File(fileStr).getAbsolutePath()); FileObject fileObject = manager.createFileSystem(localFileObject)) { assertEquals(clazz, fileObject.getClass()); } diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 73c8022c5..6af3c3c19 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -266,6 +266,7 @@ The <action> type attribute can be add,update,fix,remove. <action type="add" dev="ggregory" due-to="Gary Gregory"> Add FileSystemConfigBuilder.getParamOrDefault(FileSystemOptions, String, T). </action> + <action type="add" dev="ggregory" due-to="Gary Gregory">Add FileSystemManager.toFileObject(Path).</action> <!-- UPDATE --> <action dev="ggregory" due-to="Dependabot, Gary Gregory" type="update"> Bump org.apache.commons:commons-parent from 52 to 81 #497, #588, #592, #600, #608, #615, #623.