simplify addition of PAX headers

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/compress/trunk@1298950 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
index e399331..8945f0c 100644
--- a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
+++ b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
@@ -449,30 +449,32 @@
 
     private void addPaxHeadersForBigNumbers(Map<String, String> paxHeaders,
                                             TarArchiveEntry entry) {
-        if (entry.getSize() > TarConstants.MAXSIZE) {
-            paxHeaders.put("size", String.valueOf(entry.getSize()));
-        }
-        if (entry.getGroupId() > TarConstants.MAXID) {
-            paxHeaders.put("gid", String.valueOf(entry.getGroupId()));
-        }
-        final long mtime =  entry.getModTime().getTime() / 1000;
-        if (mtime < 0 || mtime > TarConstants.MAXSIZE) {
-            paxHeaders.put("mtime", String.valueOf(mtime));
-        }
-        if (entry.getUserId() > TarConstants.MAXID) {
-            paxHeaders.put("uid", String.valueOf(entry.getUserId()));
-        }
-        if (entry.getDevMajor() > TarConstants.MAXID) {
-            paxHeaders.put("SCHILY.devmajor",
-                           String.valueOf(entry.getDevMajor()));
-        }
-        if (entry.getDevMinor() > TarConstants.MAXID) {
-            paxHeaders.put("SCHILY.devminor",
-                           String.valueOf(entry.getDevMinor()));
-        }
+        addPaxHeaderForBigNumber(paxHeaders, "size", entry.getSize(),
+                                 TarConstants.MAXSIZE);
+        addPaxHeaderForBigNumber(paxHeaders, "gid", entry.getGroupId(),
+                                 TarConstants.MAXID);
+        addPaxHeaderForBigNumber(paxHeaders, "mtime",
+                                 entry.getModTime().getTime() / 1000,
+                                 TarConstants.MAXSIZE);
+        addPaxHeaderForBigNumber(paxHeaders, "uid", entry.getUserId(),
+                                 TarConstants.MAXID);
+        // star extensions by J\u00f6rg Schillig
+        addPaxHeaderForBigNumber(paxHeaders, "SCHILY.devmajor",
+                                 entry.getDevMajor(), TarConstants.MAXID);
+        addPaxHeaderForBigNumber(paxHeaders, "SCHILY.devminor",
+                                 entry.getDevMinor(), TarConstants.MAXID);
+        // there is no PAX header for file mode
         failForBigNumber("mode", entry.getMode(), TarConstants.MAXID);
     }
 
+    private void addPaxHeaderForBigNumber(Map<String, String> paxHeaders,
+                                          String header, long value,
+                                          long maxValue) {
+        if (value < 0 || value > maxValue) {
+            paxHeaders.put(header, String.valueOf(value));
+        }
+    }
+
     private void failForBigNumbers(TarArchiveEntry entry) {
         failForBigNumber("entry size", entry.getSize(), TarConstants.MAXSIZE);
         failForBigNumber("group id", entry.getGroupId(), TarConstants.MAXID);