Skip to content

Commit

Permalink
refactor: avoid autoDiscovery in initializeEventManager (#640)
Browse files Browse the repository at this point in the history
  • Loading branch information
iProdigy committed Sep 4, 2022
1 parent 5b40c0f commit 3ee3fc8
Showing 1 changed file with 25 additions and 5 deletions.
@@ -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 {

/**
Expand All @@ -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;
Expand All @@ -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<? extends IEventHandler> clazz = eventManager.getEventHandlers().get(0).getClass();
eventManager.setDefaultEventHandler(clazz);
log.info("Registered fallback default event handler: {}", clazz.getTypeName());
}
}

return eventManager;
}
Expand All @@ -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();");
}
Expand Down

0 comments on commit 3ee3fc8

Please sign in to comment.