From 8a76d8767e7ce63de965fe7d69d380fd6bc5749e Mon Sep 17 00:00:00 2001 From: Azhwani <13301425+azhwani@users.noreply.github.com> Date: Sat, 21 Jan 2023 16:16:18 +0100 Subject: [PATCH] BAEL-6044: Fix the IllegalArgumentException: No enum const class (#13171) --- .../exception/noenumconst/Priority.java | 13 +++++++ .../exception/noenumconst/PriorityUtils.java | 21 +++++++++++ .../noenumconst/PriorityUtilsUnitTest.java | 36 +++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/noenumconst/Priority.java create mode 100644 core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/noenumconst/PriorityUtils.java create mode 100644 core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/noenumconst/PriorityUtilsUnitTest.java diff --git a/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/noenumconst/Priority.java b/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/noenumconst/Priority.java new file mode 100644 index 0000000000..ff9591b1e0 --- /dev/null +++ b/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/noenumconst/Priority.java @@ -0,0 +1,13 @@ +package com.baeldung.exception.noenumconst; + +public enum Priority { + + HIGH("High"), MEDIUM("Medium"), LOW("Low"); + + private String name; + + Priority(String name) { + this.name = name; + } + +} diff --git a/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/noenumconst/PriorityUtils.java b/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/noenumconst/PriorityUtils.java new file mode 100644 index 0000000000..8d7004bf39 --- /dev/null +++ b/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/noenumconst/PriorityUtils.java @@ -0,0 +1,21 @@ +package com.baeldung.exception.noenumconst; + +public class PriorityUtils { + + public static Priority getByName(String name) { + return Priority.valueOf(name); + } + + public static Priority getByUpperCaseName(String name) { + if (name == null || name.isEmpty()) { + return null; + } + + return Priority.valueOf(name.toUpperCase()); + } + + public static void main(String[] args) { + System.out.println(getByName("Low")); + } + +} diff --git a/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/noenumconst/PriorityUtilsUnitTest.java b/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/noenumconst/PriorityUtilsUnitTest.java new file mode 100644 index 0000000000..1ff9c49015 --- /dev/null +++ b/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/noenumconst/PriorityUtilsUnitTest.java @@ -0,0 +1,36 @@ +package com.baeldung.exception.noenumconst; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import org.junit.jupiter.api.Test; + +class PriorityUtilsUnitTest { + + @Test + void givenCustomName_whenUsingGetByName_thenThrowIllegalArgumentException() { + assertThrows(IllegalArgumentException.class, () -> PriorityUtils.getByName("Low")); + } + + @Test + void givenCustomName_whenUsingGetByUpperCaseName_thenReturnEnumConstant() { + assertEquals(Priority.HIGH, PriorityUtils.getByUpperCaseName("High")); + } + + @Test + void givenInvalidCustomName_whenUsingGetByUpperCaseName_thenThrowIllegalArgumentException() { + assertThrows(IllegalArgumentException.class, () -> PriorityUtils.getByUpperCaseName("invalid")); + } + + @Test + void givenEmptyName_whenUsingGetByUpperCaseName_thenReturnNull() { + assertNull(PriorityUtils.getByUpperCaseName("")); + } + + @Test + void givenNull_whenUsingGetByUpperCaseName_thenReturnNull() { + assertNull(PriorityUtils.getByUpperCaseName(null)); + } + +}