RFR: JDK-8260966 (fs) Consolidate Linux and macOS implementations of UserDefinedFileAttributeView [v3]

Sebastian Stenzel github.com+1204330+overheadhunter at openjdk.java.net
Tue Mar 2 05:40:05 UTC 2021


> Deduplicated code in these classes:
> - `LinuxUserDefinedAttributeView` + `BsdUserDefinedAttributeView` → `UnixUserDefinedAttributeView`. Due to different supported length of attribute names, I added an abstract method `UnixUserDefinedAttributeView.maxNameLength()`.
> - `LinuxNativeDispatcher` + `BsdNativeDispatcher` → `UnixNativeDispatcher`. I basically just moved the Linux implementation up to Unix and added preprocessor directives to distinguish Linux/BSD/Other. Others will throw ENOTSUP UnixExceptions.
> - `LinuxFileStore.isExtendedAttributesEnabled()` + `BsdFileStore.isExtendedAttributesEnabled()` → `UnixFileStore.isExtendedAttributesEnabled()`
> 
> For the latter I introduced `UnixConstants.XATTR_NOT_FOUND`, which is `ENODATA` on Linux and `ENOATTR` on BSD. Note that `UnixConstants.ENODATA` is still present, as @AlanBateman "would prefer if we left ENODATA so that it can be used in Linux specific code" (Quote from https://github.com/openjdk/jdk/pull/2363#issuecomment-772534587)
> 
> This also fixes `Files.copy(src, dst, StandardCopyOption.COPY_ATTRIBUTES)` on macOS/BSD. Previosly an [invocation was missing](https://github.com/openjdk/jdk/blob/jdk-17%2B7/src/java.base/macosx/classes/sun/nio/fs/BsdFileSystem.java#L70-L72).
> 
> I plan to add further commits to clean up this code, once the deduplication is reviewed.

Sebastian Stenzel has updated the pull request incrementally with one additional commit since the last revision:

  Moved method below constructor and changed comment style

-------------

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/2604/files
  - new: https://git.openjdk.java.net/jdk/pull/2604/files/79b623c2..639a82a3

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=2604&range=02
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=2604&range=01-02

  Stats: 14 lines in 2 files changed: 9 ins; 3 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk/pull/2604.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/2604/head:pull/2604

PR: https://git.openjdk.java.net/jdk/pull/2604


More information about the nio-dev mailing list