Adjust EnumUtils method name and add javadoc

This commit is contained in:
Guillaume Smet
2021-03-24 21:32:10 +01:00
parent 8919c5f8c7
commit 57cdc308e8
4 changed files with 30 additions and 11 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -2,9 +2,28 @@ package org.kohsuke.github.internal;
import java.util.Locale;
/**
* Utils for Enums.
*/
public final class EnumUtils {
public static <E extends Enum<E>> E getEnum(Class<E> 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.
* <p>
* The value is converted to uppercase before being matched to the enum values.
*
* @param <E>
* 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 extends Enum<E>> E getNullableEnumOrDefault(Class<E> enumClass, String value, E defaultEnum) {
if (value == null) {
return null;
}

View File

@@ -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 {