This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push: new f7b1a2ec14 [MNG-8764] centralize domain comparison logic Binding#getPriorityComparator (#2428) f7b1a2ec14 is described below commit f7b1a2ec149274ef78fbdee6cb7c330dfe90cf1a Author: Pankraz76 <8830888+pankra...@users.noreply.github.com> AuthorDate: Wed Jun 4 17:49:41 2025 +0200 [MNG-8764] centralize domain comparison logic Binding#getPriorityComparator (#2428) Co-authored-by: Vincent Potucek <vpotu...@me.com> --- .../org/apache/maven/internal/impl/SisuDiBridgeModule.java | 14 +++++--------- .../src/main/java/org/apache/maven/di/impl/Binding.java | 5 +++++ .../main/java/org/apache/maven/di/impl/InjectorImpl.java | 9 ++++----- 3 files changed, 14 insertions(+), 14 deletions(-) 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 a51a0fa4a3..c1e020b3ed 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 <Q> Supplier<Q> getBeanSupplier(Dependency<Q> dep, Key<Q> 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 <Q> Supplier<Q> getListSupplier(Key<Q> 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 <Q> Supplier<Q> getMapSupplier(Key<Q> key) { throw new DIException("Only String keys are supported for maps: " + key); } return () -> { - var comparator = getBindingComparator(); + var comparator = getPriorityComparator(); Map<String, Binding<?>> map = new HashMap<>(); for (Binding<?> b : getBindings().getOrDefault(valueType, Set.of())) { String name = @@ -253,11 +254,6 @@ private <Q> Q getInstance(Binding<Q> binding) { return compile(binding).get(); } - private static Comparator<Binding<?>> getBindingComparator() { - Comparator<Binding<?>> comparing = Comparator.comparing(Binding::getPriority); - return comparing.reversed(); - } - private <T> boolean isPlexusBean(BeanEntry<Annotation, T> 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 794dd7525f..a5da997d75 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; @@ -144,6 +145,10 @@ public interface TupleConstructorN<R> { R create(Object... args); } + public static Comparator<Binding<?>> getPriorityComparator() { + return Comparator.<Binding<?>>comparingInt(Binding::getPriority).reversed(); + } + public static class BindingToInstance<T> extends Binding<T> { 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 c93ccb5d1d..c3a069bca5 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<Key<?>, Set<Binding<?>>> bindings = new HashMap<>(); @@ -212,8 +213,7 @@ public <Q> Supplier<Q> doGetCompiledBinding(Dependency<Q> dep) { Set<Binding<Q>> res = getBindings(key); if (res != null && !res.isEmpty()) { List<Binding<Q>> bindingList = new ArrayList<>(res); - Comparator<Binding<Q>> comparing = Comparator.comparing(Binding::getPriority); - bindingList.sort(comparing.reversed()); + bindingList.sort(getPriorityComparator()); Binding<Q> binding = bindingList.get(0); return compile(binding); } @@ -222,8 +222,7 @@ public <Q> Supplier<Q> doGetCompiledBinding(Dependency<Q> dep) { if (res2 != null) { // Sort bindings by priority (highest first) for deterministic ordering List<Binding<Object>> sortedBindings = new ArrayList<>(res2); - Comparator<Binding<Object>> comparing = Comparator.comparing(Binding::getPriority); - sortedBindings.sort(comparing.reversed()); + sortedBindings.sort(getPriorityComparator()); List<Supplier<Object>> list = sortedBindings.stream().map(this::compile).collect(Collectors.toList());