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 2020/12/13 15:26:47 UTC
[commons-codec] branch master updated: CODEC-295 - Minor
improvement (#67)
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-codec.git
The following commit(s) were added to refs/heads/master by this push:
new 62d55fd CODEC-295 - Minor improvement (#67)
62d55fd is described below
commit 62d55fdd9ff6ae56789b38808a60b49aa30a18ce
Author: Arturo Bernal <ar...@gmail.com>
AuthorDate: Sun Dec 13 16:26:37 2020 +0100
CODEC-295 - Minor improvement (#67)
---
.../apache/commons/codec/binary/BinaryCodec.java | 20 +++++----
.../java/org/apache/commons/codec/binary/Hex.java | 8 ++--
.../java/org/apache/commons/codec/cli/Digest.java | 7 +--
.../org/apache/commons/codec/digest/Md5Crypt.java | 2 +-
.../apache/commons/codec/digest/MurmurHash3.java | 4 +-
.../org/apache/commons/codec/digest/UnixCrypt.java | 3 +-
.../apache/commons/codec/language/Metaphone.java | 2 +-
.../org/apache/commons/codec/language/bm/Rule.java | 24 +++++++----
.../commons/codec/net/QuotedPrintableCodec.java | 9 ++--
.../org/apache/commons/codec/net/RFC1522Codec.java | 6 +--
.../apache/commons/codec/binary/Base16Test.java | 2 +-
.../apache/commons/codec/binary/Base32Test.java | 3 +-
.../apache/commons/codec/binary/Base64Test.java | 2 +-
.../org/apache/commons/codec/binary/HexTest.java | 1 -
.../org/apache/commons/codec/cli/DigestTest.java | 50 ++++++++++++++++++++++
.../language/bm/PhoneticEngineRegressionTest.java | 4 +-
16 files changed, 105 insertions(+), 42 deletions(-)
diff --git a/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java b/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java
index 590dd3e..c7f383e 100644
--- a/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java
+++ b/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java
@@ -80,13 +80,14 @@ public class BinaryCodec implements BinaryDecoder, BinaryEncoder {
if (isEmpty(ascii)) {
return EMPTY_BYTE_ARRAY;
}
+ final int asciiLength = ascii.length;
// get length/8 times bytes with 3 bit shifts to the right of the length
- final byte[] l_raw = new byte[ascii.length >> 3];
+ final byte[] l_raw = new byte[asciiLength >> 3];
/*
* We decr index jj by 8 as we go along to not recompute indices using multiplication every time inside the
* loop.
*/
- for (int ii = 0, jj = ascii.length - 1; ii < l_raw.length; ii++, jj -= 8) {
+ for (int ii = 0, jj = asciiLength - 1; ii < l_raw.length; ii++, jj -= 8) {
for (int bits = 0; bits < BITS.length; ++bits) {
if (ascii[jj - bits] == '1') {
l_raw[ii] |= BITS[bits];
@@ -112,13 +113,14 @@ public class BinaryCodec implements BinaryDecoder, BinaryEncoder {
if (ascii == null || ascii.length == 0) {
return EMPTY_BYTE_ARRAY;
}
+ final int asciiLength = ascii.length;
// get length/8 times bytes with 3 bit shifts to the right of the length
- final byte[] l_raw = new byte[ascii.length >> 3];
+ final byte[] l_raw = new byte[asciiLength >> 3];
/*
* We decr index jj by 8 as we go along to not recompute indices using multiplication every time inside the
* loop.
*/
- for (int ii = 0, jj = ascii.length - 1; ii < l_raw.length; ii++, jj -= 8) {
+ for (int ii = 0, jj = asciiLength - 1; ii < l_raw.length; ii++, jj -= 8) {
for (int bits = 0; bits < BITS.length; ++bits) {
if (ascii[jj - bits] == '1') {
l_raw[ii] |= BITS[bits];
@@ -152,13 +154,14 @@ public class BinaryCodec implements BinaryDecoder, BinaryEncoder {
if (isEmpty(raw)) {
return EMPTY_BYTE_ARRAY;
}
+ final int rawLength = raw.length;
// get 8 times the bytes with 3 bit shifts to the left of the length
- final byte[] l_ascii = new byte[raw.length << 3];
+ final byte[] l_ascii = new byte[rawLength << 3];
/*
* We decr index jj by 8 as we go along to not recompute indices using multiplication every time inside the
* loop.
*/
- for (int ii = 0, jj = l_ascii.length - 1; ii < raw.length; ii++, jj -= 8) {
+ for (int ii = 0, jj = l_ascii.length - 1; ii < rawLength; ii++, jj -= 8) {
for (int bits = 0; bits < BITS.length; ++bits) {
if ((raw[ii] & BITS[bits]) == 0) {
l_ascii[jj - bits] = '0';
@@ -182,13 +185,14 @@ public class BinaryCodec implements BinaryDecoder, BinaryEncoder {
if (isEmpty(raw)) {
return EMPTY_CHAR_ARRAY;
}
+ final int rawLength = raw.length;
// get 8 times the bytes with 3 bit shifts to the left of the length
- final char[] l_ascii = new char[raw.length << 3];
+ final char[] l_ascii = new char[rawLength << 3];
/*
* We decr index jj by 8 as we go along to not recompute indices using multiplication every time inside the
* loop.
*/
- for (int ii = 0, jj = l_ascii.length - 1; ii < raw.length; ii++, jj -= 8) {
+ for (int ii = 0, jj = l_ascii.length - 1; ii < rawLength; ii++, jj -= 8) {
for (int bits = 0; bits < BITS.length; ++bits) {
if ((raw[ii] & BITS[bits]) == 0) {
l_ascii[jj - bits] = '0';
diff --git a/src/main/java/org/apache/commons/codec/binary/Hex.java b/src/main/java/org/apache/commons/codec/binary/Hex.java
index 2294956..7075ab9 100644
--- a/src/main/java/org/apache/commons/codec/binary/Hex.java
+++ b/src/main/java/org/apache/commons/codec/binary/Hex.java
@@ -166,9 +166,9 @@ public class Hex implements BinaryEncoder, BinaryDecoder {
* @since 1.4
*/
protected static char[] encodeHex(final byte[] data, final char[] toDigits) {
- final int l = data.length;
- final char[] out = new char[l << 1];
- encodeHex(data, 0, data.length, toDigits, out, 0);
+ final int dataLength = data.length;
+ final char[] out = new char[dataLength << 1];
+ encodeHex(data, 0, dataLength, toDigits, out, 0);
return out;
}
@@ -519,7 +519,7 @@ public class Hex implements BinaryEncoder, BinaryDecoder {
*/
@Override
public Object encode(final Object object) throws EncoderException {
- byte[] byteArray;
+ final byte[] byteArray;
if (object instanceof String) {
byteArray = ((String) object).getBytes(this.getCharset());
} else if (object instanceof ByteBuffer) {
diff --git a/src/main/java/org/apache/commons/codec/cli/Digest.java b/src/main/java/org/apache/commons/codec/cli/Digest.java
index 4e553cf..9815034 100644
--- a/src/main/java/org/apache/commons/codec/cli/Digest.java
+++ b/src/main/java/org/apache/commons/codec/cli/Digest.java
@@ -61,16 +61,17 @@ public class Digest {
if (args == null) {
throw new IllegalArgumentException("args");
}
- if (args.length == 0) {
+ final int argsLength = args.length;
+ if (argsLength == 0) {
throw new IllegalArgumentException(
String.format("Usage: java %s [algorithm] [FILE|DIRECTORY|string] ...", Digest.class.getName()));
}
this.args = args;
algorithm = args[0];
- if (args.length <= 1) {
+ if (argsLength <= 1) {
inputs = null;
} else {
- inputs = new String[args.length -1];
+ inputs = new String[argsLength - 1];
System.arraycopy(args, 1, inputs, 0, inputs.length);
}
}
diff --git a/src/main/java/org/apache/commons/codec/digest/Md5Crypt.java b/src/main/java/org/apache/commons/codec/digest/Md5Crypt.java
index f607b88..82011a2 100644
--- a/src/main/java/org/apache/commons/codec/digest/Md5Crypt.java
+++ b/src/main/java/org/apache/commons/codec/digest/Md5Crypt.java
@@ -283,7 +283,7 @@ public class Md5Crypt {
final int keyLen = keyBytes.length;
// Extract the real salt from the given string which can be a complete hash string.
- String saltString;
+ final String saltString;
if (salt == null) {
saltString = B64.getRandomSalt(8, random);
} else {
diff --git a/src/main/java/org/apache/commons/codec/digest/MurmurHash3.java b/src/main/java/org/apache/commons/codec/digest/MurmurHash3.java
index 6b471df..0c28cff 100644
--- a/src/main/java/org/apache/commons/codec/digest/MurmurHash3.java
+++ b/src/main/java/org/apache/commons/codec/digest/MurmurHash3.java
@@ -1078,8 +1078,8 @@ public final class MurmurHash3 {
}
// Combine unprocessed bytes with new bytes.
- int newOffset;
- int newLength;
+ final int newOffset;
+ final int newLength;
if (unprocessedLength > 0) {
int k = -1;
switch (unprocessedLength) {
diff --git a/src/main/java/org/apache/commons/codec/digest/UnixCrypt.java b/src/main/java/org/apache/commons/codec/digest/UnixCrypt.java
index 7be4958..b77e4f3 100644
--- a/src/main/java/org/apache/commons/codec/digest/UnixCrypt.java
+++ b/src/main/java/org/apache/commons/codec/digest/UnixCrypt.java
@@ -220,7 +220,8 @@ public class UnixCrypt {
final byte key[] = new byte[8];
Arrays.fill(key, (byte) 0);
- for (int i = 0; i < key.length && i < original.length; i++) {
+ final int originalLength = original.length;
+ for (int i = 0; i < key.length && i < originalLength; i++) {
final int iChar = original[i];
key[i] = (byte) (iChar << 1);
}
diff --git a/src/main/java/org/apache/commons/codec/language/Metaphone.java b/src/main/java/org/apache/commons/codec/language/Metaphone.java
index 84a8575..5ee6466 100644
--- a/src/main/java/org/apache/commons/codec/language/Metaphone.java
+++ b/src/main/java/org/apache/commons/codec/language/Metaphone.java
@@ -89,7 +89,7 @@ public class Metaphone implements StringEncoder {
*/
public String metaphone(final String txt) {
boolean hard = false;
- int txtLength;
+ final int txtLength;
if (txt == null || (txtLength = txt.length()) == 0) {
return "";
}
diff --git a/src/main/java/org/apache/commons/codec/language/bm/Rule.java b/src/main/java/org/apache/commons/codec/language/bm/Rule.java
index 644614a..d55ce8c 100644
--- a/src/main/java/org/apache/commons/codec/language/bm/Rule.java
+++ b/src/main/java/org/apache/commons/codec/language/bm/Rule.java
@@ -84,8 +84,10 @@ public class Rule {
public static final Comparator<Phoneme> COMPARATOR = new Comparator<Phoneme>() {
@Override
public int compare(final Phoneme o1, final Phoneme o2) {
- for (int i = 0; i < o1.phonemeText.length(); i++) {
- if (i >= o2.phonemeText.length()) {
+ final int o1Length = o1.phonemeText.length();
+ final int o2Length = o2.phonemeText.length();
+ for (int i = 0; i < o1Length; i++) {
+ if (i >= o2Length) {
return +1;
}
final int c = o1.phonemeText.charAt(i) - o2.phonemeText.charAt(i);
@@ -94,7 +96,7 @@ public class Rule {
}
}
- if (o1.phonemeText.length() < o2.phonemeText.length()) {
+ if (o1Length < o2Length) {
return -1;
}
@@ -205,6 +207,9 @@ public class Rule {
private static final String HASH_INCLUDE = "#include";
+ private static final int HASH_INCLUDE_LENGTH = HASH_INCLUDE.length();
+
+
private static final Map<NameType, Map<RuleType, Map<String, Map<String, List<Rule>>>>> RULES =
new EnumMap<>(NameType.class);
@@ -262,10 +267,13 @@ public class Rule {
}
private static boolean endsWith(final CharSequence input, final CharSequence suffix) {
- if (suffix.length() > input.length()) {
+ final int suffixLength = suffix.length();
+ final int inputLength = input.length();
+
+ if (suffixLength > inputLength) {
return false;
}
- for (int i = input.length() - 1, j = suffix.length() - 1; j >= 0; i--, j--) {
+ for (int i = inputLength - 1, j = suffixLength - 1; j >= 0; i--, j--) {
if (input.charAt(i) != suffix.charAt(j)) {
return false;
}
@@ -419,7 +427,7 @@ public class Rule {
if (line.startsWith(HASH_INCLUDE)) {
// include statement
- final String incl = line.substring(HASH_INCLUDE.length()).trim();
+ final String incl = line.substring(HASH_INCLUDE_LENGTH).trim();
if (incl.contains(" ")) {
throw new IllegalArgumentException("Malformed import statement '" + rawLine + "' in " +
location);
@@ -492,7 +500,7 @@ public class Rule {
if (!boxes) {
if (startsWith && endsWith) {
// exact match
- if (content.length() == 0) {
+ if (content.isEmpty()) {
// empty
return new RPattern() {
@Override
@@ -507,7 +515,7 @@ public class Rule {
return input.equals(content);
}
};
- } else if ((startsWith || endsWith) && content.length() == 0) {
+ } else if ((startsWith || endsWith) && content.isEmpty()) {
// matches every string
return ALL_STRINGS_RMATCHER;
} else if (startsWith) {
diff --git a/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java b/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java
index e18b298..5641dc8 100644
--- a/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java
+++ b/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java
@@ -282,12 +282,13 @@ public class QuotedPrintableCodec implements BinaryEncoder, BinaryDecoder, Strin
printable = PRINTABLE_CHARS;
}
final ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ final int bytesLength = bytes.length;
if (strict) {
int pos = 1;
// encode up to buffer.length - 3, the last three octets will be treated
// separately for simplification of note #3
- for (int i = 0; i < bytes.length - 3; i++) {
+ for (int i = 0; i < bytesLength - 3; i++) {
final int b = getUnsignedOctet(i, bytes);
if (pos < SAFE_LENGTH) {
// up to this length it is safe to add any byte, encoded or not
@@ -306,7 +307,7 @@ public class QuotedPrintableCodec implements BinaryEncoder, BinaryDecoder, Strin
// rule #3: whitespace at the end of a line *must* be encoded
// if we would do a soft break line after this octet, encode whitespace
- int b = getUnsignedOctet(bytes.length - 3, bytes);
+ int b = getUnsignedOctet(bytesLength - 3, bytes);
boolean encode = !printable.get(b) || (isWhitespace(b) && pos > SAFE_LENGTH - 5);
pos += encodeByte(b, encode, buffer);
@@ -318,10 +319,10 @@ public class QuotedPrintableCodec implements BinaryEncoder, BinaryDecoder, Strin
buffer.write(CR);
buffer.write(LF);
}
- for (int i = bytes.length - 2; i < bytes.length; i++) {
+ for (int i = bytesLength - 2; i < bytesLength; i++) {
b = getUnsignedOctet(i, bytes);
// rule #3: trailing whitespace shall be encoded
- encode = !printable.get(b) || (i > bytes.length - 2 && isWhitespace(b));
+ encode = !printable.get(b) || (i > bytesLength - 2 && isWhitespace(b));
encodeByte(b, encode, buffer);
}
} else {
diff --git a/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java b/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java
index 90564fe..16bbcf4 100644
--- a/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java
+++ b/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java
@@ -55,7 +55,7 @@ abstract class RFC1522Codec {
* Applies an RFC 1522 compliant encoding scheme to the given string of text with the given charset.
* <p>
* This method constructs the "encoded-word" header common to all the RFC 1522 codecs and then invokes
- * {@link #doEncoding(byte [])} method of a concrete class to perform the specific encoding.
+ * {@link #doEncoding(byte[])} method of a concrete class to perform the specific encoding.
*
* @param text
* a string to encode
@@ -85,7 +85,7 @@ abstract class RFC1522Codec {
* Applies an RFC 1522 compliant encoding scheme to the given string of text with the given charset.
* <p>
* This method constructs the "encoded-word" header common to all the RFC 1522 codecs and then invokes
- * {@link #doEncoding(byte [])} method of a concrete class to perform the specific encoding.
+ * {@link #doEncoding(byte[])} method of a concrete class to perform the specific encoding.
*
* @param text
* a string to encode
@@ -111,7 +111,7 @@ abstract class RFC1522Codec {
* Applies an RFC 1522 compliant decoding scheme to the given string of text.
* <p>
* This method processes the "encoded-word" header common to all the RFC 1522 codecs and then invokes
- * {@link #doEncoding(byte [])} method of a concrete class to perform the specific decoding.
+ * {@link #doDecoding(byte[])} method of a concrete class to perform the specific decoding.
*
* @param text
* a string to decode
diff --git a/src/test/java/org/apache/commons/codec/binary/Base16Test.java b/src/test/java/org/apache/commons/codec/binary/Base16Test.java
index f60709d..baae38f 100644
--- a/src/test/java/org/apache/commons/codec/binary/Base16Test.java
+++ b/src/test/java/org/apache/commons/codec/binary/Base16Test.java
@@ -85,7 +85,7 @@ public class Base16Test {
private void testBase16InBuffer(final int startPasSize, final int endPadSize) {
final String content = "Hello World";
- String encodedContent;
+ final String encodedContent;
final byte[] bytesUtf8 = StringUtils.getBytesUtf8(content);
byte[] buffer = ArrayUtils.addAll(bytesUtf8, new byte[endPadSize]);
buffer = ArrayUtils.addAll(new byte[startPasSize], buffer);
diff --git a/src/test/java/org/apache/commons/codec/binary/Base32Test.java b/src/test/java/org/apache/commons/codec/binary/Base32Test.java
index 068f5f8..475bb2f 100644
--- a/src/test/java/org/apache/commons/codec/binary/Base32Test.java
+++ b/src/test/java/org/apache/commons/codec/binary/Base32Test.java
@@ -27,7 +27,6 @@ import static org.junit.Assert.fail;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
-import junit.framework.Assert;
import org.apache.commons.codec.CodecPolicy;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.lang3.ArrayUtils;
@@ -206,7 +205,7 @@ public class Base32Test {
public void testBase32BinarySamples() throws Exception {
final Base32 codec = new Base32();
for (final Object[] element : BASE32_BINARY_TEST_CASES) {
- String expected;
+ final String expected;
if(element.length > 2) {
expected = (String)element[2];
} else {
diff --git a/src/test/java/org/apache/commons/codec/binary/Base64Test.java b/src/test/java/org/apache/commons/codec/binary/Base64Test.java
index a6e834b..e4be6d0 100644
--- a/src/test/java/org/apache/commons/codec/binary/Base64Test.java
+++ b/src/test/java/org/apache/commons/codec/binary/Base64Test.java
@@ -151,7 +151,7 @@ public class Base64Test {
private void testBase64InBuffer(final int startPasSize, final int endPadSize) {
final String content = "Hello World";
- String encodedContent;
+ final String encodedContent;
final byte[] bytesUtf8 = StringUtils.getBytesUtf8(content);
byte[] buffer = ArrayUtils.addAll(bytesUtf8, new byte[endPadSize]);
buffer = ArrayUtils.addAll(new byte[startPasSize], buffer);
diff --git a/src/test/java/org/apache/commons/codec/binary/HexTest.java b/src/test/java/org/apache/commons/codec/binary/HexTest.java
index 7f0fc1c..bab8754 100644
--- a/src/test/java/org/apache/commons/codec/binary/HexTest.java
+++ b/src/test/java/org/apache/commons/codec/binary/HexTest.java
@@ -29,7 +29,6 @@ import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.charset.UnsupportedCharsetException;
import java.util.Arrays;
-import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
diff --git a/src/test/java/org/apache/commons/codec/cli/DigestTest.java b/src/test/java/org/apache/commons/codec/cli/DigestTest.java
new file mode 100644
index 0000000..e5d279b
--- /dev/null
+++ b/src/test/java/org/apache/commons/codec/cli/DigestTest.java
@@ -0,0 +1,50 @@
+/*
+ * 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.codec.cli;
+
+import org.junit.Test;
+
+import java.io.IOException;
+
+
+/**
+ * Tests {@link Digest}.
+ *
+ * @since 1.17
+ */
+public class DigestTest {
+
+ /**
+ * Tests if empty arguments are handled correctly.
+ *
+ * @throws IllegalArgumentException for some failure scenarios.
+ */
+ @Test(expected = IllegalArgumentException.class)
+ public void testEmptyArguments() throws IOException {
+ Digest.main(new String[0]);
+ }
+ /**
+ * Tests if null arguments are handled correctly.
+ *
+ * @throws IllegalArgumentException for some failure scenarios.
+ */
+ @Test(expected = IllegalArgumentException.class)
+ public void testNullArguments() throws IOException {
+ Digest.main(null);
+ }
+}
diff --git a/src/test/java/org/apache/commons/codec/language/bm/PhoneticEngineRegressionTest.java b/src/test/java/org/apache/commons/codec/language/bm/PhoneticEngineRegressionTest.java
index f04fe4d..cb1a7ed 100644
--- a/src/test/java/org/apache/commons/codec/language/bm/PhoneticEngineRegressionTest.java
+++ b/src/test/java/org/apache/commons/codec/language/bm/PhoneticEngineRegressionTest.java
@@ -205,8 +205,8 @@ public class PhoneticEngineRegressionTest {
* regressions in Commons-Codec.
*/
private static String encode(final Map<String, String> args, final boolean concat, final String input) {
- Languages.LanguageSet languageSet;
- PhoneticEngine engine;
+ final Languages.LanguageSet languageSet;
+ final PhoneticEngine engine;
// PhoneticEngine = NameType + RuleType + concat
// we use common-codec's defaults: GENERIC + APPROX + true