Drop commons-codec dependency and extract the Hex encoding function.
This reduces the shaded jar size by 135K (>25%).
diff --git a/commons-rng-examples/examples-stress/pom.xml b/commons-rng-examples/examples-stress/pom.xml
index 04f315b..3c01926 100644
--- a/commons-rng-examples/examples-stress/pom.xml
+++ b/commons-rng-examples/examples-stress/pom.xml
@@ -64,11 +64,6 @@
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
</dependency>
- <dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- <version>1.13</version>
- </dependency>
</dependencies>
<build>
diff --git a/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/RNGUtils.java b/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/RNGUtils.java
index d5d4f79..a82a393 100644
--- a/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/RNGUtils.java
+++ b/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/RNGUtils.java
@@ -25,6 +25,13 @@
* Utility methods for a {@link UniformRandomProvider}.
*/
final class RNGUtils {
+ /**
+ * Used to build 4-bit numbers as Hex.
+ */
+ private static final char[] HEX_DIGITS = {
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
+ };
+
/** No public construction. */
private RNGUtils() {}
@@ -180,4 +187,29 @@
throw new ApplicationException("Failed to parse RandomSource argument: " + argument, ex);
}
}
+
+ /**
+ * Converts an array of bytes into an array of characters representing the hexadecimal
+ * values of each byte in order. The returned array will be double the length of the
+ * passed array, as it takes two characters to represent any given byte.
+ *
+ * <p>This can be used to encode byte array seeds into a text representation.</p>
+ *
+ * <p>Adapted from commons-codec.</p>
+ *
+ * @param data a byte[] to convert to Hex characters
+ * @return A char[] containing the lower-case Hex representation
+ */
+ static char[] encodeHex(final byte[] data) {
+ final int l = data.length;
+ final char[] out = new char[l << 1];
+ // Two characters form the hex value
+ for (int i = 0; i < l; i++) {
+ // Upper 4-bits
+ out[2 * i] = HEX_DIGITS[(0xf0 & data[i]) >>> 4];
+ // Lower 4-bits
+ out[2 * i + 1] = HEX_DIGITS[ 0x0f & data[i]];
+ }
+ return out;
+ }
}
diff --git a/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/StressTestCommand.java b/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/StressTestCommand.java
index 32d9082..9eaa405 100644
--- a/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/StressTestCommand.java
+++ b/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/StressTestCommand.java
@@ -16,7 +16,6 @@
*/
package org.apache.commons.rng.examples.stress;
-import org.apache.commons.codec.binary.Hex;
import org.apache.commons.rng.UniformRandomProvider;
import org.apache.commons.rng.simple.RandomSource;
@@ -629,7 +628,7 @@
sb.append(C).append(N);
sb.append(C).append("RandomSource: ").append(randomSource.name()).append(N);
sb.append(C).append("RNG: ").append(rng.toString()).append(N);
- sb.append(C).append("Seed: ").append(Hex.encodeHexString(seed, true)).append(N);
+ sb.append(C).append("Seed: ").append(RNGUtils.encodeHex(seed)).append(N);
sb.append(C).append(N);
// Match the output of 'java -version', e.g.