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

Reply via email to