From d6aa942328c8aae2bfe4a3817be3b89c4eadd98b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Coet?= Date: Tue, 13 Oct 2026 16:02:18 +0200 Subject: [PATCH 1/2] Replace the stream in JMethodSymbol.findOverridesInTypes with a for loop --- .../java/org/sonar/java/model/JMethodSymbol.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/java-frontend/src/main/java/org/sonar/java/model/JMethodSymbol.java b/java-frontend/src/main/java/org/sonar/java/model/JMethodSymbol.java index 7a470516627..3f15b5f9a6b 100644 --- a/java-frontend/src/main/java/org/sonar/java/model/JMethodSymbol.java +++ b/java-frontend/src/main/java/org/sonar/java/model/JMethodSymbol.java @@ -22,7 +22,6 @@ import java.util.List; import java.util.Set; import java.util.function.Predicate; -import java.util.stream.Stream; import javax.annotation.Nullable; import org.eclipse.jdt.core.dom.ASTUtils; import org.eclipse.jdt.core.dom.IMethodBinding; @@ -158,11 +157,12 @@ void findOverridesInParentTypes(Collection accumulator, Predicate< private void findOverridesInTypes(Collection accumulator, Predicate overridesCondition, ITypeBinding... types) { for (ITypeBinding type : types) { if (type != null) { - Stream.of(type.getDeclaredMethods()) - .filter(overridesCondition) - .findFirst() - .map(sema::methodSymbol) - .ifPresent(accumulator::add); + for (IMethodBinding declaredMethod : type.getDeclaredMethods()) { + if (overridesCondition.test(declaredMethod)) { + accumulator.add(sema.methodSymbol(declaredMethod)); + break; + } + } findOverridesInParentTypes(accumulator, overridesCondition, type); } } From fb155dc76bf44ad2c85523b9aadd9d5618316248 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Coet?= Date: Wed, 14 Oct 2026 11:32:14 +0200 Subject: [PATCH 2/2] Replace streams in MethodMatchersList with loops --- .../java/matcher/MethodMatchersList.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/java-frontend/src/main/java/org/sonar/java/matcher/MethodMatchersList.java b/java-frontend/src/main/java/org/sonar/java/matcher/MethodMatchersList.java index d58c6b08b72..fac6c759185 100644 --- a/java-frontend/src/main/java/org/sonar/java/matcher/MethodMatchersList.java +++ b/java-frontend/src/main/java/org/sonar/java/matcher/MethodMatchersList.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.function.Predicate; import org.sonar.plugins.java.api.semantic.MethodMatchers; import org.sonar.plugins.java.api.semantic.Symbol; import org.sonar.plugins.java.api.tree.MethodInvocationTree; @@ -35,27 +36,36 @@ public MethodMatchersList(List matchers) { @Override public boolean matches(NewClassTree newClassTree) { - return matchers.stream().anyMatch(matcher -> matcher.matches(newClassTree)); + return matchesAny(matcher -> matcher.matches(newClassTree)); } @Override public boolean matches(MethodInvocationTree mit) { - return matchers.stream().anyMatch(matcher -> matcher.matches(mit)); + return matchesAny(matcher -> matcher.matches(mit)); } @Override public boolean matches(MethodTree methodTree) { - return matchers.stream().anyMatch(matcher -> matcher.matches(methodTree)); + return matchesAny(matcher -> matcher.matches(methodTree)); } @Override public boolean matches(MethodReferenceTree methodReferenceTree) { - return matchers.stream().anyMatch(matcher -> matcher.matches(methodReferenceTree)); + return matchesAny(matcher -> matcher.matches(methodReferenceTree)); } @Override public boolean matches(Symbol symbol) { - return matchers.stream().anyMatch(matcher -> matcher.matches(symbol)); + return matchesAny(matcher -> matcher.matches(symbol)); + } + + private boolean matchesAny(Predicate predicate) { + for (MethodMatchers matcher : matchers) { + if (predicate.test(matcher)) { + return true; + } + } + return false; } }