You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ma...@apache.org on 2023/09/16 08:11:45 UTC

[commons-fileupload] 16/21: Fix Checkstyle warnings

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

markt pushed a commit to branch 1.x
in repository https://gitbox.apache.org/repos/asf/commons-fileupload.git

commit 43e2a399d2e302da4775ced561eee0e1fdc92523
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Fri Sep 15 21:17:19 2023 +0100

    Fix Checkstyle warnings
---
 .../fileupload/util/mime/RFC2231Utility.java       | 82 ++++++++++++++--------
 1 file changed, 52 insertions(+), 30 deletions(-)

diff --git a/src/main/java/org/apache/commons/fileupload/util/mime/RFC2231Utility.java b/src/main/java/org/apache/commons/fileupload/util/mime/RFC2231Utility.java
index af77227d..42bcc340 100644
--- a/src/main/java/org/apache/commons/fileupload/util/mime/RFC2231Utility.java
+++ b/src/main/java/org/apache/commons/fileupload/util/mime/RFC2231Utility.java
@@ -22,18 +22,31 @@ import java.io.UnsupportedEncodingException;
  * Utility class to decode/encode character set on HTTP Header fields based on RFC 2231.
  * This implementation adheres to RFC 5987 in particular, which was defined for HTTP headers
  *
- * RFC 5987 builds on RFC 2231, but has lesser scope like <a href="https://tools.ietf.org/html/rfc5987#section-3.2>mandatory charset definition</a>
- * and <a href="https://tools.ietf.org/html/rfc5987#section-4>no parameter continuation</a>
+ * RFC 5987 builds on RFC 2231, but has lesser scope like
+ * <a href="https://tools.ietf.org/html/rfc5987#section-3.2">mandatory charset definition</a>
+ * and <a href="https://tools.ietf.org/html/rfc5987#section-4">no parameter continuation</a>
  *
  * <p>
  * @see <a href="https://tools.ietf.org/html/rfc2231">RFC 2231</a>
  * @see <a href="https://tools.ietf.org/html/rfc5987">RFC 5987</a>
  */
 public final class RFC2231Utility {
-
+    /**
+     * The Hexadecimal values char array.
+     */
     private static final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray();
-
-    private static final byte[] HEX_DECODE = new byte[0x80];
+    /**
+     * The Hexadecimal representation of 127.
+     */
+    private static final byte MASK = 0x7f;
+    /**
+     * The Hexadecimal representation of 128.
+     */
+    private static final int MASK_128 = 0x80;
+    /**
+     * The Hexadecimal decode value.
+     */
+    private static final byte[] HEX_DECODE = new byte[MASK_128];
 
     // create a ASCII decoded array of Hexadecimal values
     static {
@@ -43,29 +56,36 @@ public final class RFC2231Utility {
         }
     }
 
+    /**
+     * Private constructor so that no instances can be created. This class
+     * contains only static utility methods.
+     */
+    private RFC2231Utility() {
+    }
+
     /**
      * Checks if Asterisk (*) at the end of parameter name to indicate,
-     * if it has charset and language information to decode the value
-     * @param paramName
+     * if it has charset and language information to decode the value.
+     * @param paramName The parameter, which is being checked.
      * @return {@code true}, if encoded as per RFC 2231, {@code false} otherwise
      */
-    public static boolean hasEncodedValue(String paramName) {
+    public static boolean hasEncodedValue(final String paramName) {
         if (paramName != null) {
-            return paramName.lastIndexOf("*") == (paramName.length() - 1);
+            return paramName.lastIndexOf('*') == (paramName.length() - 1);
         }
         return false;
     }
 
     /**
-     * If {@code paramName} has Asterisk (*) at the end, it will be stripped off, 
-     * else the passed value will be returned
-     * @param paramName
+     * If {@code paramName} has Asterisk (*) at the end, it will be stripped off,
+     * else the passed value will be returned.
+     * @param paramName The parameter, which is being inspected.
      * @return stripped {@code paramName} of Asterisk (*), if RFC2231 encoded
      */
-    public static String stripDelimiter(String paramName) {
+    public static String stripDelimiter(final String paramName) {
         if (hasEncodedValue(paramName)) {
-            StringBuilder paramBuilder = new StringBuilder(paramName);
-            paramBuilder.deleteCharAt(paramName.lastIndexOf("*"));
+            final StringBuilder paramBuilder = new StringBuilder(paramName);
+            paramBuilder.deleteCharAt(paramName.lastIndexOf('*'));
             return paramBuilder.toString();
         }
         return paramName;
@@ -84,42 +104,44 @@ public final class RFC2231Utility {
      * <b>Eg 3.</b> {@code UTF-8''%c2%a3%20and%20%e2%82%ac%20rates}
      * will be decoded to {@code £ and € rates}
      *
-     * @param encodedText - Text to be decoded has a format of {@code <charset>'<language>'<encoded_value>} and ASCII only
+     * @param encodedText - Text to be decoded has a format of {@code <charset>'<language>'<encoded_value>}
+     * and ASCII only
      * @return Decoded text based on charset encoding
-     * @throws UnsupportedEncodingException
+     * @throws UnsupportedEncodingException The requested character set wasn't found.
      */
-    public static String decodeText(String encodedText) throws UnsupportedEncodingException {
-        int langDelimitStart = encodedText.indexOf('\'');
+    public static String decodeText(final String encodedText) throws UnsupportedEncodingException {
+        final int langDelimitStart = encodedText.indexOf('\'');
         if (langDelimitStart == -1) {
             // missing charset
             return encodedText;
         }
-        String mimeCharset = encodedText.substring(0, langDelimitStart);
-        int langDelimitEnd = encodedText.indexOf('\'', langDelimitStart + 1);
+        final String mimeCharset = encodedText.substring(0, langDelimitStart);
+        final int langDelimitEnd = encodedText.indexOf('\'', langDelimitStart + 1);
         if (langDelimitEnd == -1) {
             // missing language
             return encodedText;
         }
-        byte[] bytes = fromHex(encodedText.substring(langDelimitEnd + 1));
+        final byte[] bytes = fromHex(encodedText.substring(langDelimitEnd + 1));
         return new String(bytes, getJavaCharset(mimeCharset));
     }
 
     /**
-     * Convert {@code text} to their corresponding Hex value
+     * Convert {@code text} to their corresponding Hex value.
      * @param text - ASCII text input
      * @return Byte array of characters decoded from ASCII table
      */
-    private static byte[] fromHex(String text) {
-        ByteArrayOutputStream out = new ByteArrayOutputStream(text.length());
+    private static byte[] fromHex(final String text) {
+        final int shift = 4;
+        final ByteArrayOutputStream out = new ByteArrayOutputStream(text.length());
         for (int i = 0; i < text.length();) {
-            char c = text.charAt(i++);
+            final char c = text.charAt(i++);
             if (c == '%') {
                 if (i > text.length() - 2) {
                     break; // unterminated sequence
                 }
-                byte b1 = HEX_DECODE[text.charAt(i++) & 0x7f];
-                byte b2 = HEX_DECODE[text.charAt(i++) & 0x7f];
-                out.write((b1 << 4) | b2);
+                final byte b1 = HEX_DECODE[text.charAt(i++) & MASK];
+                final byte b2 = HEX_DECODE[text.charAt(i++) & MASK];
+                out.write((b1 << shift) | b2);
             } else {
                 out.write((byte) c);
             }
@@ -127,7 +149,7 @@ public final class RFC2231Utility {
         return out.toByteArray();
     }
 
-    private static String getJavaCharset(String mimeCharset) {
+    private static String getJavaCharset(final String mimeCharset) {
         // good enough for standard values
         return mimeCharset;
     }