On Wed, 24 Nov 2021 14:06:29 GMT, Jaikiran Pai <j...@openjdk.org> wrote:

>> The commit here is a potential fix for the issue noted in 
>> https://bugs.openjdk.java.net/browse/JDK-8258117.
>> 
>> The change here repurposes an existing internal interface `ModuleInfoEntry` 
>> to keep track of the last modified timestamp of a `module-info.class` 
>> descriptor.
>> 
>> This commit uses the timestamp of the `module-info.class` on the filesystem 
>> to set the time on the `JarEntry`. There are a couple of cases to consider 
>> here:
>> 
>> 1. When creating a jar  (using `--create`), we use the source 
>> `module-info.class` from the filesystem and then add extended info to it 
>> (attributes like packages, module version etc...). In such cases, this patch 
>> will use the lastmodified timestamp from the filesystem of 
>> `module-info.class` even though we might end up updating/extending/modifying 
>> (for example by adding a module version) its content while storing it as a 
>> `JarEntry`. 
>> 
>> 2. When updating a jar (using `--update`), this patch will use the 
>> lastmodified timestamp of `module-info.class` either from the filesystem or 
>> from the source jar's entry (depending on whether a new `module-info.class` 
>> is being passed to the command). Here too, it's possible that we might end 
>> up changing/modifying/extending the `module-info.class` (for example, 
>> changing the module version to a new version) that gets written into the 
>> updated jar file, but this patch _won't_ use `System.currentTimeMillis()` 
>> even in such cases.
>> 
>> If we do have to track actual changes that might happen to 
>> `module-info.class` while extending its info (in `extendedInfoBytes()`) and 
>> then decide whether to use current system time as last modified time, then 
>> this will require a bigger change and also a discussion on what kind of 
>> extending of module-info.class content will require a change to the 
>> lastmodifiedtime of that entry.
>
> Jaikiran Pai has updated the pull request with a new target base due to a 
> merge or a rebase. The pull request now contains 13 commits:
> 
>  - Merge latest from master branch
>  - use proper FileTime centric APIs
>  - review suggestion - use FileTime instead of Long to prevent any potential 
> NPEs during unboxing
>  - review suggestion - split into multiple statements to make it easily 
> readable
>  - review suggestion - Use Path.of instead of Paths.get in testcase
>  - review suggestion - store e.getValue() and reuse the stored value
>  - Merge latest from master branch
>  - use testng asserts
>  - Remove "final" usage from test
>  - convert test to testng
>  - ... and 3 more: 
> https://git.openjdk.java.net/jdk/compare/cf7adae6...6f1c1b62

Thank you Lance and Magnus for the latest reviews and the testing. A recent 
commit to master in this area meant that there was a merge conflict in this PR. 
I have now resolved that and pushed the merge to this PR (no other changes). 
The test continues to pass.
Alan, do these latest round of changes around `FileTime` usage that you 
requested, look fine?

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

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

Reply via email to