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

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-compress.git


The following commit(s) were added to refs/heads/master by this push:
     new 25e9cb306 Add GzipParameters.getModificationInstant()
25e9cb306 is described below

commit 25e9cb3066ca82b1b12ef08e28bc69125254d0aa
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Wed Nov 6 08:25:00 2024 -0500

    Add GzipParameters.getModificationInstant()
    
    Add GzipParameters.setModificationInstant(Instant)
---
 src/changes/changes.xml                             |  4 +++-
 .../compress/compressors/gzip/GzipParameters.java   | 21 +++++++++++++++++++++
 .../commons/compress/compressors/GZipTest.java      |  7 ++++++-
 3 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 406a69c8b..6f55dcb4b 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -44,11 +44,13 @@ The <action> type attribute can be add,update,fix,remove.
     <title>Apache Commons Compress Release Notes</title>
   </properties>
   <body>
-    <release version="1.27.2" date="YYYY-MM-DD" description="This is a feature 
and maintenance release. Java 8 or later is required.">
+    <release version="1.28.0" date="YYYY-MM-DD" description="This is a feature 
and maintenance release. Java 8 or later is required.">
       <!-- FIX -->
       <action type="fix" issue="COMPRESS-686" dev="ggregory" due-to="Richard 
Blank, Gary Gregory">Better exception messages in 
SeekableInMemoryByteChannel.</action>
       <action type="fix" dev="ggregory" due-to="yujincheng08, Gary 
Gregory">ZipArchiveOutputStream.addRawArchiveEntry() should check 
is2PhaseSource #571.</action> 
       <!-- ADD -->
+      <action type="add" dev="ggregory" due-to="Gary Gregory">Add 
GzipParameters.getModificationInstant().</action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">Add 
GzipParameters.setModificationInstant(Instant).</action>
       <!-- UPDATE -->
       <action type="update" dev="ggregory" due-to="Dependabot, Gary 
Gregory">Bump org.apache.commons:commons-parent from 72 to 78 #563, #567, #574, 
#582, #587, #595.</action>
       <action type="update" dev="ggregory" due-to="Dependabot, Gary 
Gregory">Bump com.github.luben:zstd-jni from 1.5.6-4 to 1.5.6-7 #565, #578, 
#601.</action>
diff --git 
a/src/main/java/org/apache/commons/compress/compressors/gzip/GzipParameters.java
 
b/src/main/java/org/apache/commons/compress/compressors/gzip/GzipParameters.java
index c5c417d5d..c7a98e558 100644
--- 
a/src/main/java/org/apache/commons/compress/compressors/gzip/GzipParameters.java
+++ 
b/src/main/java/org/apache/commons/compress/compressors/gzip/GzipParameters.java
@@ -20,6 +20,7 @@
 package org.apache.commons.compress.compressors.gzip;
 
 import java.io.OutputStream;
+import java.time.Instant;
 import java.util.zip.Deflater;
 
 /**
@@ -102,6 +103,16 @@ public class GzipParameters {
     }
 
 
+    /**
+     * Gets the most recent modification time (MTIME) of the original file 
being compressed.
+     *
+     * @return the most recent modification time.
+     * @since 1.28.0
+     */
+    public Instant getModificationInstant() {
+        return Instant.ofEpochSecond(modificationTime);
+    }
+
     /**
      * Gets the most recent modification time (MTIME) of the original file 
being compressed.
      * <p>
@@ -184,6 +195,16 @@ public class GzipParameters {
         this.fileName = fileName;
     }
 
+    /**
+     * Sets the modification time (MTIME) of the compressed file.
+     *
+     * @param modificationTime the modification time, in milliseconds
+     * @since 1.28.0
+     */
+    public void setModificationInstant(final Instant modificationTime) {
+        this.modificationTime = modificationTime != null ? 
modificationTime.getEpochSecond() : 0;
+    }
+
     /**
      * Sets the modification time (MTIME) of the compressed file.
      * <p>
diff --git 
a/src/test/java/org/apache/commons/compress/compressors/GZipTest.java 
b/src/test/java/org/apache/commons/compress/compressors/GZipTest.java
index fc4cca128..550dbcc30 100644
--- a/src/test/java/org/apache/commons/compress/compressors/GZipTest.java
+++ b/src/test/java/org/apache/commons/compress/compressors/GZipTest.java
@@ -29,6 +29,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.nio.file.Files;
+import java.time.Instant;
 import java.util.zip.Deflater;
 import java.util.zip.GZIPInputStream;
 
@@ -43,6 +44,8 @@ import org.junit.jupiter.params.provider.ValueSource;
 
 public final class GZipTest extends AbstractTest {
 
+    private static final Instant MTIME = Instant.ofEpochSecond(123456000);
+
     @Test
     public void testConcatenatedStreamsReadFirstOnly() throws Exception {
         final File input = getFile("multiple.gz");
@@ -198,7 +201,9 @@ public final class GZipTest extends AbstractTest {
 
         final GzipParameters parameters = new GzipParameters();
         parameters.setCompressionLevel(Deflater.BEST_COMPRESSION);
-        parameters.setModificationTime(123456000);
+        parameters.setModificationInstant(MTIME);
+        assertEquals(MTIME.getEpochSecond(), parameters.getModificationTime());
+        assertEquals(MTIME, parameters.getModificationInstant());
         parameters.setOperatingSystem(13);
         parameters.setFilename("test3.xml");
         assertEquals(parameters.getFilename(), parameters.getFileName());

Reply via email to