Author: ebourg
Date: Fri Aug  9 09:02:51 2013
New Revision: 1512207

URL: http://svn.apache.org/r1512207
Log:
Improved the exception message when the name/link is too long

Modified:
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java

Modified: 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java?rev=1512207&r1=1512206&r2=1512207&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
 (original)
+++ 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
 Fri Aug  9 09:02:51 2013
@@ -272,12 +272,12 @@ public class TarArchiveOutputStream exte
         Map<String, String> paxHeaders = new HashMap<String, String>();
         final String entryName = entry.getName();
         boolean paxHeaderContainsPath = handleLongName(entryName, paxHeaders, 
"path",
-                                                       
TarConstants.LF_GNUTYPE_LONGNAME);
+                                                       
TarConstants.LF_GNUTYPE_LONGNAME, "file name");
 
         final String linkName = entry.getLinkName();
         boolean paxHeaderContainsLinkPath = linkName != null && 
linkName.length() > 0
             && handleLongName(linkName, paxHeaders, "linkpath",
-                              TarConstants.LF_GNUTYPE_LONGLINK);
+                              TarConstants.LF_GNUTYPE_LONGLINK, "link name");
 
         if (bigNumberMode == BIGNUMBER_POSIX) {
             addPaxHeadersForBigNumbers(paxHeaders, entry);
@@ -630,11 +630,12 @@ public class TarArchiveOutputStream exte
      * @param paxHeaders current map of pax headers
      * @param paxHeaderName name of the pax header to write
      * @param linkType type of the GNU entry to write
+     * @param fieldName the name of the field
      * @return whether a pax header has been written.
      */
     private boolean handleLongName(String name,
                                    Map<String, String> paxHeaders,
-                                   String paxHeaderName, byte linkType)
+                                   String paxHeaderName, byte linkType, String 
fieldName)
         throws IOException {
         final ByteBuffer encodedName = encoding.encode(name);
         final int len = encodedName.limit() - encodedName.position();
@@ -646,8 +647,7 @@ public class TarArchiveOutputStream exte
             } else if (longFileMode == LONGFILE_GNU) {
                 // create a TarEntry for the LongLink, the contents
                 // of which are the link's name
-                TarArchiveEntry longLinkEntry =
-                    new TarArchiveEntry(TarConstants.GNU_LONGLINK, linkType);
+                TarArchiveEntry longLinkEntry = new 
TarArchiveEntry(TarConstants.GNU_LONGLINK, linkType);
 
                 longLinkEntry.setSize(len + 1); // +1 for NUL
                 putArchiveEntry(longLinkEntry);
@@ -655,7 +655,7 @@ public class TarArchiveOutputStream exte
                 write(0); // NUL terminator
                 closeArchiveEntry();
             } else if (longFileMode != LONGFILE_TRUNCATE) {
-                throw new RuntimeException(paxHeaderName + " '" + name
+                throw new RuntimeException(fieldName + " '" + name
                                            + "' is too long ( > "
                                            + TarConstants.NAMELEN + " bytes)");
             }


Reply via email to