From 57cdc308e846673c727539a10a492c166f03f97c Mon Sep 17 00:00:00 2001 From: Guillaume Smet Date: Wed, 24 Mar 2021 21:32:10 +0100 Subject: [PATCH] Adjust EnumUtils method name and add javadoc --- .../java/org/kohsuke/github/GHCheckRun.java | 4 ++-- .../org/kohsuke/github/GHWorkflowRun.java | 4 ++-- .../kohsuke/github/internal/EnumUtils.java | 21 ++++++++++++++++++- .../github/internal/EnumUtilsTest.java | 12 +++++------ 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHCheckRun.java b/src/main/java/org/kohsuke/github/GHCheckRun.java index 183b79bf3..4c6d36117 100644 --- a/src/main/java/org/kohsuke/github/GHCheckRun.java +++ b/src/main/java/org/kohsuke/github/GHCheckRun.java @@ -99,7 +99,7 @@ public class GHCheckRun extends GHObject { QUEUED, IN_PROGRESS, COMPLETED, UNKNOWN; public static Status from(String value) { - return EnumUtils.getEnum(Status.class, value, Status.UNKNOWN); + return EnumUtils.getNullableEnumOrDefault(Status.class, value, Status.UNKNOWN); } @Override @@ -134,7 +134,7 @@ public class GHCheckRun extends GHObject { ACTION_REQUIRED, CANCELLED, FAILURE, NEUTRAL, SUCCESS, SKIPPED, STALE, TIMED_OUT, UNKNOWN; public static Conclusion from(String value) { - return EnumUtils.getEnum(Conclusion.class, value, Conclusion.UNKNOWN); + return EnumUtils.getNullableEnumOrDefault(Conclusion.class, value, Conclusion.UNKNOWN); } @Override diff --git a/src/main/java/org/kohsuke/github/GHWorkflowRun.java b/src/main/java/org/kohsuke/github/GHWorkflowRun.java index 843f465c0..f389e8322 100644 --- a/src/main/java/org/kohsuke/github/GHWorkflowRun.java +++ b/src/main/java/org/kohsuke/github/GHWorkflowRun.java @@ -363,7 +363,7 @@ public class GHWorkflowRun extends GHObject { QUEUED, IN_PROGRESS, COMPLETED, UNKNOWN; public static Status from(String value) { - return EnumUtils.getEnum(Status.class, value, Status.UNKNOWN); + return EnumUtils.getNullableEnumOrDefault(Status.class, value, Status.UNKNOWN); } @Override @@ -376,7 +376,7 @@ public class GHWorkflowRun extends GHObject { ACTION_REQUIRED, CANCELLED, FAILURE, NEUTRAL, SUCCESS, SKIPPED, STALE, TIMED_OUT, UNKNOWN; public static Conclusion from(String value) { - return EnumUtils.getEnum(Conclusion.class, value, Conclusion.UNKNOWN); + return EnumUtils.getNullableEnumOrDefault(Conclusion.class, value, Conclusion.UNKNOWN); } @Override diff --git a/src/main/java/org/kohsuke/github/internal/EnumUtils.java b/src/main/java/org/kohsuke/github/internal/EnumUtils.java index eead45898..b717cf03f 100644 --- a/src/main/java/org/kohsuke/github/internal/EnumUtils.java +++ b/src/main/java/org/kohsuke/github/internal/EnumUtils.java @@ -2,9 +2,28 @@ package org.kohsuke.github.internal; import java.util.Locale; +/** + * Utils for Enums. + */ public final class EnumUtils { - public static > E getEnum(Class enumClass, String value, E defaultEnum) { + /** + * Returns an enum value matching the value if found, null if the value is null and {@code defaultEnum} if the value + * cannot be matched to a value of the enum. + *

+ * The value is converted to uppercase before being matched to the enum values. + * + * @param + * the type of the enum + * @param enumClass + * the type of the enum + * @param value + * the value to interpret + * @param defaultEnum + * the default enum value if the value doesn't match one of the enum value + * @return an enum value or null + */ + public static > E getNullableEnumOrDefault(Class enumClass, String value, E defaultEnum) { if (value == null) { return null; } diff --git a/src/test/java/org/kohsuke/github/internal/EnumUtilsTest.java b/src/test/java/org/kohsuke/github/internal/EnumUtilsTest.java index 172f33286..6e3982584 100644 --- a/src/test/java/org/kohsuke/github/internal/EnumUtilsTest.java +++ b/src/test/java/org/kohsuke/github/internal/EnumUtilsTest.java @@ -9,12 +9,12 @@ public class EnumUtilsTest { @Test public void testGetEnum() { - assertNull(EnumUtils.getEnum(TestEnum.class, null, TestEnum.UNKNOWN)); - assertEquals(TestEnum.UNKNOWN, EnumUtils.getEnum(TestEnum.class, "foobar", TestEnum.UNKNOWN)); - assertEquals(TestEnum.VALUE_1, EnumUtils.getEnum(TestEnum.class, "VALUE_1", TestEnum.UNKNOWN)); - assertEquals(TestEnum.VALUE_1, EnumUtils.getEnum(TestEnum.class, "value_1", TestEnum.UNKNOWN)); - assertEquals(TestEnum.VALUE_2, EnumUtils.getEnum(TestEnum.class, "VALUE_2", TestEnum.UNKNOWN)); - assertEquals(TestEnum.VALUE_2, EnumUtils.getEnum(TestEnum.class, "value_2", TestEnum.UNKNOWN)); + assertNull(EnumUtils.getNullableEnumOrDefault(TestEnum.class, null, TestEnum.UNKNOWN)); + assertEquals(TestEnum.UNKNOWN, EnumUtils.getNullableEnumOrDefault(TestEnum.class, "foobar", TestEnum.UNKNOWN)); + assertEquals(TestEnum.VALUE_1, EnumUtils.getNullableEnumOrDefault(TestEnum.class, "VALUE_1", TestEnum.UNKNOWN)); + assertEquals(TestEnum.VALUE_1, EnumUtils.getNullableEnumOrDefault(TestEnum.class, "value_1", TestEnum.UNKNOWN)); + assertEquals(TestEnum.VALUE_2, EnumUtils.getNullableEnumOrDefault(TestEnum.class, "VALUE_2", TestEnum.UNKNOWN)); + assertEquals(TestEnum.VALUE_2, EnumUtils.getNullableEnumOrDefault(TestEnum.class, "value_2", TestEnum.UNKNOWN)); } private enum TestEnum {