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`.
This commit is contained in:
Gustavo Henrique Santos Souza de Miranda 2025-11-29 15:33:08 -03:00
parent a5bd6e2c39
commit 5ce8f4ca2a
2 changed files with 6 additions and 3 deletions

View File

@ -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()));

View File

@ -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);