diff --git a/src/main/java/org/kohsuke/github/GHMilestone.java b/src/main/java/org/kohsuke/github/GHMilestone.java index 7cd556c8ee..74615951be 100644 --- a/src/main/java/org/kohsuke/github/GHMilestone.java +++ b/src/main/java/org/kohsuke/github/GHMilestone.java @@ -1,13 +1,14 @@ package org.kohsuke.github; import com.infradna.tool.bridge_method_injector.WithBridgeMethods; +import edu.umd.cs.findbugs.annotations.CheckForNull; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import org.kohsuke.github.internal.EnumUtils; import java.io.IOException; import java.net.URL; import java.time.Instant; import java.util.Date; -import java.util.Locale; // TODO: Auto-generated Javadoc /** @@ -141,10 +142,11 @@ public GHRepository getOwner() { /** * Gets state. * - * @return the state + * @return the state, or {@code null} if the state is not available */ + @CheckForNull public GHMilestoneState getState() { - return Enum.valueOf(GHMilestoneState.class, state.toUpperCase(Locale.ENGLISH)); + return EnumUtils.getNullableEnumOrDefault(GHMilestoneState.class, state, GHMilestoneState.UNKNOWN); } /** diff --git a/src/main/java/org/kohsuke/github/GHMilestoneState.java b/src/main/java/org/kohsuke/github/GHMilestoneState.java index ab2030239d..4cba5d7bd2 100644 --- a/src/main/java/org/kohsuke/github/GHMilestoneState.java +++ b/src/main/java/org/kohsuke/github/GHMilestoneState.java @@ -11,5 +11,7 @@ public enum GHMilestoneState { /** The closed. */ CLOSED, /** The open. */ - OPEN + OPEN, + /** The unknown. */ + UNKNOWN } diff --git a/src/test/java/org/kohsuke/github/EnumTest.java b/src/test/java/org/kohsuke/github/EnumTest.java index 7805ad2575..b008c488ed 100644 --- a/src/test/java/org/kohsuke/github/EnumTest.java +++ b/src/test/java/org/kohsuke/github/EnumTest.java @@ -64,7 +64,7 @@ public void touchEnums() { assertThat(GHMembership.Role.values().length, equalTo(2)); - assertThat(GHMilestoneState.values().length, equalTo(2)); + assertThat(GHMilestoneState.values().length, equalTo(3)); assertThat(GHMyself.RepositoryListFilter.values().length, equalTo(5)); diff --git a/src/test/java/org/kohsuke/github/GHIssueEventAttributeTest.java b/src/test/java/org/kohsuke/github/GHIssueEventAttributeTest.java index 152e377311..c11f0e6b96 100644 --- a/src/test/java/org/kohsuke/github/GHIssueEventAttributeTest.java +++ b/src/test/java/org/kohsuke/github/GHIssueEventAttributeTest.java @@ -14,6 +14,7 @@ import static java.util.stream.Collectors.toList; import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.Matchers.notNullValue; +import static org.hamcrest.Matchers.nullValue; // TODO: Auto-generated Javadoc /** @@ -24,7 +25,10 @@ public class GHIssueEventAttributeTest extends AbstractGitHubWireMockTest { private enum Type implements Predicate, Consumer { assignment(e -> assertThat(e.getAssignee(), notNullValue()), "assigned", "unassigned"), label(e -> assertThat(e.getLabel(), notNullValue()), "labeled", "unlabeled"), - milestone(e -> assertThat(e.getMilestone(), notNullValue()), "milestoned", "demilestoned"); + milestone(e -> { + assertThat(e.getMilestone(), notNullValue()); + assertThat(e.getMilestone().getState(), nullValue()); + }, "milestoned", "demilestoned"); private final Consumer assertion; private final Set subtypes;