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

commit 1be1abb9523da66d6e537de64215eae14c0b64ea
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Thu May 5 13:39:43 2022 -0400

    Add SevenZArchiveEntry.setContentMethods(SevenZMethodConfiguration...).
---
 src/changes/changes.xml                              |  3 +++
 .../archivers/sevenz/SevenZArchiveEntry.java         | 19 +++++++++++++++++++
 .../archivers/sevenz/SevenZArchiveEntryTest.java     | 20 ++++++++++----------
 3 files changed, 32 insertions(+), 10 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index e2833331..ec2f512a 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -122,6 +122,9 @@ The <action> type attribute can be add,update,fix,remove.
       <action issue="COMPRESS-612" type="add" dev="ggregory" due-to="Andre 
Brait, Gary Gregory">
         Improve TAR support for file times #254.
       </action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        Add SevenZArchiveEntry.setContentMethods(SevenZMethodConfiguration...).
+      </action>
       <!-- UPDATE -->
       <action type="update" dev="ggregory" due-to="Dependabot">
         Bump mockito-core from 3.11.1 to 4.5.1 #209, #224, #231, #235, #243, 
#253, #286.
diff --git 
a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntry.java
 
b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntry.java
index 7c2b8142..e3e72064 100644
--- 
a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntry.java
+++ 
b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntry.java
@@ -17,6 +17,7 @@
  */
 package org.apache.commons.compress.archivers.sevenz;
 
+import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collections;
 import java.util.Date;
@@ -470,6 +471,24 @@ public class SevenZArchiveEntry implements ArchiveEntry {
         }
     }
 
+    /**
+     * Sets the (compression) methods to use for entry's content - the
+     * default is LZMA2.
+     *
+     * <p>Currently only {@link SevenZMethod#COPY}, {@link
+     * SevenZMethod#LZMA2}, {@link SevenZMethod#BZIP2} and {@link
+     * SevenZMethod#DEFLATE} are supported when writing archives.</p>
+     *
+     * <p>The methods will be consulted in iteration order to create
+     * the final output.</p>
+     *
+     * @param methods the methods to use for the content
+     * @since 1.22
+     */
+    public void setContentMethods(SevenZMethodConfiguration... methods) {
+        setContentMethods(Arrays.asList(methods));
+    }
+
     /**
      * Gets the (compression) methods to use for entry's content - the
      * default is LZMA2.
diff --git 
a/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntryTest.java
 
b/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntryTest.java
index fec844b1..6e606768 100644
--- 
a/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntryTest.java
+++ 
b/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntryTest.java
@@ -35,9 +35,9 @@ public class SevenZArchiveEntryTest {
         final SevenZArchiveEntry z1 = new SevenZArchiveEntry();
         final SevenZArchiveEntry z2 = new SevenZArchiveEntry();
         final SevenZArchiveEntry z3 = new SevenZArchiveEntry();
-        z1.setContentMethods(Arrays.asList(new 
SevenZMethodConfiguration(SevenZMethod.LZMA2, 1)));
-        z2.setContentMethods(Arrays.asList(new 
SevenZMethodConfiguration(SevenZMethod.LZMA2, 2)));
-        z3.setContentMethods(Arrays.asList(new 
SevenZMethodConfiguration(SevenZMethod.LZMA2, 2)));
+        z1.setContentMethods(new SevenZMethodConfiguration(SevenZMethod.LZMA2, 
1));
+        z2.setContentMethods(new SevenZMethodConfiguration(SevenZMethod.LZMA2, 
2));
+        z3.setContentMethods(new SevenZMethodConfiguration(SevenZMethod.LZMA2, 
2));
         assertNotEquals(z1, z2);
         assertNotEquals(z2, z1);
         assertEquals(z3, z2);
@@ -48,8 +48,8 @@ public class SevenZArchiveEntryTest {
     public void methodOrderMattersInEquals() {
         final SevenZArchiveEntry z1 = new SevenZArchiveEntry();
         final SevenZArchiveEntry z2 = new SevenZArchiveEntry();
-        z1.setContentMethods(Arrays.asList(new 
SevenZMethodConfiguration(SevenZMethod.LZMA2), new 
SevenZMethodConfiguration(SevenZMethod.DELTA_FILTER)));
-        z2.setContentMethods(Arrays.asList(new 
SevenZMethodConfiguration(SevenZMethod.DELTA_FILTER), new 
SevenZMethodConfiguration(SevenZMethod.LZMA2)));
+        z1.setContentMethods(new 
SevenZMethodConfiguration(SevenZMethod.LZMA2), new 
SevenZMethodConfiguration(SevenZMethod.DELTA_FILTER));
+        z2.setContentMethods(new 
SevenZMethodConfiguration(SevenZMethod.DELTA_FILTER), new 
SevenZMethodConfiguration(SevenZMethod.LZMA2));
         assertNotEquals(z1, z2);
         assertNotEquals(z2, z1);
     }
@@ -58,7 +58,7 @@ public class SevenZArchiveEntryTest {
     public void noMethodsIsDifferentFromSomeMethods() {
         final SevenZArchiveEntry z1 = new SevenZArchiveEntry();
         final SevenZArchiveEntry z2 = new SevenZArchiveEntry();
-        z2.setContentMethods(Arrays.asList(new 
SevenZMethodConfiguration(SevenZMethod.COPY)));
+        z2.setContentMethods(new SevenZMethodConfiguration(SevenZMethod.COPY));
         assertNotEquals(z1, z2);
         assertNotEquals(z2, z1);
     }
@@ -67,8 +67,8 @@ public class SevenZArchiveEntryTest {
     public void oneMethodsIsDifferentFromTwoMethods() {
         final SevenZArchiveEntry z1 = new SevenZArchiveEntry();
         final SevenZArchiveEntry z2 = new SevenZArchiveEntry();
-        z1.setContentMethods(Arrays.asList(new 
SevenZMethodConfiguration(SevenZMethod.COPY)));
-        z2.setContentMethods(Arrays.asList(new 
SevenZMethodConfiguration(SevenZMethod.DELTA_FILTER), new 
SevenZMethodConfiguration(SevenZMethod.LZMA2)));
+        z1.setContentMethods(new SevenZMethodConfiguration(SevenZMethod.COPY));
+        z2.setContentMethods(new 
SevenZMethodConfiguration(SevenZMethod.DELTA_FILTER), new 
SevenZMethodConfiguration(SevenZMethod.LZMA2));
         assertNotEquals(z1, z2);
         assertNotEquals(z2, z1);
     }
@@ -77,8 +77,8 @@ public class SevenZArchiveEntryTest {
     public void sameMethodsYieldEqualEntries() {
         final SevenZArchiveEntry z1 = new SevenZArchiveEntry();
         final SevenZArchiveEntry z2 = new SevenZArchiveEntry();
-        z1.setContentMethods(Arrays.asList(new 
SevenZMethodConfiguration(SevenZMethod.DELTA_FILTER), new 
SevenZMethodConfiguration(SevenZMethod.LZMA2)));
-        z2.setContentMethods(Arrays.asList(new 
SevenZMethodConfiguration(SevenZMethod.DELTA_FILTER), new 
SevenZMethodConfiguration(SevenZMethod.LZMA2)));
+        z1.setContentMethods(new 
SevenZMethodConfiguration(SevenZMethod.DELTA_FILTER), new 
SevenZMethodConfiguration(SevenZMethod.LZMA2));
+        z2.setContentMethods(new 
SevenZMethodConfiguration(SevenZMethod.DELTA_FILTER), new 
SevenZMethodConfiguration(SevenZMethod.LZMA2));
         assertEquals(z1, z2);
         assertEquals(z2, z1);
     }

Reply via email to