java-topology/defects/quarkus/patch/quarkus-0002-bean-bound-decorators-set.patch

23 lines
1.2 KiB
Diff

# UNDF: UNDF-2026-000000518
--- a/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/BeanInfo.java
+++ b/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/BeanInfo.java
@@ -515,11 +515,11 @@ public class BeanInfo implements InjectionTargetInfo {
public List<DecoratorInfo> getBoundDecorators() {
if (decoratedMethods.isEmpty()) {
return Collections.emptyList();
}
- List<DecoratorInfo> bound = new ArrayList<>();
+ // Use LinkedHashSet for O(1) dedup while preserving insertion order before sort.
+ Set<DecoratorInfo> seen = new LinkedHashSet<>();
for (DecorationInfo decoration : decoratedMethods.values()) {
for (DecoratorMethod dm : decoration.decoratorMethods) {
- if (!bound.contains(dm.decorator)) {
- bound.add(dm.decorator);
- }
+ seen.add(dm.decorator);
}
}
+ List<DecoratorInfo> bound = new ArrayList<>(seen);
// Sort by priority (highest goes first) and by bean class (reversed lexicographic-order)
Collections.sort(bound,
Comparator.comparing(DecoratorInfo::getPriority)