diff --git a/impl/maven-core/src/main/java/org/apache/maven/internal/impl/SisuDiBridgeModule.java b/impl/maven-core/src/main/java/org/apache/maven/internal/impl/SisuDiBridgeModule.java index a51a0fa4a365..c1e020b3ed0b 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/internal/impl/SisuDiBridgeModule.java +++ b/impl/maven-core/src/main/java/org/apache/maven/internal/impl/SisuDiBridgeModule.java @@ -24,7 +24,6 @@ import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.util.ArrayList; -import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -53,6 +52,8 @@ import org.eclipse.sisu.BeanEntry; import org.eclipse.sisu.inject.BeanLocator; +import static org.apache.maven.di.impl.Binding.getPriorityComparator; + @Named public class SisuDiBridgeModule extends AbstractModule { @@ -185,7 +186,7 @@ private Supplier getBeanSupplier(Dependency dep, Key key) { } } if (!list.isEmpty()) { - list.sort(getBindingComparator()); + list.sort(getPriorityComparator()); //noinspection unchecked return () -> (Q) getInstance(list.iterator().next()); } else if (dep.optional()) { @@ -215,7 +216,7 @@ private Supplier getListSupplier(Key key) { } } //noinspection unchecked - return (Q) list(list.stream().sorted(getBindingComparator()).toList(), this::getInstance); + return (Q) list(list.stream().sorted(getPriorityComparator()).toList(), this::getInstance); }; } @@ -226,7 +227,7 @@ private Supplier getMapSupplier(Key key) { throw new DIException("Only String keys are supported for maps: " + key); } return () -> { - var comparator = getBindingComparator(); + var comparator = getPriorityComparator(); Map> map = new HashMap<>(); for (Binding b : getBindings().getOrDefault(valueType, Set.of())) { String name = @@ -253,11 +254,6 @@ private Q getInstance(Binding binding) { return compile(binding).get(); } - private static Comparator> getBindingComparator() { - Comparator> comparing = Comparator.comparing(Binding::getPriority); - return comparing.reversed(); - } - private boolean isPlexusBean(BeanEntry entry) { try { if ("org.eclipse.sisu.inject.LazyBeanEntry" diff --git a/impl/maven-di/src/main/java/org/apache/maven/di/impl/Binding.java b/impl/maven-di/src/main/java/org/apache/maven/di/impl/Binding.java index 204c07af6741..0f6cbcce9a1c 100644 --- a/impl/maven-di/src/main/java/org/apache/maven/di/impl/Binding.java +++ b/impl/maven-di/src/main/java/org/apache/maven/di/impl/Binding.java @@ -21,6 +21,7 @@ import java.lang.annotation.Annotation; import java.util.Arrays; import java.util.Collections; +import java.util.Comparator; import java.util.HashSet; import java.util.Set; import java.util.function.Consumer; @@ -150,6 +151,10 @@ public interface TupleConstructorN { R create(Object... args); } + public static Comparator> getPriorityComparator() { + return Comparator.>comparingInt(Binding::getPriority).reversed(); + } + public static class BindingToInstance extends Binding { final T instance; diff --git a/impl/maven-di/src/main/java/org/apache/maven/di/impl/InjectorImpl.java b/impl/maven-di/src/main/java/org/apache/maven/di/impl/InjectorImpl.java index c93ccb5d1d6a..c3a069bca55e 100644 --- a/impl/maven-di/src/main/java/org/apache/maven/di/impl/InjectorImpl.java +++ b/impl/maven-di/src/main/java/org/apache/maven/di/impl/InjectorImpl.java @@ -31,7 +31,6 @@ import java.util.AbstractSet; import java.util.ArrayList; import java.util.Arrays; -import java.util.Comparator; import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; @@ -56,6 +55,8 @@ import org.apache.maven.di.Key; import org.apache.maven.di.Scope; +import static org.apache.maven.di.impl.Binding.getPriorityComparator; + public class InjectorImpl implements Injector { private final Map, Set>> bindings = new HashMap<>(); @@ -212,8 +213,7 @@ public Supplier doGetCompiledBinding(Dependency dep) { Set> res = getBindings(key); if (res != null && !res.isEmpty()) { List> bindingList = new ArrayList<>(res); - Comparator> comparing = Comparator.comparing(Binding::getPriority); - bindingList.sort(comparing.reversed()); + bindingList.sort(getPriorityComparator()); Binding binding = bindingList.get(0); return compile(binding); } @@ -222,8 +222,7 @@ public Supplier doGetCompiledBinding(Dependency dep) { if (res2 != null) { // Sort bindings by priority (highest first) for deterministic ordering List> sortedBindings = new ArrayList<>(res2); - Comparator> comparing = Comparator.comparing(Binding::getPriority); - sortedBindings.sort(comparing.reversed()); + sortedBindings.sort(getPriorityComparator()); List> list = sortedBindings.stream().map(this::compile).collect(Collectors.toList());