From 9c0015686b7a3c1a50cb24f7fa5a751ab5685911 Mon Sep 17 00:00:00 2001 From: Sidd Date: Sun, 4 Sep 2022 09:27:09 -0700 Subject: [PATCH] refactor: avoid autoDiscovery in initializeEventManager --- .../common/util/EventManagerUtils.java | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/common/src/main/java/com/github/twitch4j/common/util/EventManagerUtils.java b/common/src/main/java/com/github/twitch4j/common/util/EventManagerUtils.java index 6d8293384..92c042c99 100644 --- a/common/src/main/java/com/github/twitch4j/common/util/EventManagerUtils.java +++ b/common/src/main/java/com/github/twitch4j/common/util/EventManagerUtils.java @@ -1,7 +1,12 @@ package com.github.twitch4j.common.util; +import com.github.philippheuer.events4j.api.service.IEventHandler; import com.github.philippheuer.events4j.core.EventManager; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +@Slf4j public class EventManagerUtils { /** @@ -11,7 +16,7 @@ public class EventManagerUtils { * @param defaultEventHandler The default eventHandler class * @return EventManager */ - public static EventManager validateOrInitializeEventManager(EventManager eventManager, Class defaultEventHandler) { + public static EventManager validateOrInitializeEventManager(@Nullable EventManager eventManager, @NotNull Class defaultEventHandler) { EventManager em = eventManager != null ? eventManager : initializeEventManager(defaultEventHandler); validateEventManager(em); return em; @@ -23,11 +28,26 @@ public static EventManager validateOrInitializeEventManager(EventManager eventMa * @param defaultEventHandler The default eventHandler class * @return EventManager */ - public static EventManager initializeEventManager(Class defaultEventHandler) { + public static EventManager initializeEventManager(@NotNull Class defaultEventHandler) { EventManager eventManager = new EventManager(); - eventManager.autoDiscovery(); - eventManager.setDefaultEventHandler(defaultEventHandler); + // Try to register just defaultEventHandler + try { + eventManager.registerEventHandler((IEventHandler) defaultEventHandler.getDeclaredConstructor().newInstance()); + eventManager.setDefaultEventHandler(defaultEventHandler); + } catch (Exception e) { + log.warn("Failed to register the requested default event handler: " + defaultEventHandler, e); + } + + // Fallback + if (eventManager.getDefaultEventHandler() == null) { + eventManager.autoDiscovery(); + if (!eventManager.getEventHandlers().isEmpty()) { + Class clazz = eventManager.getEventHandlers().get(0).getClass(); + eventManager.setDefaultEventHandler(clazz); + log.info("Registered fallback default event handler: {}", clazz.getTypeName()); + } + } return eventManager; } @@ -37,7 +57,7 @@ public static EventManager initializeEventManager(Class defaultEventHandler) * * @param eventManager The eventManager instance */ - public static void validateEventManager(EventManager eventManager) { + public static void validateEventManager(@NotNull EventManager eventManager) { if (eventManager.getEventHandlers().size() == 0) { throw new RuntimeException("Fatal: No EventHandlers have been registered in the EventManager, please run the autodiscovery to add EventHandlers that are present in your classpath. -> eventHandler.autoDiscovery();"); }