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 2f6284a  Add PathUtiFiles.getFileAttributeView() shorthands.
2f6284a is described below

commit 2f6284a654caec50a227b9dfa6d87af6913b77fe
Author: Gary Gregory <[email protected]>
AuthorDate: Tue Sep 28 14:36:29 2021 -0400

    Add PathUtiFiles.getFileAttributeView() shorthands.
    
    - PathUtils.getAclFileAttributeView(Path, LinkOption...)
    - PathUtils.getDosFileAttributeView(Path, LinkOption...)
    - PathUtils.getPosixFileAttributeView(Path, LinkOption...)
---
 src/changes/changes.xml                            |  6 +++
 .../java/org/apache/commons/io/file/PathUtils.java | 44 ++++++++++++++++++++--
 .../org/apache/commons/io/file/PathUtilsTest.java  |  4 +-
 3 files changed, 48 insertions(+), 6 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 5fbe961..49c8fc6 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -244,6 +244,12 @@ The <action> type attribute can be add,update,fix,remove.
       <action dev="ggregory" type="add" due-to="Gary Gregory">
         Add PathUtils.writeString(Path, CharSequence, Charset, OpenOption...).
       </action>
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        Add PathUtiFiles.getFileAttributeView() shorthands:
+          - PathUtils.getAclFileAttributeView(Path, LinkOption...)
+          - PathUtils.getDosFileAttributeView(Path, LinkOption...)
+          - PathUtils.getPosixFileAttributeView(Path, LinkOption...)
+      </action>      
       <!-- UPDATE -->
       <action dev="ggregory" type="add" due-to="Gary Gregory">
         Update FileEntry to use FileTime instead of long for file time stamps.
diff --git a/src/main/java/org/apache/commons/io/file/PathUtils.java 
b/src/main/java/org/apache/commons/io/file/PathUtils.java
index 0f1e01f..fa6ab88 100644
--- a/src/main/java/org/apache/commons/io/file/PathUtils.java
+++ b/src/main/java/org/apache/commons/io/file/PathUtils.java
@@ -729,15 +729,51 @@ public final class PathUtils {
      * @since 2.8.0
      */
     public static List<AclEntry> getAclEntryList(final Path sourcePath) throws 
IOException {
-        final AclFileAttributeView fileAttributeView = 
Files.getFileAttributeView(sourcePath, AclFileAttributeView.class);
+        final AclFileAttributeView fileAttributeView = 
getAclFileAttributeView(sourcePath);
         return fileAttributeView == null ? null : fileAttributeView.getAcl();
     }
 
+    /**
+     * Shorthand for {@code Files.getFileAttributeView(path, 
AclFileAttributeView.class)}.
+     *
+     * @param path the path to the file.
+     * @param options how to handle symbolic links.
+     * @return a AclFileAttributeView, or {@code null} if the attribute view 
type is not available.
+     * @since 2.12.0
+     */
+    public static AclFileAttributeView getAclFileAttributeView(final Path 
path, final LinkOption... options) {
+        return Files.getFileAttributeView(path, AclFileAttributeView.class, 
options);
+    }
+
+    /**
+     * Shorthand for {@code Files.getFileAttributeView(path, 
DosFileAttributeView.class)}.
+     *
+     * @param path the path to the file.
+     * @param options how to handle symbolic links.
+     * @return a DosFileAttributeView, or {@code null} if the attribute view 
type is not available.
+     * @since 2.12.0
+     */
+    public static DosFileAttributeView getDosFileAttributeView(final Path 
path, final LinkOption... options) {
+        return Files.getFileAttributeView(path, DosFileAttributeView.class, 
options);
+    }
+
     private static FileTime getLastModifiedTime(final Path path, final 
LinkOption... options) throws IOException {
         return Files.getLastModifiedTime(Objects.requireNonNull(path, "path"), 
options);
     }
 
     /**
+     * Shorthand for {@code Files.getFileAttributeView(path, 
PosixFileAttributeView.class)}.
+     *
+     * @param path the path to the file.
+     * @param options how to handle symbolic links.
+     * @return a PosixFileAttributeView, or {@code null} if the attribute view 
type is not available.
+     * @since 2.12.0
+     */
+    public static PosixFileAttributeView getPosixFileAttributeView(final Path 
path, final LinkOption... options) {
+        return Files.getFileAttributeView(path, PosixFileAttributeView.class, 
options);
+    }
+
+    /**
      * Gets a {@link Path} representing the system temporary directory.
      *
      * @return the system temporary directory.
@@ -915,6 +951,7 @@ public final class PathUtils {
         return isOlder(file, FileTime.from(instant), options);
     }
 
+
     /**
      * Tests if the given {@code Path} is older than the given time reference.
      *
@@ -943,7 +980,6 @@ public final class PathUtils {
         return isOlder(file, getLastModifiedTime(reference));
     }
 
-
     /**
      * Tests whether the given {@code Path} is a regular file or not. 
Implemented as a null-safe delegate to
      * {@code Files.isRegularFile(Path path, LinkOption... options)}.
@@ -1152,7 +1188,7 @@ public final class PathUtils {
      */
     public static Path setReadOnly(final Path path, final boolean readOnly, 
final LinkOption... linkOptions) throws IOException {
         final List<Exception> causeList = new ArrayList<>(2);
-        final DosFileAttributeView fileAttributeView = 
Files.getFileAttributeView(path, DosFileAttributeView.class, linkOptions);
+        final DosFileAttributeView fileAttributeView = 
getDosFileAttributeView(path, linkOptions);
         if (fileAttributeView != null) {
             // Windows 10
             try {
@@ -1163,7 +1199,7 @@ public final class PathUtils {
                 causeList.add(e);
             }
         }
-        final PosixFileAttributeView posixFileAttributeView = 
Files.getFileAttributeView(path, PosixFileAttributeView.class, linkOptions);
+        final PosixFileAttributeView posixFileAttributeView = 
getPosixFileAttributeView(path, linkOptions);
         if (posixFileAttributeView != null) {
             // Not Windows 10
             final PosixFileAttributes readAttributes = 
posixFileAttributeView.readAttributes();
diff --git a/src/test/java/org/apache/commons/io/file/PathUtilsTest.java 
b/src/test/java/org/apache/commons/io/file/PathUtilsTest.java
index a56736b..6e9f3dc 100644
--- a/src/test/java/org/apache/commons/io/file/PathUtilsTest.java
+++ b/src/test/java/org/apache/commons/io/file/PathUtilsTest.java
@@ -283,11 +283,11 @@ public class PathUtilsTest extends TestArguments {
         PathUtils.setReadOnly(resolved, true);
         assertEquals(true, Files.isReadable(resolved));
         assertEquals(false, Files.isWritable(resolved));
-        final DosFileAttributeView dosFileAttributeView = 
Files.getFileAttributeView(resolved, DosFileAttributeView.class);
+        final DosFileAttributeView dosFileAttributeView = 
PathUtils.getDosFileAttributeView(resolved);
         if (dosFileAttributeView != null) {
             assertTrue(dosFileAttributeView.readAttributes().isReadOnly());
         }
-        final PosixFileAttributeView posixFileAttributeView = 
Files.getFileAttributeView(resolved, PosixFileAttributeView.class);
+        final PosixFileAttributeView posixFileAttributeView = 
PathUtils.getPosixFileAttributeView(resolved);
         if (posixFileAttributeView != null) {
             // Not Windows
             final Set<PosixFilePermission> permissions = 
posixFileAttributeView.readAttributes().permissions();

Reply via email to