You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2022/04/25 12:10:29 UTC

[camel] 05/07: CAMEL-17894: avoid reading file attributes multiple times

This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit a5a1ecc9ccb98f9f62e93ee22aa4988039a14e14
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Mon Apr 25 12:03:25 2022 +0200

    CAMEL-17894: avoid reading file attributes multiple times
---
 .../maven/packaging/AbstractGenerateMojo.java      | 26 +++++++++++++++++-----
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/AbstractGenerateMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/AbstractGenerateMojo.java
index 7f26bf317c3..b7d2ed2ff9f 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/AbstractGenerateMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/AbstractGenerateMojo.java
@@ -24,6 +24,7 @@ import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.nio.file.attribute.BasicFileAttributes;
 import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -162,9 +163,16 @@ public abstract class AbstractGenerateMojo extends AbstractMojo {
                 "org.apache.camel_camel-package-maven-plugin_info_xx");
     }
 
-    private long lastmod(Path p) {
+    private long isRecentlyModifiedFile(Path p) {
         try {
-            return Files.getLastModifiedTime(p).toMillis();
+            BasicFileAttributes fileAttributes = Files.readAttributes(p, BasicFileAttributes.class);
+
+            // if it's a directory, we don't care
+            if (fileAttributes.isDirectory()) {
+                return 0;
+            }
+
+            return fileAttributes.lastModifiedTime().toMillis();
         } catch (IOException e) {
             return 0;
         }
@@ -172,11 +180,17 @@ public abstract class AbstractGenerateMojo extends AbstractMojo {
 
     private Stream<String> newer(long lastmod, File file) {
         try {
-            if (file.isDirectory()) {
-                return Files.walk(file.toPath()).filter(Files::isRegularFile).filter(p -> lastmod(p) > lastmod)
+            if (!file.exists()) {
+                return Stream.empty();
+            }
+
+            BasicFileAttributes fileAttributes = Files.readAttributes(file.toPath(), BasicFileAttributes.class);
+
+            if (fileAttributes.isDirectory()) {
+                return Files.walk(file.toPath()).filter(p -> isRecentlyModifiedFile(p) > lastmod)
                         .map(Path::toString);
-            } else if (file.isFile()) {
-                if (lastmod(file.toPath()) > lastmod) {
+            } else if (fileAttributes.isRegularFile()) {
+                if (fileAttributes.lastModifiedTime().toMillis() > lastmod) {
                     if (file.getName().endsWith(".jar")) {
                         try (ZipFile zf = new ZipFile(file)) {
                             return zf.stream().filter(ze -> !ze.isDirectory())