You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/11/30 15:32:11 UTC

[commons-compress] branch master updated (dda88755 -> 0cbe431f)

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

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


    from dda88755 Use Map API
     new 66fb1ae2 Javadoc
     new 074684d1 Javadoc
     new 504879bd Lookup key in map only once
     new b7e0d11b Lookup key in map only once
     new fe079d47 Javadoc
     new 1fef07a5 Refactor magic strings
     new 0cbe431f Use Map API

The 7 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../compress/archivers/tar/TarArchiveEntry.java       | 19 ++++++++++---------
 .../compress/archivers/tar/TarArchiveInputStream.java |  4 ++--
 .../commons/compress/archivers/tar/TarConstants.java  |  9 ++++++++-
 .../commons/compress/archivers/tar/TarFile.java       |  4 ++--
 .../TarGnuSparseKeys.java}                            | 18 ++++++++++--------
 .../commons/compress/archivers/tar/TarUtils.java      | 16 ++++++++--------
 .../commons/compress/harmony/pack200/CPClass.java     |  2 +-
 .../commons/compress/harmony/pack200/CPConstant.java  |  4 +++-
 .../compress/harmony/pack200/ConstantPoolEntry.java   |  2 +-
 .../unpack200/SegmentConstantPoolArrayCache.java      | 14 +++-----------
 .../commons/compress/archivers/ZipTestCase.java       |  9 ++-------
 11 files changed, 50 insertions(+), 51 deletions(-)
 copy src/main/java/org/apache/commons/compress/archivers/{dump/ShortFileException.java => tar/TarGnuSparseKeys.java} (66%)


[commons-compress] 04/07: Lookup key in map only once

Posted by gg...@apache.org.
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 b7e0d11bcd42f1f0d59985c6f0c0b716959aef74
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Nov 30 10:14:30 2022 -0500

    Lookup key in map only once
---
 .../compress/harmony/unpack200/SegmentConstantPoolArrayCache.java   | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/apache/commons/compress/harmony/unpack200/SegmentConstantPoolArrayCache.java b/src/main/java/org/apache/commons/compress/harmony/unpack200/SegmentConstantPoolArrayCache.java
index fb5d3cd1..264a994a 100644
--- a/src/main/java/org/apache/commons/compress/harmony/unpack200/SegmentConstantPoolArrayCache.java
+++ b/src/main/java/org/apache/commons/compress/harmony/unpack200/SegmentConstantPoolArrayCache.java
@@ -132,10 +132,8 @@ public class SegmentConstantPoolArrayCache {
          * @return List of indexes containing that key in the array.
          */
         public List<Integer> indexesForKey(final String key) {
-            if (!primaryTable.containsKey(key)) {
-                return Collections.EMPTY_LIST;
-            }
-            return primaryTable.get(key);
+            final List<Integer> list = primaryTable.get(key);
+            return list != null ? list : Collections.emptyList();
         }
 
         /**


[commons-compress] 07/07: Use Map API

Posted by gg...@apache.org.
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 0cbe431fe13e40735ccba054bab8fe4a83062b37
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Nov 30 10:32:05 2022 -0500

    Use Map API
---
 .../java/org/apache/commons/compress/archivers/ZipTestCase.java  | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/src/test/java/org/apache/commons/compress/archivers/ZipTestCase.java b/src/test/java/org/apache/commons/compress/archivers/ZipTestCase.java
index e4f3ead3..3710bf90 100644
--- a/src/test/java/org/apache/commons/compress/archivers/ZipTestCase.java
+++ b/src/test/java/org/apache/commons/compress/archivers/ZipTestCase.java
@@ -797,16 +797,11 @@ public final class ZipTestCase extends AbstractTestCase {
         }
 
         final String name = entry.getName();
-        final List<List<Long>> l;
-        if (map.containsKey(name)) {
-            l = map.get(name);
-        } else {
-            map.put(name, l = new ArrayList<>());
-        }
+        final List<List<Long>> list = map.computeIfAbsent(name, k -> new ArrayList<>());
 
         final long t = stats.getUncompressedCount();
         final long b = stats.getCompressedCount();
-        l.add(Arrays.asList(t, b));
+        list.add(Arrays.asList(t, b));
     }
 
     private File getFilesToZip() throws IOException {


[commons-compress] 03/07: Lookup key in map only once

Posted by gg...@apache.org.
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 504879bdfd7a7bcee9771944f36afc4b03054bd0
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Nov 30 10:01:23 2022 -0500

    Lookup key in map only once
---
 .../compress/harmony/unpack200/SegmentConstantPoolArrayCache.java | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/src/main/java/org/apache/commons/compress/harmony/unpack200/SegmentConstantPoolArrayCache.java b/src/main/java/org/apache/commons/compress/harmony/unpack200/SegmentConstantPoolArrayCache.java
index 486e35d2..fb5d3cd1 100644
--- a/src/main/java/org/apache/commons/compress/harmony/unpack200/SegmentConstantPoolArrayCache.java
+++ b/src/main/java/org/apache/commons/compress/harmony/unpack200/SegmentConstantPoolArrayCache.java
@@ -78,14 +78,8 @@ public class SegmentConstantPoolArrayCache {
      * @return boolean true if up-to-date cache, otherwise false.
      */
     protected boolean arrayIsCached(final String[] array) {
-        if (!knownArrays.containsKey(array)) {
-            return false;
-        }
         final CachedArray cachedArray = knownArrays.get(array);
-        if (cachedArray.lastKnownSize() != array.length) {
-            return false;
-        }
-        return true;
+        return !(cachedArray == null || cachedArray.lastKnownSize() != array.length);
     }
 
     /**


[commons-compress] 02/07: Javadoc

Posted by gg...@apache.org.
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 074684d19007cad55491aab365c28457acbbf736
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Nov 30 09:49:18 2022 -0500

    Javadoc
---
 .../java/org/apache/commons/compress/harmony/pack200/CPConstant.java  | 4 +++-
 .../apache/commons/compress/harmony/pack200/ConstantPoolEntry.java    | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/commons/compress/harmony/pack200/CPConstant.java b/src/main/java/org/apache/commons/compress/harmony/pack200/CPConstant.java
index 800a7330..8dbb6ea8 100644
--- a/src/main/java/org/apache/commons/compress/harmony/pack200/CPConstant.java
+++ b/src/main/java/org/apache/commons/compress/harmony/pack200/CPConstant.java
@@ -17,7 +17,9 @@
 package org.apache.commons.compress.harmony.pack200;
 
 /**
- * Abstract superclass for constant pool constant entries such as numbers or Strings
+ * Abstract superclass for constant pool constant entries such as numbers or Strings.
+ *
+ * @param <T> The CPConstant subclass.
  */
 public abstract class CPConstant<T extends CPConstant<T>> extends ConstantPoolEntry implements Comparable<T> {
 
diff --git a/src/main/java/org/apache/commons/compress/harmony/pack200/ConstantPoolEntry.java b/src/main/java/org/apache/commons/compress/harmony/pack200/ConstantPoolEntry.java
index 7ff1609c..ab84b0fa 100644
--- a/src/main/java/org/apache/commons/compress/harmony/pack200/ConstantPoolEntry.java
+++ b/src/main/java/org/apache/commons/compress/harmony/pack200/ConstantPoolEntry.java
@@ -17,7 +17,7 @@
 package org.apache.commons.compress.harmony.pack200;
 
 /**
- * Abstract superclass for constant pool entries
+ * Abstract superclass for constant pool entries.
  */
 public abstract class ConstantPoolEntry {
 


[commons-compress] 01/07: Javadoc

Posted by gg...@apache.org.
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 66fb1ae2f6fa49046c811c0ef04c814c5fafcc9e
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Nov 30 09:47:52 2022 -0500

    Javadoc
---
 src/main/java/org/apache/commons/compress/harmony/pack200/CPClass.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/main/java/org/apache/commons/compress/harmony/pack200/CPClass.java b/src/main/java/org/apache/commons/compress/harmony/pack200/CPClass.java
index c7f4a8a6..5d86d284 100644
--- a/src/main/java/org/apache/commons/compress/harmony/pack200/CPClass.java
+++ b/src/main/java/org/apache/commons/compress/harmony/pack200/CPClass.java
@@ -17,7 +17,7 @@
 package org.apache.commons.compress.harmony.pack200;
 
 /**
- * Constant pool entry for a class
+ * Constant pool entry for a class.
  */
 public class CPClass extends CPConstant<CPClass> {
 


[commons-compress] 06/07: Refactor magic strings

Posted by gg...@apache.org.
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 1fef07a5741960a9fbc7cf6384457418635ec665
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Nov 30 10:26:09 2022 -0500

    Refactor magic strings
---
 .../compress/archivers/tar/TarArchiveEntry.java    | 19 ++++++------
 .../archivers/tar/TarArchiveInputStream.java       |  4 +--
 .../commons/compress/archivers/tar/TarFile.java    |  4 +--
 .../compress/archivers/tar/TarGnuSparseKeys.java   | 34 ++++++++++++++++++++++
 .../commons/compress/archivers/tar/TarUtils.java   | 16 +++++-----
 5 files changed, 56 insertions(+), 21 deletions(-)

diff --git a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java
index 7efc2fa4..a8a60c67 100644
--- a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java
+++ b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java
@@ -191,6 +191,7 @@ import org.apache.commons.compress.utils.IOUtils;
  * @NotThreadSafe
  */
 public class TarArchiveEntry implements ArchiveEntry, TarConstants, EntryStreamOffsets {
+
     private static final TarArchiveEntry[] EMPTY_TAR_ARCHIVE_ENTRY_ARRAY = new TarArchiveEntry[0];
 
     /**
@@ -759,22 +760,22 @@ public class TarArchiveEntry implements ArchiveEntry, TarConstants, EntryStreamO
 
     void fillGNUSparse0xData(final Map<String, String> headers) {
         paxGNUSparse = true;
-        realSize = Integer.parseInt(headers.get("GNU.sparse.size"));
-        if (headers.containsKey("GNU.sparse.name")) {
+        realSize = Integer.parseInt(headers.get(TarGnuSparseKeys.SIZE));
+        if (headers.containsKey(TarGnuSparseKeys.NAME)) {
             // version 0.1
-            name = headers.get("GNU.sparse.name");
+            name = headers.get(TarGnuSparseKeys.NAME);
         }
     }
 
     void fillGNUSparse1xData(final Map<String, String> headers) throws IOException {
         paxGNUSparse = true;
         paxGNU1XSparse = true;
-        if (headers.containsKey("GNU.sparse.name")) {
-            name = headers.get("GNU.sparse.name");
+        if (headers.containsKey(TarGnuSparseKeys.NAME)) {
+            name = headers.get(TarGnuSparseKeys.NAME);
         }
-        if (headers.containsKey("GNU.sparse.realsize")) {
+        if (headers.containsKey(TarGnuSparseKeys.REALSIZE)) {
             try {
-                realSize = Integer.parseInt(headers.get("GNU.sparse.realsize"));
+                realSize = Integer.parseInt(headers.get(TarGnuSparseKeys.REALSIZE));
             } catch (NumberFormatException ex) {
                 throw new IOException("Corrupted TAR archive. GNU.sparse.realsize header for "
                     + name + " contains non-numeric value");
@@ -1699,10 +1700,10 @@ public class TarArchiveEntry implements ArchiveEntry, TarConstants, EntryStreamO
                 }
                 setDevMajor(devMajor);
                 break;
-            case "GNU.sparse.size":
+            case TarGnuSparseKeys.SIZE:
                 fillGNUSparse0xData(headers);
                 break;
-            case "GNU.sparse.realsize":
+            case TarGnuSparseKeys.REALSIZE:
                 fillGNUSparse1xData(headers);
                 break;
             case "SCHILY.filetype":
diff --git a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java
index b622af6b..d5432a85 100644
--- a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java
+++ b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java
@@ -605,8 +605,8 @@ public class TarArchiveInputStream extends ArchiveInputStream {
         final Map<String, String> headers = TarUtils.parsePaxHeaders(this, sparseHeaders, globalPaxHeaders, entrySize);
 
         // for 0.1 PAX Headers
-        if (headers.containsKey("GNU.sparse.map")) {
-            sparseHeaders = new ArrayList<>(TarUtils.parseFromPAX01SparseHeaders(headers.get("GNU.sparse.map")));
+        if (headers.containsKey(TarGnuSparseKeys.MAP)) {
+            sparseHeaders = new ArrayList<>(TarUtils.parseFromPAX01SparseHeaders(headers.get(TarGnuSparseKeys.MAP)));
         }
         getNextEntry(); // Get the actual file entry
         if (currEntry == null) {
diff --git a/src/main/java/org/apache/commons/compress/archivers/tar/TarFile.java b/src/main/java/org/apache/commons/compress/archivers/tar/TarFile.java
index ce1ef0c4..d9087b8c 100644
--- a/src/main/java/org/apache/commons/compress/archivers/tar/TarFile.java
+++ b/src/main/java/org/apache/commons/compress/archivers/tar/TarFile.java
@@ -430,8 +430,8 @@ public class TarFile implements Closeable {
         }
 
         // for 0.1 PAX Headers
-        if (headers.containsKey("GNU.sparse.map")) {
-            sparseHeaders = new ArrayList<>(TarUtils.parseFromPAX01SparseHeaders(headers.get("GNU.sparse.map")));
+        if (headers.containsKey(TarGnuSparseKeys.MAP)) {
+            sparseHeaders = new ArrayList<>(TarUtils.parseFromPAX01SparseHeaders(headers.get(TarGnuSparseKeys.MAP)));
         }
         getNextTarEntry(); // Get the actual file entry
         if (currEntry == null) {
diff --git a/src/main/java/org/apache/commons/compress/archivers/tar/TarGnuSparseKeys.java b/src/main/java/org/apache/commons/compress/archivers/tar/TarGnuSparseKeys.java
new file mode 100644
index 00000000..1eefc0c4
--- /dev/null
+++ b/src/main/java/org/apache/commons/compress/archivers/tar/TarGnuSparseKeys.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.commons.compress.archivers.tar;
+
+/**
+ * GNU sparse key names.
+ */
+class TarGnuSparseKeys {
+
+    static final String MAP = "GNU.sparse.map";
+    static final String NAME = "GNU.sparse.name";
+    static final String NUMBYTES = "GNU.sparse.numbytes";
+    static final String OFFSET = "GNU.sparse.offset";
+    static final String REALSIZE = "GNU.sparse.realsize";
+    static final String SIZE = "GNU.sparse.size";
+
+}
diff --git a/src/main/java/org/apache/commons/compress/archivers/tar/TarUtils.java b/src/main/java/org/apache/commons/compress/archivers/tar/TarUtils.java
index b0393639..69922133 100644
--- a/src/main/java/org/apache/commons/compress/archivers/tar/TarUtils.java
+++ b/src/main/java/org/apache/commons/compress/archivers/tar/TarUtils.java
@@ -774,7 +774,7 @@ public class TarUtils {
                                 headers.put(keyword, value);
 
                                 // for 0.0 PAX Headers
-                                if (keyword.equals("GNU.sparse.offset")) {
+                                if (keyword.equals(TarGnuSparseKeys.OFFSET)) {
                                     if (offset != null) {
                                         // previous GNU.sparse.offset header but but no numBytes
                                         sparseHeaders.add(new TarArchiveStructSparse(offset, 0));
@@ -783,30 +783,30 @@ public class TarUtils {
                                         offset = Long.valueOf(value);
                                     } catch (NumberFormatException ex) {
                                         throw new IOException("Failed to read Paxheader."
-                                            + "GNU.sparse.offset contains a non-numeric value");
+                                            + TarGnuSparseKeys.OFFSET + " contains a non-numeric value");
                                     }
                                     if (offset < 0) {
                                         throw new IOException("Failed to read Paxheader."
-                                            + "GNU.sparse.offset contains negative value");
+                                            + TarGnuSparseKeys.OFFSET + " contains negative value");
                                     }
                                 }
 
                                 // for 0.0 PAX Headers
-                                if (keyword.equals("GNU.sparse.numbytes")) {
+                                if (keyword.equals(TarGnuSparseKeys.NUMBYTES)) {
                                     if (offset == null) {
-                                        throw new IOException("Failed to read Paxheader." +
-                                                "GNU.sparse.offset is expected before GNU.sparse.numbytes shows up.");
+                                        throw new IOException("Failed to read Paxheader."
+                                                + TarGnuSparseKeys.OFFSET + " is expected before GNU.sparse.numbytes shows up.");
                                     }
                                     long numbytes;
                                     try {
                                         numbytes = Long.parseLong(value);
                                     } catch (NumberFormatException ex) {
                                         throw new IOException("Failed to read Paxheader."
-                                            + "GNU.sparse.numbytes contains a non-numeric value.");
+                                            + TarGnuSparseKeys.NUMBYTES + " contains a non-numeric value.");
                                     }
                                     if (numbytes < 0) {
                                         throw new IOException("Failed to read Paxheader."
-                                            + "GNU.sparse.numbytes contains negative value");
+                                            + TarGnuSparseKeys.NUMBYTES + " contains negative value");
                                     }
                                     sparseHeaders.add(new TarArchiveStructSparse(offset, numbytes));
                                     offset = null;


[commons-compress] 05/07: Javadoc

Posted by gg...@apache.org.
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 fe079d47eb23f2b28e6cc5ba0257f54b62aadb47
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Nov 30 10:14:42 2022 -0500

    Javadoc
---
 .../org/apache/commons/compress/archivers/tar/TarConstants.java  | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/apache/commons/compress/archivers/tar/TarConstants.java b/src/main/java/org/apache/commons/compress/archivers/tar/TarConstants.java
index 5ce6681a..1b082cdd 100644
--- a/src/main/java/org/apache/commons/compress/archivers/tar/TarConstants.java
+++ b/src/main/java/org/apache/commons/compress/archivers/tar/TarConstants.java
@@ -332,8 +332,15 @@ public interface TarConstants {
      * The magic tag representing a GNU tar archive.
      */
     String MAGIC_GNU = "ustar ";
-    // Appear to be two possible GNU versions
+    
+    /**
+     * One of two two possible GNU versions
+     */
     String VERSION_GNU_SPACE = " \0";
+
+    /**
+     * One of two two possible GNU versions
+     */
     String VERSION_GNU_ZERO  = "0\0";
 
     /**