Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move to Path API (and increase major version to 4) #224

Open
laeubi opened this issue Nov 23, 2022 · 8 comments
Open

Move to Path API (and increase major version to 4) #224

laeubi opened this issue Nov 23, 2022 · 8 comments

Comments

@laeubi
Copy link

laeubi commented Nov 23, 2022

Currently this uses java File API, I wonder if it would be suitable to start a new major release and migrate to the Java Path API? This has several advantages:

  1. Items are not required to be "traditional" local files, but can be anything (e.g. Webdav)
  2. Many utility methods might be obsolete and can be replaced with standard java
  3. A File can easily be converted to a Path (and back if one is only want to work with local files), so existing code can upgrade without much effort.
@michael-o
Copy link
Member

I wouldn't waste any single second on classes or methods which duplicate Apache Commons or other libs. We partially have the same code several times. This must be reduced to a bare minimum first.

@michael-o
Copy link
Member

@laeubi
Copy link
Author

laeubi commented Nov 23, 2022

I wouldn't waste any single second on classes or methods which duplicate Apache Commons or other libs. We partially have the same code several times. This must be reduced to a bare minimum first.

I don't fully understand, as my proposal is to delete such obsolete ones (as Path API provides them already) but for example

currently requires File that would be a place where I like to change to Path and if thats done all over the place then many helper methods might be obsolete already...

@michael-o
Copy link
Member

I wouldn't waste any single second on classes or methods which duplicate Apache Commons or other libs. We partially have the same code several times. This must be reduced to a bare minimum first.

I don't fully understand, as my proposal is to delete such obsolete ones (as Path API provides them already) but for example

currently requires File that would be a place where I like to change to Path and if thats done all over the place then many helper methods might be obsolete already...

Yes, yes. Our both understanding is identical. First sweep, then move to Path.

@slawekjaranowski
Copy link
Member

We also have m-shared-utils ....

https://github.com/apache/maven-shared-utils/blob/25532658debe5bf2c55df7a61e6c6ad388640469/src/main/java/org/apache/maven/shared/utils/io/DirectoryScanner.java#L273-L281

Too many utils ...

@michael-o
Copy link
Member

We also have m-shared-utils ....

https://github.com/apache/maven-shared-utils/blob/25532658debe5bf2c55df7a61e6c6ad388640469/src/main/java/org/apache/maven/shared/utils/io/DirectoryScanner.java#L273-L281

Too many utils ...

We need to get rid of duplicates first. It is just unacceptable for volunteers to have many copies of the same.

@laeubi
Copy link
Author

laeubi commented Nov 24, 2022

We also have m-shared-utils ....

This one is marked deprecated and one should use "java.nio.file.DirectoryStream and related" but I must confess it seems hard to guess how "java.nio.file.DirectoryStream and related classes" should replace this? Can someone came up with a compliant Scanner implementation as a showcase? e.g looking at the default exclude patterns and alike it seems very cumbersome to really replicate this. This still would require

as a minimal change...

We need to get rid of duplicates first. It is just unacceptable for volunteers to have many copies of the same.

But how to proceed here? Who decides what is the duplicate (and possibly takes care of removing it)?

@michael-o
Copy link
Member

We also have m-shared-utils ....

This one is marked deprecated and one should use "java.nio.file.DirectoryStream and related" but I must confess it seems hard to guess how "java.nio.file.DirectoryStream and related classes" should replace this? Can someone came up with a compliant Scanner implementation as a showcase? e.g looking at the default exclude patterns and alike it seems very cumbersome to really replicate this. This still would require

* [Use Path in the Scanner API #226](https://github.com/codehaus-plexus/plexus-utils/pull/226)

as a minimal change...

We need to get rid of duplicates first. It is just unacceptable for volunteers to have many copies of the same.

But how to proceed here? Who decides what is the duplicate (and possibly takes care of removing it)?

I would assume that Scanner and friends must be wrappers around NIO 2 only.

I truly appriciate the effort and engagement, but I want to focus your time and energy at exactly one codebase. We should create a listing of all classes, diff them, no change decide where it will go. All in a new major version.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants