From a5bd6e2c398babde938fedf2243e01e24ddabe7c Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Miranda Date: Sat, 29 Nov 2025 09:52:54 -0300 Subject: [PATCH] Update src/main/java/com/mediamanager/service/delegate/DelegateActionManager.java Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- .../service/delegate/DelegateActionManager.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/mediamanager/service/delegate/DelegateActionManager.java b/src/main/java/com/mediamanager/service/delegate/DelegateActionManager.java index 3e35e4b..fa47150 100644 --- a/src/main/java/com/mediamanager/service/delegate/DelegateActionManager.java +++ b/src/main/java/com/mediamanager/service/delegate/DelegateActionManager.java @@ -72,17 +72,17 @@ public class DelegateActionManager { 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())); + for (Constructor constructor : constructors) { Class[] paramTypes = constructor.getParameterTypes(); - if (paramTypes.length == 0) { - logger.debug("Using no-arg constructor for {}", clazz.getSimpleName()); - return (ActionHandler) constructor.newInstance(); - } - - Object[] params = new Object[paramTypes.length]; boolean allDependenciesResolved = true; @@ -105,9 +105,8 @@ public class DelegateActionManager { if (allDependenciesResolved) { - logger.debug("Successfully resolved {} dependencies for {}", - paramTypes.length, - clazz.getSimpleName()); + logger.debug("Using constructor with {} params for {}", + paramTypes.length, clazz.getSimpleName()); return (ActionHandler) constructor.newInstance(params); } }