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())