More verbose code.  What’s the benefit?

------------------------
Guillaume Nodet



Le mar. 3 juin 2025 à 23:05, Pankraz76 (via GitHub) <g...@apache.org> a
écrit :

>
> Pankraz76 commented on code in PR #2425:
> URL: https://github.com/apache/maven/pull/2425#discussion_r2124918459
>
>
> ##########
> impl/maven-di/src/main/java/org/apache/maven/di/impl/InjectorImpl.java:
> ##########
> @@ -220,7 +220,13 @@ public <Q> Supplier<Q>
> doGetCompiledBinding(Dependency<Q> dep) {
>          if (key.getRawType() == List.class) {
>              Set<Binding<Object>> res2 =
> getBindings(key.getTypeParameter(0));
>              if (res2 != null) {
> -                List<Supplier<Object>> list =
> res2.stream().map(this::compile).collect(Collectors.toList());
> +                // 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());
> +
> +                List<Supplier<Object>> list =
> +
> sortedBindings.stream().map(this::compile).collect(Collectors.toList());
>                  //noinspection unchecked
>                  return () -> (Q) list(list, Supplier::get);
>
> Review Comment:
>    considering this domain logic, might use OOP implementing `comparable`
> as its wont hurt nobody giving special attention and cohesion to core logic.
>
>    <img width="1862" alt="image" src="
> https://github.com/user-attachments/assets/416d7025-ea50-4bca-9d00-afa3b1fc00a2";
> />
>
>
>
>
>
>
> ##########
> impl/maven-di/src/main/java/org/apache/maven/di/impl/InjectorImpl.java:
> ##########
> @@ -220,7 +220,13 @@ public <Q> Supplier<Q>
> doGetCompiledBinding(Dependency<Q> dep) {
>          if (key.getRawType() == List.class) {
>              Set<Binding<Object>> res2 =
> getBindings(key.getTypeParameter(0));
>              if (res2 != null) {
> -                List<Supplier<Object>> list =
> res2.stream().map(this::compile).collect(Collectors.toList());
> +                // 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());
> +
> +                List<Supplier<Object>> list =
> +
> sortedBindings.stream().map(this::compile).collect(Collectors.toList());
>
> Review Comment:
>    ```java
>    List<Binding<Object>> sortedBindings = new ArrayList<>(res2);
>    sortedBindings.sort(Comparator.reverseOrder());
>    //noinspection unchecked
>    return () -> (Q)
> list(sortedBindings.stream().map(this::compile).collect(Collectors.toList()),
> Supplier::get);
>    ```
>    ```java
>        @Override
>        public int compareTo(Binding<Object> objectBinding) {
>            return Integer.compare(this.priority, objectBinding.priority);
>        }
>    ```
>
>
>
> --
> This is an automated message from the Apache Git Service.
> To respond to the message, please log on to GitHub and use the
> URL above to go to the specific comment.
>
> To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org
>
> For queries about this service, please contact Infrastructure at:
> us...@infra.apache.org
>
>

Reply via email to