mirror of
https://github.com/jlengrand/github-api.git
synced 2026-03-10 08:21:21 +00:00
Remove internal map-only enum
We took a change that added an enum that was used purely for mapping from EventInfo.type to GHEvent. This seemed fine but that enum is used only by EventInfo. This change removed that enum and adds a map to EventInfo to do the required mapping. This avoids shoehorning mapping behavior in to the EnumUtils.
This commit is contained in:
@@ -5,7 +5,6 @@ import org.kohsuke.github.internal.EnumUtils;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -119,7 +118,7 @@ public class GHApp extends GHObject {
|
||||
*/
|
||||
public List<GHEvent> getEvents() {
|
||||
return events.stream()
|
||||
.map(e -> EnumUtils.getEnumOrDefault(GHEvent.class, e.toUpperCase(Locale.ROOT), GHEvent.UNKNOWN))
|
||||
.map(e -> EnumUtils.getEnumOrDefault(GHEvent.class, e, GHEvent.UNKNOWN))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@ import java.io.IOException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -254,7 +253,7 @@ public class GHAppInstallation extends GHObject {
|
||||
*/
|
||||
public List<GHEvent> getEvents() {
|
||||
return events.stream()
|
||||
.map(e -> EnumUtils.getEnumOrDefault(GHEvent.class, e.toUpperCase(Locale.ROOT), GHEvent.UNKNOWN))
|
||||
.map(e -> EnumUtils.getEnumOrDefault(GHEvent.class, e, GHEvent.UNKNOWN))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
import org.kohsuke.github.internal.EnumUtils;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* Hook event type.
|
||||
*
|
||||
@@ -91,46 +87,4 @@ public enum GHEvent {
|
||||
return "*";
|
||||
return name().toLowerCase(Locale.ENGLISH);
|
||||
}
|
||||
|
||||
/**
|
||||
* Representation of GitHub Event Type
|
||||
*
|
||||
* @see <a href="https://docs.github.com/en/developers/webhooks-and-events/github-event-types">GitHub event
|
||||
* types</a>
|
||||
*/
|
||||
enum GitHubEventType {
|
||||
CommitCommentEvent(COMMIT_COMMENT),
|
||||
CreateEvent(CREATE),
|
||||
DeleteEvent(DELETE),
|
||||
ForkEvent(FORK),
|
||||
GollumEvent(GOLLUM),
|
||||
IssueCommentEvent(ISSUE_COMMENT),
|
||||
IssuesEvent(ISSUES),
|
||||
MemberEvent(MEMBER),
|
||||
PublicEvent(PUBLIC),
|
||||
PullRequestEvent(PULL_REQUEST),
|
||||
PullRequestReviewEvent(PULL_REQUEST_REVIEW),
|
||||
PullRequestReviewCommentEvent(PULL_REQUEST_REVIEW_COMMENT),
|
||||
PushEvent(PUSH),
|
||||
ReleaseEvent(RELEASE),
|
||||
WatchEvent(WATCH),
|
||||
UnknownEvent(UNKNOWN);
|
||||
|
||||
private final GHEvent event;
|
||||
GitHubEventType(GHEvent event) {
|
||||
this.event = event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Required due to different naming conventions between different GitHub event names for Webhook events and
|
||||
* GitHub events
|
||||
*
|
||||
* @param event
|
||||
* the github event as a string to convert to Event enum
|
||||
* @return GHEvent
|
||||
*/
|
||||
static GHEvent transformToGHEvent(@Nonnull String event) {
|
||||
return EnumUtils.getEnumOrDefault(GitHubEventType.class, event, UnknownEvent).event;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,10 +2,9 @@ package org.kohsuke.github;
|
||||
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import org.kohsuke.github.GHEvent.GitHubEventType;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Date;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Represents an event.
|
||||
@@ -19,6 +18,16 @@ public class GHEventInfo extends GitHubInteractiveObject {
|
||||
|
||||
private long id;
|
||||
private String created_at;
|
||||
|
||||
/**
|
||||
* Representation of GitHub Event API Event Type.
|
||||
*
|
||||
* This is not the same as the values used for hook methods such as
|
||||
* {@link GHRepository#createHook(String, Map, Collection, boolean)}.
|
||||
*
|
||||
* @see <a href="https://docs.github.com/en/developers/webhooks-and-events/github-event-types">GitHub event
|
||||
* types</a>
|
||||
*/
|
||||
private String type;
|
||||
|
||||
// these are all shallow objects
|
||||
@@ -41,13 +50,45 @@ public class GHEventInfo extends GitHubInteractiveObject {
|
||||
private String name; // owner/repo
|
||||
}
|
||||
|
||||
static final Map<String, GHEvent> mapTypeStringToEvent = createEventMap();
|
||||
|
||||
/**
|
||||
* Map for GitHub Event API Event Type to GHEvent.
|
||||
*
|
||||
* @see <a href="https://docs.github.com/en/developers/webhooks-and-events/github-event-types">GitHub event
|
||||
* types</a>
|
||||
*/
|
||||
private static Map<String, GHEvent> createEventMap() {
|
||||
HashMap<String, GHEvent> map = new HashMap<>();
|
||||
map.put("CommitCommentEvent", GHEvent.COMMIT_COMMENT);
|
||||
map.put("CreateEvent", GHEvent.CREATE);
|
||||
map.put("DeleteEvent", GHEvent.DELETE);
|
||||
map.put("ForkEvent", GHEvent.FORK);
|
||||
map.put("GollumEvent", GHEvent.GOLLUM);
|
||||
map.put("IssueCommentEvent", GHEvent.ISSUE_COMMENT);
|
||||
map.put("IssuesEvent", GHEvent.ISSUES);
|
||||
map.put("MemberEvent", GHEvent.MEMBER);
|
||||
map.put("PublicEvent", GHEvent.PUBLIC);
|
||||
map.put("PullRequestEvent", GHEvent.PULL_REQUEST);
|
||||
map.put("PullRequestReviewEvent", GHEvent.PULL_REQUEST_REVIEW);
|
||||
map.put("PullRequestReviewCommentEvent", GHEvent.PULL_REQUEST_REVIEW_COMMENT);
|
||||
map.put("PushEvent", GHEvent.PUSH);
|
||||
map.put("ReleaseEvent", GHEvent.RELEASE);
|
||||
map.put("WatchEvent", GHEvent.WATCH);
|
||||
return Collections.unmodifiableMap(map);
|
||||
}
|
||||
|
||||
static GHEvent transformTypeToGHEvent(String type) {
|
||||
return mapTypeStringToEvent.getOrDefault(type, GHEvent.UNKNOWN);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets type.
|
||||
*
|
||||
* @return the type
|
||||
*/
|
||||
public GHEvent getType() {
|
||||
return GitHubEventType.transformToGHEvent(type);
|
||||
return transformTypeToGHEvent(type);
|
||||
}
|
||||
|
||||
GHEventInfo wrapUp(GitHub root) {
|
||||
|
||||
@@ -8,7 +8,6 @@ import java.net.URL;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -41,10 +40,7 @@ public abstract class GHHook extends GHObject {
|
||||
public EnumSet<GHEvent> getEvents() {
|
||||
EnumSet<GHEvent> s = EnumSet.noneOf(GHEvent.class);
|
||||
for (String e : events) {
|
||||
if (e.equals("*"))
|
||||
s.add(GHEvent.ALL);
|
||||
else
|
||||
s.add(EnumUtils.getEnumOrDefault(GHEvent.class, e.toUpperCase(Locale.ROOT), GHEvent.UNKNOWN));
|
||||
s.add(e.equals("*") ? GHEvent.ALL : EnumUtils.getEnumOrDefault(GHEvent.class, e, GHEvent.UNKNOWN));
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ public final class EnumUtils {
|
||||
if (value == null) {
|
||||
return null;
|
||||
}
|
||||
return getEnumOrDefault(enumClass, value.toUpperCase(Locale.ROOT), defaultEnum);
|
||||
return getEnumOrDefault(enumClass, value, defaultEnum);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -49,8 +49,8 @@ public final class EnumUtils {
|
||||
*/
|
||||
public static <E extends Enum<E>> E getEnumOrDefault(Class<E> enumClass, String value, E defaultEnum) {
|
||||
try {
|
||||
return Enum.valueOf(enumClass, value);
|
||||
} catch (IllegalArgumentException e) {
|
||||
return Enum.valueOf(enumClass, value.toUpperCase(Locale.ROOT));
|
||||
} catch (NullPointerException | IllegalArgumentException e) {
|
||||
LOGGER.warning("Unknown value " + value + " for enum class " + enumClass.getName() + ", defaulting to "
|
||||
+ defaultEnum.name());
|
||||
return defaultEnum;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.kohsuke.github.GHEvent.GitHubEventType;
|
||||
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
@@ -26,10 +25,9 @@ public class GHEventTest {
|
||||
|
||||
@Test
|
||||
public void regressionTest() {
|
||||
assertThat(GitHubEventType.transformToGHEvent("NewlyAddedOrBogusEvent"), is(GHEvent.UNKNOWN));
|
||||
for (GitHubEventType gitHubEventType : GitHubEventType.values()) {
|
||||
assertThat(GitHubEventType.transformToGHEvent(gitHubEventType.name()),
|
||||
is(oldTransformationFunction(gitHubEventType.name())));
|
||||
assertThat(GHEventInfo.transformTypeToGHEvent("NewlyAddedOrBogusEvent"), is(GHEvent.UNKNOWN));
|
||||
for (String eventInfoType : GHEventInfo.mapTypeStringToEvent.keySet()) {
|
||||
assertThat(GHEventInfo.transformTypeToGHEvent(eventInfoType), is(oldTransformationFunction(eventInfoType)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,8 @@ public class EnumUtilsTest {
|
||||
|
||||
@Test
|
||||
public void testGetEnum() {
|
||||
assertThat(EnumUtils.getEnumOrDefault(TestEnum.class, null, TestEnum.UNKNOWN), equalTo(TestEnum.UNKNOWN));
|
||||
|
||||
assertThat(EnumUtils.getNullableEnumOrDefault(TestEnum.class, null, TestEnum.UNKNOWN), nullValue());
|
||||
assertThat(EnumUtils.getNullableEnumOrDefault(TestEnum.class, "foobar", TestEnum.UNKNOWN),
|
||||
equalTo(TestEnum.UNKNOWN));
|
||||
|
||||
Reference in New Issue
Block a user