File 0001-Use-maven-archiver-to-parse-ouputTimestamp.patch of Package moditect

From 444f78dfd8e6919faccc001887597fb3e69e961a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <fridrich.strba@bluewin.ch>
Date: Wed, 16 Jul 2025 17:46:10 +0200
Subject: [PATCH] Use maven-archiver to parse ouputTimestamp

---
 maven-plugin/pom.xml                          |  5 ++
 .../mavenplugin/add/AddModuleInfoMojo.java    | 53 ++-----------------
 2 files changed, 8 insertions(+), 50 deletions(-)

diff --git a/maven-plugin/pom.xml b/maven-plugin/pom.xml
index ea2ca1a..5756d49 100644
--- a/maven-plugin/pom.xml
+++ b/maven-plugin/pom.xml
@@ -59,6 +59,11 @@
             <artifactId>moditect</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-archiver</artifactId>
+            <version>3.6.2</version>
+        </dependency>
         <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-plugin-api</artifactId>
diff --git a/maven-plugin/src/main/java/org/moditect/mavenplugin/add/AddModuleInfoMojo.java b/maven-plugin/src/main/java/org/moditect/mavenplugin/add/AddModuleInfoMojo.java
index cb5299d..68e0650 100644
--- a/maven-plugin/src/main/java/org/moditect/mavenplugin/add/AddModuleInfoMojo.java
+++ b/maven-plugin/src/main/java/org/moditect/mavenplugin/add/AddModuleInfoMojo.java
@@ -12,11 +12,6 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
-import java.time.Instant;
-import java.time.OffsetDateTime;
-import java.time.ZoneOffset;
-import java.time.format.DateTimeParseException;
-import java.time.temporal.ChronoUnit;
 import java.util.Arrays;
 import java.util.Enumeration;
 import java.util.HashMap;
@@ -31,6 +26,7 @@ import java.util.jar.JarFile;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
+import org.apache.maven.archiver.MavenArchiver;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
@@ -189,7 +185,7 @@ public class AddModuleInfoMojo extends AbstractMojo {
                         outputPath,
                         jvmVersion,
                         overwriteExistingFiles,
-                        InstantConverter.convert(outputTimestamp));
+                        MavenArchiver.parseBuildOutputTimestamp(outputTimestamp).orElse(null));
 
                 addModuleInfo.run();
 
@@ -226,7 +222,7 @@ public class AddModuleInfoMojo extends AbstractMojo {
                     outputPath,
                     jvmVersion,
                     overwriteExistingFiles,
-                    InstantConverter.convert(outputTimestamp));
+                    MavenArchiver.parseBuildOutputTimestamp(outputTimestamp).orElse(null));
             addModuleInfo.run();
 
             try {
@@ -490,47 +486,4 @@ public class AddModuleInfoMojo extends AbstractMojo {
 
         return null;
     }
-
-    private static class InstantConverter {
-
-        private static final Instant DATE_MIN = Instant.parse("1980-01-01T00:00:02Z");
-        private static final Instant DATE_MAX = Instant.parse("2099-12-31T23:59:59Z");
-
-        public static Instant convert(String value) {
-            if (value == null) {
-                return null;
-            }
-
-            // Number representing seconds since the epoch
-            if (!value.isEmpty() && isNumeric(value)) {
-                return Instant.ofEpochSecond(Long.parseLong(value.trim()));
-            }
-
-            try {
-                // Parse the date in UTC such as '2011-12-03T10:15:30Z' or with an offset '2019-10-05T20:37:42+06:00'.
-                final Instant date = OffsetDateTime.parse(value)
-                        .withOffsetSameInstant(ZoneOffset.UTC).truncatedTo(ChronoUnit.SECONDS).toInstant();
-
-                if (date.isBefore(DATE_MIN) || date.isAfter(DATE_MAX)) {
-                    throw new IllegalArgumentException("'" + date + "' is not within the valid range "
-                            + DATE_MIN + " to " + DATE_MAX);
-                }
-                return date;
-            }
-            catch (DateTimeParseException pe) {
-                throw new IllegalArgumentException("Invalid project.build.outputTimestamp value '" + value + "'",
-                        pe);
-            }
-        }
-
-        private static boolean isNumeric(String str) {
-            try {
-                Long.parseLong(str.trim());
-                return true;
-            }
-            catch (NumberFormatException e) {
-                return false;
-            }
-        }
-    }
 }
-- 
2.50.1

openSUSE Build Service is sponsored by