cowwoc commented on code in PR #388:
URL: 
https://github.com/apache/maven-build-cache-extension/pull/388#discussion_r2407449594


##########
src/main/java/org/apache/maven/buildcache/CacheUtils.java:
##########
@@ -193,16 +209,27 @@ public static void unzip(Path zip, Path out) throws 
IOException {
                     throw new RuntimeException("Bad zip entry");
                 }
                 if (entry.isDirectory()) {
-                    Files.createDirectory(file);
+                    if (!Files.exists(file)) {
+                        Files.createDirectories(file);
+                    }
+                    directoryTimestamps.put(file, entry.getTime());
                 } else {
                     Path parent = file.getParent();
-                    Files.createDirectories(parent);
+                    if (!Files.exists(parent)) {
+                        Files.createDirectories(parent);
+                    }
                     Files.copy(zis, file, StandardCopyOption.REPLACE_EXISTING);
+                    Files.setLastModifiedTime(file, 
FileTime.fromMillis(entry.getTime()));
                 }
-                Files.setLastModifiedTime(file, 
FileTime.fromMillis(entry.getTime()));
                 entry = zis.getNextEntry();
             }
         }
+
+        // Set directory timestamps after all files have been extracted to 
avoid them being
+        // updated by file creation operations
+        for (Map.Entry<Path, Long> dirEntry : directoryTimestamps.entrySet()) {
+            Files.setLastModifiedTime(dirEntry.getKey(), 
FileTime.fromMillis(dirEntry.getValue()));

Review Comment:
   I will try to set creationTime = lastModifiedTime to avoid this undefined 
behavior. Thank you.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to