From c0ffcc1c3fde32e242c8ccbcd615c18f9333e093 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Wed, 22 Nov 2017 15:09:41 +0700 Subject: [PATCH] Stream API call chains simplified --- .../chainsSearch/MethodChainsSearchUtil.java | 4 +--- .../ChainCompletionNewVariableLookupElement.java | 3 +-- .../classpath/CreateModuleLibraryChooser.java | 2 +- .../magicConstant/MagicConstantInspection.java | 2 +- .../src/com/intellij/dvcs/ui/VcsLogAction.java | 2 +- .../testSrc/com/intellij/util/AlarmTest.java | 8 ++++++-- .../PyStringFormatCompletionContributor.java | 10 +++------- .../inspections/PyMissingConstructorInspection.java | 12 +++--------- .../extractSuperclass/PyExtractSuperclassHelper.java | 4 ++-- .../spellchecker/PythonSpellcheckerStrategy.java | 2 +- 10 files changed, 20 insertions(+), 29 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/chainsSearch/MethodChainsSearchUtil.java b/java/compiler/impl/src/com/intellij/compiler/chainsSearch/MethodChainsSearchUtil.java index 42b54b329366..a229ddd9077a 100644 --- a/java/compiler/impl/src/com/intellij/compiler/chainsSearch/MethodChainsSearchUtil.java +++ b/java/compiler/impl/src/com/intellij/compiler/chainsSearch/MethodChainsSearchUtil.java @@ -44,9 +44,7 @@ public final class MethodChainsSearchUtil { } } return true; - }) - .sorted(Comparator.comparing(MethodChainsSearchUtil::getNonPrimitiveParameterCount)) - .findFirst().orElse(null); + }).min(Comparator.comparing(MethodChainsSearchUtil::getNonPrimitiveParameterCount)).orElse(null); } private static int getNonPrimitiveParameterCount(PsiMethod method) { diff --git a/java/compiler/impl/src/com/intellij/compiler/chainsSearch/completion/lookup/ChainCompletionNewVariableLookupElement.java b/java/compiler/impl/src/com/intellij/compiler/chainsSearch/completion/lookup/ChainCompletionNewVariableLookupElement.java index 3fe577ca037b..004b92204b0f 100644 --- a/java/compiler/impl/src/com/intellij/compiler/chainsSearch/completion/lookup/ChainCompletionNewVariableLookupElement.java +++ b/java/compiler/impl/src/com/intellij/compiler/chainsSearch/completion/lookup/ChainCompletionNewVariableLookupElement.java @@ -48,8 +48,7 @@ public class ChainCompletionNewVariableLookupElement extends LookupElement { VariableKind variableKind = myField ? VariableKind.FIELD : VariableKind.LOCAL_VARIABLE; myNewVarName = Stream .of(codeStyleManager.suggestVariableName(variableKind, null, null, elementFactory.createType(qualifierClass)).names) - .sorted(Comparator.comparing(String::length).reversed()) - .findFirst() + .max(Comparator.comparing(String::length)) .orElseThrow(IllegalStateException::new); myQualifierClass = qualifierClass; putUserData(PreferByKindWeigher.INTRODUCED_VARIABLE, Boolean.TRUE); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/CreateModuleLibraryChooser.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/CreateModuleLibraryChooser.java index fc608589caee..f216d6d57ed7 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/CreateModuleLibraryChooser.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/CreateModuleLibraryChooser.java @@ -112,7 +112,7 @@ public class CreateModuleLibraryChooser implements ClasspathElementChooser result = new ArrayList<>(); final Library[] libraries = moduleLibrariesModel.getLibraries(); for (OrderRoot root : roots) { - if (!Arrays.stream(libraries).anyMatch(library -> contains(root.getFile(), library.getFiles(root.getType())))) { + if (Arrays.stream(libraries).noneMatch(library -> contains(root.getFile(), library.getFiles(root.getType())))) { result.add(root); } } diff --git a/java/java-impl/src/com/intellij/codeInspection/magicConstant/MagicConstantInspection.java b/java/java-impl/src/com/intellij/codeInspection/magicConstant/MagicConstantInspection.java index 6228401373f4..0d2c9fae5faf 100644 --- a/java/java-impl/src/com/intellij/codeInspection/magicConstant/MagicConstantInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/magicConstant/MagicConstantInspection.java @@ -791,7 +791,7 @@ public class MagicConstantInspection extends AbstractBaseJavaLocalInspectionTool @NotNull PsiFile file, @NotNull PsiElement startElement, @NotNull PsiElement endElement) { - boolean allValid = !myMemberValuePointers.stream().map(SmartPsiElementPointer::getElement).anyMatch(p -> p == null || !p.isValid()); + boolean allValid = myMemberValuePointers.stream().map(SmartPsiElementPointer::getElement).allMatch(p -> p != null && p.isValid()); return allValid && super.isAvailable(project, file, startElement, endElement); } } diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/ui/VcsLogAction.java b/platform/dvcs-impl/src/com/intellij/dvcs/ui/VcsLogAction.java index 2abde932f5b3..3aa7a288b364 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/ui/VcsLogAction.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/ui/VcsLogAction.java @@ -75,7 +75,7 @@ public abstract class VcsLogAction extends DumbAwareAct protected boolean isVisible(@NotNull Project project, @NotNull MultiMap grouped) { RepositoryManager manager = getRepositoryManager(project); - return grouped.keySet().stream().allMatch(repo -> !manager.isExternal(repo)); + return grouped.keySet().stream().noneMatch(manager::isExternal); } @NotNull diff --git a/platform/platform-tests/testSrc/com/intellij/util/AlarmTest.java b/platform/platform-tests/testSrc/com/intellij/util/AlarmTest.java index c026c3ef1afe..bde2e349210f 100644 --- a/platform/platform-tests/testSrc/com/intellij/util/AlarmTest.java +++ b/platform/platform-tests/testSrc/com/intellij/util/AlarmTest.java @@ -22,13 +22,17 @@ package com.intellij.util; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; - import java.util.*; + import java.util.Arrays; + import java.util.HashMap; + import java.util.List; + import java.util.Map; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; + import java.util.stream.Stream; public class AlarmTest extends PlatformTestCase { public void testTwoAddsWithZeroDelayMustExecuteSequentially() throws Exception { @@ -103,7 +107,7 @@ public class AlarmTest extends PlatformTestCase { Map before = Thread.getAllStackTraces(); AtomicInteger executed = new AtomicInteger(); int N = 100000; - List alarms = Collections.nCopies(N, "").stream().map(__ -> new Alarm(getTestRootDisposable())).collect(Collectors.toList()); + List alarms = Stream.generate(() -> new Alarm(getTestRootDisposable())).limit(N).collect(Collectors.toList()); alarms.forEach(alarm -> alarm.addRequest(executed::incrementAndGet, 10)); while (executed.get() != N) { diff --git a/python/src/com/jetbrains/python/codeInsight/completion/PyStringFormatCompletionContributor.java b/python/src/com/jetbrains/python/codeInsight/completion/PyStringFormatCompletionContributor.java index b4dfffdbeb30..44e87fdb993a 100644 --- a/python/src/com/jetbrains/python/codeInsight/completion/PyStringFormatCompletionContributor.java +++ b/python/src/com/jetbrains/python/codeInsight/completion/PyStringFormatCompletionContributor.java @@ -19,15 +19,11 @@ import com.jetbrains.python.psi.impl.PyPsiUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import static com.intellij.patterns.PlatformPatterns.psiElement; import static com.intellij.patterns.StandardPatterns.or; -import static java.util.Arrays.asList; public class PyStringFormatCompletionContributor extends CompletionContributor { private static final String DICT_NAME = "dict"; @@ -253,7 +249,7 @@ public class PyStringFormatCompletionContributor extends CompletionContributor { final PyExpression callee = callExpression.getCallee(); if (callee != null && callee.getName() != null && callee.getName().equals(DICT_NAME)) { final PyExpression[] arguments = callExpression.getArguments(); - return asList(arguments).stream() + return Arrays.stream(arguments) .filter(a -> a instanceof PyKeywordArgument) .map(a -> getKeywordArgument((PyKeywordArgument)a)) .filter(e -> e != null) @@ -306,7 +302,7 @@ public class PyStringFormatCompletionContributor extends CompletionContributor { @NotNull private static List getElementsFromDict(@NotNull final PyDictLiteralExpression dict) { - return asList(dict.getElements()).stream() + return Arrays.stream(dict.getElements()) .map(e -> PyUtil.as(e.getKey(), PyStringLiteralExpression.class)) .filter(k-> k != null) .map(k -> createLookUpElement(k.getStringValue())) diff --git a/python/src/com/jetbrains/python/inspections/PyMissingConstructorInspection.java b/python/src/com/jetbrains/python/inspections/PyMissingConstructorInspection.java index 7502481940ee..c0cc4f0ce6bf 100644 --- a/python/src/com/jetbrains/python/inspections/PyMissingConstructorInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyMissingConstructorInspection.java @@ -105,9 +105,7 @@ public class PyMissingConstructorInspection extends PyInspection { return cls.getAncestorClasses(context) .stream() - .filter(baseClass -> PyBroadExceptionInspection.equalsException(baseClass, context)) - .findAny() - .isPresent(); + .anyMatch(baseClass -> PyBroadExceptionInspection.equalsException(baseClass, context)); } private static boolean hasConstructorCall(@NotNull PyClass cls, @NotNull PyFunction initMethod, @NotNull TypeEvalContext context) { @@ -189,9 +187,7 @@ public class PyMissingConstructorInspection extends PyInspection { return cls.getAncestorClasses(context) .stream() .map(PyClass::getName) - .filter(firstArg::equals) - .findAny() - .isPresent(); + .anyMatch(firstArg::equals); } private static boolean isSuperClassCall(@NotNull PyExpression calleeQualifier, @@ -202,9 +198,7 @@ public class PyMissingConstructorInspection extends PyInspection { return callingClass != null && cls.getAncestorClasses(context) .stream() - .filter(callingClass::equals) - .findAny() - .isPresent(); + .anyMatch(callingClass::equals); } @Nullable diff --git a/python/src/com/jetbrains/python/refactoring/classes/extractSuperclass/PyExtractSuperclassHelper.java b/python/src/com/jetbrains/python/refactoring/classes/extractSuperclass/PyExtractSuperclassHelper.java index dbc75ff847fc..964c4ab7c3c4 100644 --- a/python/src/com/jetbrains/python/refactoring/classes/extractSuperclass/PyExtractSuperclassHelper.java +++ b/python/src/com/jetbrains/python/refactoring/classes/extractSuperclass/PyExtractSuperclassHelper.java @@ -117,7 +117,7 @@ public final class PyExtractSuperclassHelper { * If class explicitly extends object we shall move it even in Py3K */ private static boolean isObjectParentDeclaredExplicitly(@NotNull final PyClass clazz) { - return Arrays.stream(clazz.getSuperClassExpressions()).filter(o -> PyNames.OBJECT.equals(o.getName())).findFirst().isPresent(); + return Arrays.stream(clazz.getSuperClassExpressions()).anyMatch(o -> PyNames.OBJECT.equals(o.getName())); } private static PyClass placeNewClass(final Project project, PyClass newClass, @NotNull final PyClass clazz, final String targetFile) { @@ -161,7 +161,7 @@ public final class PyExtractSuperclassHelper { psiFile.add(PyElementGenerator.getInstance(project).createFromText(LanguageLevel.PYTHON24, PsiWhiteSpace.class, "\n\n")); } newClass = (PyClass)psiFile.add(newClass); - PyClassRefactoringUtil.insertImport(clazz, Collections.singleton((PsiNamedElement)newClass)); + PyClassRefactoringUtil.insertImport(clazz, Collections.singleton(newClass)); return newClass; } diff --git a/python/src/com/jetbrains/python/spellchecker/PythonSpellcheckerStrategy.java b/python/src/com/jetbrains/python/spellchecker/PythonSpellcheckerStrategy.java index 82b27dadbed5..dcd4c5d39e86 100644 --- a/python/src/com/jetbrains/python/spellchecker/PythonSpellcheckerStrategy.java +++ b/python/src/com/jetbrains/python/spellchecker/PythonSpellcheckerStrategy.java @@ -48,7 +48,7 @@ public class PythonSpellcheckerStrategy extends SpellcheckingStrategy { final List strNodes = element.getStringNodes(); final List prefixes = ContainerUtil.mapNotNull(strNodes, n -> StringUtil.nullize(new StringNodeInfo(n).getPrefix())); - if (element.textContains('\\') && !prefixes.stream().anyMatch(PyStringLiteralUtil::isRawPrefix)) { + if (element.textContains('\\') && prefixes.stream().noneMatch(PyStringLiteralUtil::isRawPrefix)) { for (Pair fragment : element.getDecodedFragments()) { final String value = fragment.getSecond(); final int startOffset = fragment.getFirst().getStartOffset();