From 8184c3657b82f2314e74094aedcc36f078d2ad60 Mon Sep 17 00:00:00 2001 From: Oli B Date: Sat, 8 Sep 2018 15:21:25 +0200 Subject: [PATCH] ctors of TinyUUID throws now an IllegalArgumentException for wrong arguments --- .../LocalizedIllegalArgumentException.java | 13 +++++++++++++ src/main/java/de/jfachwert/util/TinyUUID.java | 8 ++++---- src/test/java/de/jfachwert/util/TinyUUIDTest.java | 2 +- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/jfachwert/pruefung/exception/LocalizedIllegalArgumentException.java b/src/main/java/de/jfachwert/pruefung/exception/LocalizedIllegalArgumentException.java index 155bdd26..9c3f1c75 100644 --- a/src/main/java/de/jfachwert/pruefung/exception/LocalizedIllegalArgumentException.java +++ b/src/main/java/de/jfachwert/pruefung/exception/LocalizedIllegalArgumentException.java @@ -20,6 +20,7 @@ import org.apache.commons.lang3.Range; import java.io.Serializable; +import java.util.Arrays; /** * Die InvalidValueException ist eine Exception fuer ungueltige Werte. @@ -74,6 +75,18 @@ public LocalizedIllegalArgumentException(Serializable value, String context, Thr this("illegal value for " + context.replace('_', ' ') + ": \"" + value + '"', cause); } + /** + * Dieser Constructor kann bei Arrays mit falscher Groesse eingesetzt + * werden. + * + * @param array fehlerhaftes Array + * @param expected erwartete Array-Groesse + */ + public LocalizedIllegalArgumentException(byte[] array, int expected) { + this("array=" + Arrays.toString(array) + " has not length " + expected + " (but " + array.length + ")", + new InvalidLengthException(array, expected)); + } + /** * Erzeugt eine neue Exception fuer einen fehlerhaften Wert. * diff --git a/src/main/java/de/jfachwert/util/TinyUUID.java b/src/main/java/de/jfachwert/util/TinyUUID.java index 9f1b719a..f37d1940 100644 --- a/src/main/java/de/jfachwert/util/TinyUUID.java +++ b/src/main/java/de/jfachwert/util/TinyUUID.java @@ -18,8 +18,8 @@ package de.jfachwert.util; import de.jfachwert.AbstractFachwert; -import de.jfachwert.pruefung.exception.InvalidLengthException; import de.jfachwert.pruefung.exception.InvalidValueException; +import de.jfachwert.pruefung.exception.LocalizedIllegalArgumentException; import java.math.BigInteger; import java.nio.charset.StandardCharsets; @@ -93,12 +93,12 @@ public TinyUUID(byte[] bytes) { } private static UUID toUUID(byte[] bytes) { - return UUID.fromString(toString(validate(bytes))); + return UUID.fromString(toString(verify(bytes))); } - private static byte[] validate(byte[] bytes) { + private static byte[] verify(byte[] bytes) { if (bytes.length != 16) { - throw new InvalidLengthException(bytes, 16); + throw new LocalizedIllegalArgumentException(bytes, 16); } return bytes; } diff --git a/src/test/java/de/jfachwert/util/TinyUUIDTest.java b/src/test/java/de/jfachwert/util/TinyUUIDTest.java index 63d009d6..7cb26c3f 100644 --- a/src/test/java/de/jfachwert/util/TinyUUIDTest.java +++ b/src/test/java/de/jfachwert/util/TinyUUIDTest.java @@ -71,7 +71,7 @@ public void toNumberTen() { * 16 Bytes uebergeben werden, sollte eine {@link ValidationException} * kommen. */ - @Test(expected = ValidationException.class) + @Test(expected = IllegalArgumentException.class) public void testTinyUUIDInvalidBytes() { new TinyUUID(new byte[1]); }