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 d29c085640f579231c9afe39e2ba97ab5e94c59b
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Thu Oct 19 12:51:04 2023 -0400

    Add XYUtils.getCompressedFileName(String) and deprecate
    getCompressedFilename(String)
    
    - Add XYUtils.getUncompressedFileName(String) and deprecate
    getUncompressedFilename(String)
    - Add XYUtils.isCompressedFileName(String) and deprecate
    isCompressedFilename(String)
---
 src/changes/changes.xml                            |  5 +++-
 .../commons/compress/compressors/xz/XZUtils.java   | 34 ++++++++++++++++++++++
 .../compress/compressors/xz/XZUtilsTestCase.java   | 27 +++++++++++++++++
 3 files changed, 65 insertions(+), 1 deletion(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 9b362e22..8b19ad66 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -57,6 +57,9 @@ The <action> type attribute can be add,update,fix,remove.
       <action type="add" dev="ggregory" due-to="Gary Gregory">Add 
LZMAUtils.getCompressedFileName(String) and deprecate 
getCompressedFilename(String).</action>
       <action type="add" dev="ggregory" due-to="Gary Gregory">Add 
LZMAUtils.getUncompressedFileName(String) and deprecate 
getUncompressedFilename(String).</action>
       <action type="add" dev="ggregory" due-to="Gary Gregory">Add 
LZMAUtils.isCompressedFileName(String) and deprecate 
isCompressedFilename(String).</action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">Add 
XYUtils.getCompressedFileName(String) and deprecate 
getCompressedFilename(String).</action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">Add 
XYUtils.getUncompressedFileName(String) and deprecate 
getUncompressedFilename(String).</action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">Add 
XYUtils.isCompressedFileName(String) and deprecate 
isCompressedFilename(String).</action>
       <!-- FIX -->
       <!-- UPDATE -->
       <action type="update" dev="ggregory" due-to="Dependabot">Bump 
org.slf4j:slf4j-api from 2.0.8 to 2.0.9 #413.</action>
@@ -640,7 +643,7 @@ you relied on the recovery attempt.">
       </action>
       <action issue="COMPRESS-552" type="fix" date="2021-03-07">
         OSGi detection was broken and so we always cached whether
-        xz/brotli/zstd/lzma have been available even in OSGi
+        xz/brotli/zstd/LZMA have been available even in OSGi
         environments.
       </action>
       <action issue="COMPRESS-571" type="fix" date="2021-03-17">
diff --git 
a/src/main/java/org/apache/commons/compress/compressors/xz/XZUtils.java 
b/src/main/java/org/apache/commons/compress/compressors/xz/XZUtils.java
index 2dc89c32..5803586c 100644
--- a/src/main/java/org/apache/commons/compress/compressors/xz/XZUtils.java
+++ b/src/main/java/org/apache/commons/compress/compressors/xz/XZUtils.java
@@ -109,11 +109,31 @@ public class XZUtils {
      *
      * @param fileName name of a file
      * @return name of the corresponding uncompressed file
+     * @deprecated Use {@link #getUncompressedFileName(String)}.
      */
+    @Deprecated
     public static String getUncompressedFilename(final String fileName) {
         return fileNameUtil.getUncompressedFileName(fileName);
     }
 
+    /**
+     * Maps the given name of a xz-compressed file to the name that the
+     * file should have after uncompression. Commonly used file type specific
+     * suffixes like ".txz" are automatically detected and
+     * correctly mapped. For example the name "package.txz" is mapped to
+     * "package.tar". And any file names with the generic ".xz" suffix
+     * (or any other generic xz suffix) is mapped to a name without that
+     * suffix. If no xz suffix is detected, then the file name is returned
+     * unmapped.
+     *
+     * @param fileName name of a file
+     * @return name of the corresponding uncompressed file
+     * @since 1.25.0
+     */
+    public static String getUncompressedFileName(final String fileName) {
+        return fileNameUtil.getUncompressedFileName(fileName);
+    }
+
     private static boolean internalIsXZCompressionAvailable() {
         try {
             XZCompressorInputStream.matches(null, 0);
@@ -129,11 +149,25 @@ public class XZUtils {
      * @param fileName name of a file
      * @return {@code true} if the file name has a common xz suffix,
      *         {@code false} otherwise
+     * @deprecated Use {@link #isCompressedFileName(String)}.
      */
+    @Deprecated
     public static boolean isCompressedFilename(final String fileName) {
         return fileNameUtil.isCompressedFileName(fileName);
     }
 
+    /**
+     * Detects common xz suffixes in the given file name.
+     *
+     * @param fileName name of a file
+     * @return {@code true} if the file name has a common xz suffix,
+     *         {@code false} otherwise
+     * @since 1.25.0
+     */
+    public static boolean isCompressedFileName(final String fileName) {
+        return fileNameUtil.isCompressedFileName(fileName);
+    }
+
     /**
      * Are the classes required to support XZ compression available?
      * @since 1.5
diff --git 
a/src/test/java/org/apache/commons/compress/compressors/xz/XZUtilsTestCase.java 
b/src/test/java/org/apache/commons/compress/compressors/xz/XZUtilsTestCase.java
index f600699c..8dada436 100644
--- 
a/src/test/java/org/apache/commons/compress/compressors/xz/XZUtilsTestCase.java
+++ 
b/src/test/java/org/apache/commons/compress/compressors/xz/XZUtilsTestCase.java
@@ -43,48 +43,75 @@ public class XZUtilsTestCase {
         }
     }
 
+    @SuppressWarnings("deprecation")
     @Test
     public void testGetCompressedFilename() {
         assertEquals(".xz", XZUtils.getCompressedFilename(""));
+        assertEquals(".xz", XZUtils.getCompressedFileName(""));
         assertEquals("x.xz", XZUtils.getCompressedFilename("x"));
+        assertEquals("x.xz", XZUtils.getCompressedFileName("x"));
 
         assertEquals("x.txz", XZUtils.getCompressedFilename("x.tar"));
+        assertEquals("x.txz", XZUtils.getCompressedFileName("x.tar"));
 
         assertEquals("x.wmf .xz", XZUtils.getCompressedFilename("x.wmf "));
+        assertEquals("x.wmf .xz", XZUtils.getCompressedFileName("x.wmf "));
         assertEquals("x.wmf\n.xz", XZUtils.getCompressedFilename("x.wmf\n"));
+        assertEquals("x.wmf\n.xz", XZUtils.getCompressedFileName("x.wmf\n"));
         assertEquals("x.wmf.y.xz", XZUtils.getCompressedFilename("x.wmf.y"));
+        assertEquals("x.wmf.y.xz", XZUtils.getCompressedFileName("x.wmf.y"));
     }
 
+    @SuppressWarnings("deprecation")
     @Test
     public void testGetUncompressedFilename() {
         assertEquals("", XZUtils.getUncompressedFilename(""));
+        assertEquals("", XZUtils.getUncompressedFileName(""));
         assertEquals(".xz", XZUtils.getUncompressedFilename(".xz"));
 
         assertEquals("x.tar", XZUtils.getUncompressedFilename("x.txz"));
+        assertEquals("x.tar", XZUtils.getUncompressedFileName("x.txz"));
         assertEquals("x", XZUtils.getUncompressedFilename("x.xz"));
+        assertEquals("x", XZUtils.getUncompressedFileName("x.xz"));
         assertEquals("x", XZUtils.getUncompressedFilename("x-xz"));
+        assertEquals("x", XZUtils.getUncompressedFileName("x-xz"));
 
         assertEquals("x.txz ", XZUtils.getUncompressedFilename("x.txz "));
+        assertEquals("x.txz ", XZUtils.getUncompressedFileName("x.txz "));
         assertEquals("x.txz\n", XZUtils.getUncompressedFilename("x.txz\n"));
+        assertEquals("x.txz\n", XZUtils.getUncompressedFileName("x.txz\n"));
         assertEquals("x.txz.y", XZUtils.getUncompressedFilename("x.txz.y"));
+        assertEquals("x.txz.y", XZUtils.getUncompressedFileName("x.txz.y"));
     }
 
+    @SuppressWarnings("deprecation")
     @Test
     public void testIsCompressedFilename() {
         assertFalse(XZUtils.isCompressedFilename(""));
+        assertFalse(XZUtils.isCompressedFileName(""));
         assertFalse(XZUtils.isCompressedFilename(".xz"));
+        assertFalse(XZUtils.isCompressedFileName(".xz"));
 
         assertTrue(XZUtils.isCompressedFilename("x.txz"));
+        assertTrue(XZUtils.isCompressedFileName("x.txz"));
         assertTrue(XZUtils.isCompressedFilename("x.xz"));
+        assertTrue(XZUtils.isCompressedFileName("x.xz"));
         assertTrue(XZUtils.isCompressedFilename("x-xz"));
+        assertTrue(XZUtils.isCompressedFileName("x-xz"));
 
         assertFalse(XZUtils.isCompressedFilename("xxgz"));
+        assertFalse(XZUtils.isCompressedFileName("xxgz"));
         assertFalse(XZUtils.isCompressedFilename("xzz"));
+        assertFalse(XZUtils.isCompressedFileName("xzz"));
         assertFalse(XZUtils.isCompressedFilename("xaz"));
+        assertFalse(XZUtils.isCompressedFileName("xaz"));
 
         assertFalse(XZUtils.isCompressedFilename("x.txz "));
+        assertFalse(XZUtils.isCompressedFileName("x.txz "));
         assertFalse(XZUtils.isCompressedFilename("x.txz\n"));
+        assertFalse(XZUtils.isCompressedFileName("x.txz\n"));
         assertFalse(XZUtils.isCompressedFilename("x.txz.y"));
+        assertFalse(XZUtils.isCompressedFileName("x.txz.y"));
     }
 
     @Test

Reply via email to