Author: sebb Date: Sun Mar 26 23:57:00 2017 New Revision: 1788792 URL: http://svn.apache.org/viewvc?rev=1788792&view=rev Log: Centralise conversion to hex digit
Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java?rev=1788792&r1=1788791&r2=1788792&view=diff ============================================================================== --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java (original) +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java Sun Mar 26 23:57:00 2017 @@ -181,8 +181,8 @@ public class QuotedPrintableCodec implem */ private static final int encodeQuotedPrintable(final int b, final ByteArrayOutputStream buffer) { buffer.write(ESCAPE_CHAR); - final char hex1 = Character.toUpperCase(Character.forDigit((b >> 4) & 0xF, 16)); - final char hex2 = Character.toUpperCase(Character.forDigit(b & 0xF, 16)); + final char hex1 = Utils.hexDigit(b >> 4); + final char hex2 = Utils.hexDigit(b); buffer.write(hex1); buffer.write(hex2); return 3; Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java?rev=1788792&r1=1788791&r2=1788792&view=diff ============================================================================== --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java (original) +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java Sun Mar 26 23:57:00 2017 @@ -48,11 +48,6 @@ import org.apache.commons.codec.binary.S public class URLCodec implements BinaryEncoder, BinaryDecoder, StringEncoder, StringDecoder { /** - * Radix used in encoding and decoding. - */ - static final int RADIX = 16; - - /** * The default charset used for string decoding and encoding. * * @deprecated TODO: This field will be changed to a private final Charset in 2.0. (CODEC-126) @@ -147,8 +142,8 @@ public class URLCodec implements BinaryE buffer.write(b); } else { buffer.write(ESCAPE_CHAR); - final char hex1 = Character.toUpperCase(Character.forDigit((b >> 4) & 0xF, RADIX)); - final char hex2 = Character.toUpperCase(Character.forDigit(b & 0xF, RADIX)); + final char hex1 = Utils.hexDigit(b >> 4); + final char hex2 = Utils.hexDigit(b); buffer.write(hex1); buffer.write(hex2); } Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java?rev=1788792&r1=1788791&r2=1788792&view=diff ============================================================================== --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java (original) +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java Sun Mar 26 23:57:00 2017 @@ -30,6 +30,11 @@ import org.apache.commons.codec.DecoderE class Utils { /** + * Radix used in encoding and decoding. + */ + private static final int RADIX = 16; + + /** * Returns the numeric value of the character <code>b</code> in radix 16. * * @param b @@ -40,11 +45,21 @@ class Utils { * Thrown when the byte is not valid per {@link Character#digit(char,int)} */ static int digit16(final byte b) throws DecoderException { - final int i = Character.digit((char) b, URLCodec.RADIX); + final int i = Character.digit((char) b, RADIX); if (i == -1) { - throw new DecoderException("Invalid URL encoding: not a valid digit (radix " + URLCodec.RADIX + "): " + b); + throw new DecoderException("Invalid URL encoding: not a valid digit (radix " + RADIX + "): " + b); } return i; } + /** + * Returns the upper case hex digit of the lower 4 bits of the int. + * + * @param b the input int + * @return the upper case hex digit of the lower 4 bits of the int. + */ + static char hexDigit(int b) { + return Character.toUpperCase(Character.forDigit(b & 0xF, RADIX)); + } + }