From 5ce8f4ca2a2c2e53f6179b08fc5be6a46ea98842 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Santos Souza de Miranda Date: Sat, 29 Nov 2025 15:33:08 -0300 Subject: [PATCH] Improve `DelegateActionManager` error handling for invalid handlers - Add validation to ensure classes annotated with `@Action` implement `ActionHandler`, throwing `IllegalArgumentException` for mismatches. - Fix minor formatting issue in `@Action` annotation for `GetGenreByIdHandler`. --- .../service/delegate/DelegateActionManager.java | 7 +++++-- .../delegate/handler/genre/GetGenreByIdHandler.java | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/mediamanager/service/delegate/DelegateActionManager.java b/src/main/java/com/mediamanager/service/delegate/DelegateActionManager.java index fa47150..69d36d6 100644 --- a/src/main/java/com/mediamanager/service/delegate/DelegateActionManager.java +++ b/src/main/java/com/mediamanager/service/delegate/DelegateActionManager.java @@ -66,14 +66,17 @@ public class DelegateActionManager { @SuppressWarnings("unchecked") private ActionHandler instantiateHandler(Class clazz) throws Exception { + if(!ActionHandler.class.isAssignableFrom(clazz)){ + throw new IllegalArgumentException( + clazz.getName() + " is annotated with @Action but does not implement ActionHandler"); + + } logger.debug("Attempting to instantiate handler: {}", clazz.getSimpleName()); Constructor[] constructors = clazz.getDeclaredConstructors(); - Constructor[] constructors = clazz.getDeclaredConstructors(); - // Sort constructors by parameter count (descending) to prefer DI constructors java.util.Arrays.sort(constructors, (c1, c2) -> Integer.compare(c2.getParameterCount(), c1.getParameterCount())); diff --git a/src/main/java/com/mediamanager/service/delegate/handler/genre/GetGenreByIdHandler.java b/src/main/java/com/mediamanager/service/delegate/handler/genre/GetGenreByIdHandler.java index 9dfb2db..4dc4c71 100644 --- a/src/main/java/com/mediamanager/service/delegate/handler/genre/GetGenreByIdHandler.java +++ b/src/main/java/com/mediamanager/service/delegate/handler/genre/GetGenreByIdHandler.java @@ -14,7 +14,7 @@ import org.apache.logging.log4j.Logger; import java.util.Optional; -@Action( "genre.getById") +@Action("genre.getById") public class GetGenreByIdHandler implements ActionHandler { private static final Logger logger = LogManager.getLogger(GetGenreByIdHandler.class);