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