From 0795a5fdb3afa31bb9627e08082855248a2bebfc Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Wed, 19 Oct 2016 17:51:43 +0300 Subject: [PATCH] more streams --- .../debugger/engine/DebugProcessEvents.java | 8 +--- .../debugger/engine/DebugProcessImpl.java | 48 +++++-------------- .../debugger/engine/JavaDebugProcess.java | 7 +-- .../debugger/engine/JavaStackFrame.java | 4 +- .../engine/SourcePositionProvider.java | 14 +++--- .../debugger/engine/SuspendManagerImpl.java | 9 +--- .../debugger/engine/SuspendManagerUtil.java | 7 +-- .../debugger/impl/DebuggerManagerImpl.java | 17 +------ .../debugger/impl/DebuggerUtilsEx.java | 7 +-- .../debugger/jdi/VirtualMachineProxyImpl.java | 7 +-- .../debugger/ui/breakpoints/Breakpoint.java | 26 +++------- .../ui/tree/render/ToStringRenderer.java | 19 ++++---- .../JavaBreakpointFiltersPanel.java | 7 +-- .../debugger/engine/DebuggerUtils.java | 24 +++------- .../xdebugger/impl/XDebuggerUtilImpl.java | 26 +++------- .../impl/actions/XDebuggerActionBase.java | 18 +++---- .../impl/breakpoints/BreakpointState.java | 3 +- .../impl/breakpoints/XBreakpointBase.java | 1 + .../breakpoints/XBreakpointManagerImpl.java | 32 ++++--------- .../breakpoints/XBreakpointPanelProvider.java | 11 ++--- .../impl/breakpoints/XBreakpointUtil.java | 8 +--- .../breakpoints/XLineBreakpointManager.java | 10 +--- .../breakpoints/ui/BreakpointsDialog.java | 4 +- .../ui/XLightBreakpointPropertiesPanel.java | 21 ++------ .../xdebugger/impl/frame/XFramesView.java | 8 +--- .../impl/ui/XDebuggerExpressionComboBox.java | 4 +- .../impl/ui/tree/TreeInplaceEditor.java | 4 +- .../tree/actions/XDebuggerTreeActionBase.java | 11 +---- 28 files changed, 99 insertions(+), 266 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessEvents.java b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessEvents.java index e06eea5be478..31fb1b791cc9 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessEvents.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessEvents.java @@ -50,6 +50,7 @@ import com.sun.jdi.request.EventRequest; import com.sun.jdi.request.EventRequestManager; import com.sun.jdi.request.ThreadDeathRequest; import com.sun.jdi.request.ThreadStartRequest; +import one.util.streamex.StreamEx; import org.jetbrains.annotations.Nullable; import java.util.Objects; @@ -517,12 +518,7 @@ public class DebugProcessEvents extends DebugProcessImpl { @Nullable private static LocatableEvent getLocatableEvent(EventSet eventSet) { - for (Event event : eventSet) { - if (event instanceof LocatableEvent) { - return (LocatableEvent)event; - } - } - return null; + return StreamEx.of(eventSet).select(LocatableEvent.class).findFirst().orElse(null); } private void processDefaultEvent(SuspendContextImpl suspendContext) { diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java index 3a96312123ce..ec1af23416dc 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java @@ -86,6 +86,7 @@ import com.sun.jdi.connect.*; import com.sun.jdi.request.EventRequest; import com.sun.jdi.request.EventRequestManager; import com.sun.jdi.request.StepRequest; +import one.util.streamex.StreamEx; import org.intellij.lang.annotations.MagicConstant; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -168,12 +169,7 @@ public abstract class DebugProcessImpl extends UserDataHolderBase implements Deb myNodeRenderersMap.clear(); myRenderers.clear(); try { - final NodeRendererSettings rendererSettings = NodeRendererSettings.getInstance(); - for (final NodeRenderer renderer : rendererSettings.getAllRenderers()) { - if (renderer.isEnabled()) { - myRenderers.add(renderer); - } - } + NodeRendererSettings.getInstance().getAllRenderers().stream().filter(NodeRenderer::isEnabled).forEach(myRenderers::add); } finally { DebuggerInvocationUtil.swingInvokeLater(myProject, () -> { @@ -403,19 +399,14 @@ public abstract class DebugProcessImpl extends UserDataHolderBase implements Deb List activeFilters = new ArrayList<>(); DebuggerSettings settings = DebuggerSettings.getInstance(); if (settings.TRACING_FILTERS_ENABLED) { - for (ClassFilter filter : settings.getSteppingFilters()) { - if (filter.isEnabled()) { - activeFilters.add(filter); - } - } - } - for (DebuggerClassFilterProvider provider : Extensions.getExtensions(DebuggerClassFilterProvider.EP_NAME)) { - for (ClassFilter filter : provider.getFilters()) { - if (filter.isEnabled()) { - activeFilters.add(filter); - } - } + Arrays.stream(settings.getSteppingFilters()) + .filter(ClassFilter::isEnabled) + .forEach(activeFilters::add); } + Arrays.stream(Extensions.getExtensions(DebuggerClassFilterProvider.EP_NAME)) + .flatMap(provider -> provider.getFilters().stream()) + .filter(ClassFilter::isEnabled) + .forEach(activeFilters::add); return activeFilters; } @@ -1094,19 +1085,12 @@ public abstract class DebugProcessImpl extends UserDataHolderBase implements Deb if (!Patches.IBM_JDK_DISABLE_COLLECTION_BUG) { // ensure args are not collected - for (Object arg : myArgs) { - if (arg instanceof ObjectReference) { - DebuggerUtilsEx.disableCollection((ObjectReference)arg); - } - } + StreamEx.of(myArgs).select(ObjectReference.class).forEach(DebuggerUtilsEx::disableCollection); } // workaround for jdi hang in trace mode if (!StringUtil.isEmpty(ourTrace)) { - for (Object arg : myArgs) { - //noinspection ResultOfMethodCallIgnored - arg.toString(); - } + myArgs.forEach(Object::toString); } result[0] = invokeMethod(invokePolicy, myMethod, myArgs); @@ -1115,11 +1099,7 @@ public abstract class DebugProcessImpl extends UserDataHolderBase implements Deb // assertThreadSuspended(thread, context); if (!Patches.IBM_JDK_DISABLE_COLLECTION_BUG) { // ensure args are not collected - for (Object arg : myArgs) { - if (arg instanceof ObjectReference) { - DebuggerUtilsEx.enableCollection((ObjectReference)arg); - } - } + StreamEx.of(myArgs).select(ObjectReference.class).forEach(DebuggerUtilsEx::enableCollection); } } } @@ -1391,9 +1371,7 @@ public abstract class DebugProcessImpl extends UserDataHolderBase implements Deb StringBuilder buffer = StringBuilderSpinAllocator.alloc(); try { - for (int i = 0; i < dims; i++) { - buffer.append('['); - } + StringUtil.repeatSymbol(buffer, '[', dims); String primitiveSignature = JVMNameUtil.getPrimitiveSignature(className); if(primitiveSignature != null) { buffer.append(primitiveSignature); diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java b/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java index 5c66fd6f2e1e..1de88a180d3d 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java @@ -67,6 +67,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.java.debugger.JavaDebuggerEditorsProvider; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -97,9 +98,9 @@ public class JavaDebugProcess extends XDebugProcess { handlers.add(new JavaBreakpointHandler.JavaMethodBreakpointHandler(process)); handlers.add(new JavaBreakpointHandler.JavaWildcardBreakpointHandler(process)); - for (JavaBreakpointHandlerFactory factory : Extensions.getExtensions(JavaBreakpointHandlerFactory.EP_NAME)) { - handlers.add(factory.createHandler(process)); - } + Arrays.stream(Extensions.getExtensions(JavaBreakpointHandlerFactory.EP_NAME)) + .map(factory -> factory.createHandler(process)) + .forEach(handlers::add); myBreakpointHandlers = handlers.toArray(new XBreakpointHandler[handlers.size()]); diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java b/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java index cbc098a1c6b5..99b99b349330 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java @@ -343,9 +343,7 @@ public class JavaStackFrame extends XStackFrame { @NotNull SourcePosition sourcePosition, @NotNull EvaluationContextImpl evalContext) { Set alreadyCollected = new HashSet<>(usedVars.first); - for (TextWithImports text : usedVars.second) { - alreadyCollected.add(text.getText()); - } + usedVars.second.stream().map(TextWithImports::getText).forEach(alreadyCollected::add); Set extra = new HashSet<>(); for (FrameExtraVariablesProvider provider : FrameExtraVariablesProvider.EP_NAME.getExtensions()) { if (provider.isAvailable(sourcePosition, evalContext)) { diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/SourcePositionProvider.java b/java/debugger/impl/src/com/intellij/debugger/engine/SourcePositionProvider.java index 3c04d1066298..a23cb058b1e3 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/SourcePositionProvider.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/SourcePositionProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import com.intellij.debugger.impl.DebuggerContextImpl; import com.intellij.debugger.ui.tree.NodeDescriptor; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.project.Project; +import one.util.streamex.StreamEx; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -40,13 +41,10 @@ public abstract class SourcePositionProvider { @NotNull DebuggerContextImpl context, boolean nearest ) { - for (SourcePositionProvider provider : EP_NAME.getExtensions()) { - SourcePosition sourcePosition = provider.computeSourcePosition(descriptor, project, context, nearest); - if (sourcePosition != null) { - return sourcePosition; - } - } - return null; + return StreamEx.of(EP_NAME.getExtensions()) + .map(provider -> provider.computeSourcePosition(descriptor, project, context, nearest)) + .nonNull() + .findFirst().orElse(null); } @Nullable diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerImpl.java index 7e8a70adde1a..f50b75247ad7 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerImpl.java @@ -233,18 +233,13 @@ public class SuspendManagerImpl implements SuspendManager { public boolean isSuspended(ThreadReferenceProxyImpl thread) throws ObjectCollectedException{ DebuggerManagerThreadImpl.assertIsManagerThread(); - boolean suspended = false; + boolean suspended; if (isFrozen(thread)) { suspended = true; } else { - for (SuspendContextImpl suspendContext : myEventContexts) { - if (suspendContext.suspends(thread)) { - suspended = true; - break; - } - } + suspended = myEventContexts.stream().anyMatch(suspendContext -> suspendContext.suspends(thread)); } //bug in JDI : newly created thread may be resumed even when suspendPolicy == SUSPEND_ALL diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerUtil.java b/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerUtil.java index 3044ec47f4b9..80278edad1ff 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerUtil.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerUtil.java @@ -69,12 +69,7 @@ public class SuspendManagerUtil { @Nullable public static SuspendContextImpl getSuspendingContext(@NotNull SuspendManager suspendManager, ThreadReferenceProxyImpl thread) { DebuggerManagerThreadImpl.assertIsManagerThread(); - for (SuspendContextImpl suspendContext : suspendManager.getEventContexts()) { - if (suspendContext.suspends(thread)) { - return suspendContext; - } - } - return null; + return suspendManager.getEventContexts().stream().filter(suspendContext -> suspendContext.suspends(thread)).findFirst().orElse(null); } public static void restoreAfterResume(SuspendContextImpl context, Object resumeData) { diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerManagerImpl.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerManagerImpl.java index 80af60b9b504..ab33f12c7330 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerManagerImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerManagerImpl.java @@ -159,10 +159,7 @@ public class DebuggerManagerImpl extends DebuggerManagerEx implements Persistent @Override public DebuggerSession getSession(DebugProcess process) { ApplicationManager.getApplication().assertIsDispatchThread(); - for (final DebuggerSession debuggerSession : getSessions()) { - if (process == debuggerSession.getProcess()) return debuggerSession; - } - return null; + return getSessions().stream().filter(debuggerSession -> process == debuggerSession.getProcess()).findFirst().orElse(null); } @NotNull @@ -379,16 +376,6 @@ public class DebuggerManagerImpl extends DebuggerManagerEx implements Persistent myCustomPositionManagerFactories.remove(factory); } - private static boolean hasWhitespace(String string) { - int length = string.length(); - for (int i = 0; i < length; i++) { - if (Character.isWhitespace(string.charAt(i))) { - return true; - } - } - return false; - } - /* Remoting */ private static void checkTargetJPDAInstalled(JavaParameters parameters) throws ExecutionException { final Sdk jdk = parameters.getJdk(); @@ -481,7 +468,7 @@ public class DebuggerManagerImpl extends DebuggerManagerEx implements Persistent debuggeeRunProperties += ",suspend=n,server=y"; } - if (hasWhitespace(debuggeeRunProperties)) { + if (StringUtil.containsWhitespaces(debuggeeRunProperties)) { debuggeeRunProperties = "\"" + debuggeeRunProperties + "\""; } final String _debuggeeRunProperties = debuggeeRunProperties; diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java index ea908fe312d2..9f479a2b1cff 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java @@ -245,12 +245,7 @@ public abstract class DebuggerUtilsEx extends DebuggerUtils { return false; //is array } - for (ClassFilter filter : classFilters) { - if (isFiltered(filter, qName)) { - return true; - } - } - return false; + return classFilters.stream().anyMatch(filter -> isFiltered(filter, qName)); } public static int getEnabledNumber(ClassFilter[] classFilters) { diff --git a/java/debugger/impl/src/com/intellij/debugger/jdi/VirtualMachineProxyImpl.java b/java/debugger/impl/src/com/intellij/debugger/jdi/VirtualMachineProxyImpl.java index 91063eda95c1..2cd1f3b52b51 100644 --- a/java/debugger/impl/src/com/intellij/debugger/jdi/VirtualMachineProxyImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/jdi/VirtualMachineProxyImpl.java @@ -661,12 +661,7 @@ public class VirtualMachineProxyImpl implements JdiTimer, VirtualMachineProxy { } public boolean isSuspended() { - for (ThreadReferenceProxyImpl thread : allThreads()) { - if (thread.getSuspendCount() != 0) { - return true; - } - } - return false; + return allThreads().stream().anyMatch(thread -> thread.getSuspendCount() != 0); } public void logThreads() { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java index 9ad9c625fa37..55c7f75f17bd 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java @@ -62,7 +62,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.java.debugger.breakpoints.properties.JavaBreakpointProperties; import javax.swing.*; -import java.util.List; +import java.util.Arrays; public abstract class Breakpoint

implements FilteredRequestor, ClassPrepareRequestor { public static final Key DATA_KEY = Key.create("JavaBreakpoint"); @@ -183,13 +183,9 @@ public abstract class Breakpoint

implements protected void createOrWaitPrepare(DebugProcessImpl debugProcess, String classToBeLoaded) { debugProcess.getRequestsManager().callbackOnPrepareClasses(this, classToBeLoaded); - List list = debugProcess.getVirtualMachineProxy().classesByName(classToBeLoaded); - for (final Object aList : list) { - ReferenceType refType = (ReferenceType)aList; - if (refType.isPrepared()) { - processClassPrepare(debugProcess, refType); - } - } + debugProcess.getVirtualMachineProxy().classesByName(classToBeLoaded).stream() + .filter(ReferenceType::isPrepared) + .forEach(aList -> processClassPrepare(debugProcess, aList)); } protected void createOrWaitPrepare(final DebugProcessImpl debugProcess, @NotNull final SourcePosition classPosition) { @@ -308,12 +304,7 @@ public abstract class Breakpoint

implements * @return true if the ID was added or false otherwise */ private boolean hasObjectID(long id) { - for (InstanceFilter instanceFilter : getInstanceFilters()) { - if (instanceFilter.getId() == id) { - return true; - } - } - return false; + return Arrays.stream(getInstanceFilters()).anyMatch(instanceFilter -> instanceFilter.getId() == id); } public boolean evaluateCondition(final EvaluationContextImpl context, LocatableEvent event) throws EvaluateException { @@ -403,12 +394,7 @@ public abstract class Breakpoint

implements if (hasEnabled && !matches) { return false; } - for (ClassFilter classFilter : exludeFilters) { - if (classFilter.isEnabled() && classFilter.matches(typeName)) { - return false; - } - } - return true; + return Arrays.stream(exludeFilters).noneMatch(classFilter -> classFilter.isEnabled() && classFilter.matches(typeName)); } private void handleTemporaryBreakpointHit(final DebugProcessImpl debugProcess) { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/ToStringRenderer.java b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/ToStringRenderer.java index 9b821a91be6f..a307aba209a8 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/ToStringRenderer.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/ToStringRenderer.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,12 +33,13 @@ import com.intellij.psi.CommonClassNames; import com.intellij.psi.PsiElement; import com.intellij.ui.classFilter.ClassFilter; import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants; -import com.sun.jdi.*; +import com.sun.jdi.ClassType; +import com.sun.jdi.ReferenceType; +import com.sun.jdi.Type; +import com.sun.jdi.Value; import org.jdom.Element; import org.jetbrains.annotations.NonNls; -import java.util.List; - import static com.intellij.psi.CommonClassNames.JAVA_LANG_STRING; public class ToStringRenderer extends NodeRendererImpl { @@ -125,13 +126,9 @@ public class ToStringRenderer extends NodeRendererImpl { @SuppressWarnings({"HardCodedStringLiteral"}) private static boolean overridesToString(Type type) { - if(type instanceof ClassType) { - final List methods = ((ClassType)type).methodsByName("toString", "()Ljava/lang/String;"); - for (Method method : methods) { - if (!(method.declaringType().name()).equals(CommonClassNames.JAVA_LANG_OBJECT)) { - return true; - } - } + if (type instanceof ClassType) { + return ((ClassType)type).methodsByName("toString", "()Ljava/lang/String;").stream() + .anyMatch(method -> !CommonClassNames.JAVA_LANG_OBJECT.equals(method.declaringType().name())); } return false; } diff --git a/java/debugger/impl/src/org/jetbrains/java/debugger/breakpoints/JavaBreakpointFiltersPanel.java b/java/debugger/impl/src/org/jetbrains/java/debugger/breakpoints/JavaBreakpointFiltersPanel.java index d8a568a58df6..92a2f787f553 100644 --- a/java/debugger/impl/src/org/jetbrains/java/debugger/breakpoints/JavaBreakpointFiltersPanel.java +++ b/java/debugger/impl/src/org/jetbrains/java/debugger/breakpoints/JavaBreakpointFiltersPanel.java @@ -40,6 +40,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -266,11 +267,7 @@ public class JavaBreakpointFiltersPanel !instanceFilter.isEnabled()).forEach(idxs::add); myInstanceFilters = idxs.toArray(new InstanceFilter[idxs.size()]); } diff --git a/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java b/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java index f81fee187349..3605f6016c6d 100644 --- a/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java +++ b/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java @@ -497,10 +497,7 @@ public abstract class DebuggerUtils { if (typeComponent == null) { return false; } - for (SyntheticTypeComponentProvider provider : SyntheticTypeComponentProvider.EP_NAME.getExtensions()) { - if (provider.isSynthetic(typeComponent)) return true; - } - return false; + return Arrays.stream(SyntheticTypeComponentProvider.EP_NAME.getExtensions()).anyMatch(provider -> provider.isSynthetic(typeComponent)); } /** @@ -508,10 +505,7 @@ public abstract class DebuggerUtils { */ @Deprecated public static boolean isSimpleGetter(PsiMethod method) { - for (SimpleGetterProvider provider : SimpleGetterProvider.EP_NAME.getExtensions()) { - if (provider.isSimpleGetter(method)) return true; - } - return false; + return Arrays.stream(SimpleGetterProvider.EP_NAME.getExtensions()).anyMatch(provider -> provider.isSimpleGetter(method)); } public static boolean isInsideSimpleGetter(@NotNull PsiElement contextElement) { @@ -519,10 +513,8 @@ public abstract class DebuggerUtils { PsiMethod psiMethod = PsiTreeUtil.getParentOfType(contextElement, PsiMethod.class); if (psiMethod != null && provider.isSimpleGetter(psiMethod)) return true; } - for (SimplePropertyGetterProvider provider : SimplePropertyGetterProvider.EP_NAME.getExtensions()) { - if (provider.isInsideSimpleGetter(contextElement)) return true; - } - return false; + return Arrays.stream(SimplePropertyGetterProvider.EP_NAME.getExtensions()) + .anyMatch(provider -> provider.isInsideSimpleGetter(contextElement)); } public static boolean isPrimitiveType(final String typeName) { @@ -578,11 +570,7 @@ public abstract class DebuggerUtils { return true; } - for (JavaDebugAware provider : JavaDebugAware.EP_NAME.getExtensions()) { - if (breakpointAware ? provider.isBreakpointAware(file) : provider.isActionAware(file)) { - return true; - } - } - return false; + return Arrays.stream(JavaDebugAware.EP_NAME.getExtensions()) + .anyMatch(provider -> breakpointAware ? provider.isBreakpointAware(file) : provider.isActionAware(file)); } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java index 280d8b5b5b0e..3c97a1ee9084 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java @@ -72,6 +72,7 @@ import com.intellij.xdebugger.impl.ui.tree.actions.XDebuggerTreeActionBase; import com.intellij.xdebugger.settings.XDebuggerSettings; import com.intellij.xdebugger.ui.DebuggerColors; import gnu.trove.THashMap; +import one.util.streamex.StreamEx; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.concurrency.AsyncPromise; @@ -94,14 +95,8 @@ public class XDebuggerUtilImpl extends XDebuggerUtil { @Override public XLineBreakpointType[] getLineBreakpointTypes() { if (myLineBreakpointTypes == null) { - XBreakpointType[] types = XBreakpointUtil.getBreakpointTypes(); - List> lineBreakpointTypes = new ArrayList<>(); - for (XBreakpointType type : types) { - if (type instanceof XLineBreakpointType) { - lineBreakpointTypes.add((XLineBreakpointType)type); - } - } - myLineBreakpointTypes = lineBreakpointTypes.toArray(new XLineBreakpointType[lineBreakpointTypes.size()]); + myLineBreakpointTypes = + StreamEx.of(XBreakpointUtil.getBreakpointTypes()).select(XLineBreakpointType.class).toArray(XLineBreakpointType[]::new); } return myLineBreakpointTypes; } @@ -121,12 +116,7 @@ public class XDebuggerUtilImpl extends XDebuggerUtil { @Override public boolean canPutBreakpointAt(@NotNull Project project, @NotNull VirtualFile file, int line) { - for (XLineBreakpointType type : getLineBreakpointTypes()) { - if (type.canPutAt(file, line, project)) { - return true; - } - } - return false; + return Arrays.stream(getLineBreakpointTypes()).anyMatch(type -> type.canPutAt(file, line, project)); } @Override @@ -568,11 +558,9 @@ public class XDebuggerUtilImpl extends XDebuggerUtil { public static void rebuildAllSessionsViews(@Nullable Project project) { if (project == null) return; - for (XDebugSession session : XDebuggerManager.getInstance(project).getDebugSessions()) { - if (session.isSuspended()) { - session.rebuildViews(); - } - } + Arrays.stream(XDebuggerManager.getInstance(project).getDebugSessions()) + .filter(XDebugSession::isSuspended) + .forEach(XDebugSession::rebuildViews); } public static void rebuildTreeAndViews(XDebuggerTree tree) { diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/XDebuggerActionBase.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/XDebuggerActionBase.java index 48b58386db12..2f40a17a05c4 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/XDebuggerActionBase.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/XDebuggerActionBase.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,8 @@ import com.intellij.openapi.util.registry.Registry; import com.intellij.xdebugger.impl.DebuggerSupport; import org.jetbrains.annotations.NotNull; +import java.util.Arrays; + /** * @author nik */ @@ -60,11 +62,7 @@ public abstract class XDebuggerActionBase extends AnAction implements AnAction.T protected boolean isEnabled(final AnActionEvent e) { Project project = e.getProject(); if (project != null && !project.isDisposed()) { - for (DebuggerSupport support : DebuggerSupport.getDebuggerSupports()) { - if (isEnabled(project, e, support)) { - return true; - } - } + return Arrays.stream(DebuggerSupport.getDebuggerSupports()).anyMatch(support -> isEnabled(project, e, support)); } return false; } @@ -101,13 +99,9 @@ public abstract class XDebuggerActionBase extends AnAction implements AnAction.T } protected boolean isHidden(AnActionEvent event) { - final Project project = event.getProject(); + Project project = event.getProject(); if (project != null && !project.isDisposed()) { - for (DebuggerSupport support : DebuggerSupport.getDebuggerSupports()) { - if (!getHandler(support).isHidden(project, event)) { - return false; - } - } + return Arrays.stream(DebuggerSupport.getDebuggerSupports()).allMatch(support -> getHandler(support).isHidden(project, event)); } return true; } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/BreakpointState.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/BreakpointState.java index 8dd934a48c94..44dc778399a6 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/BreakpointState.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/BreakpointState.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -114,6 +114,7 @@ public class BreakpointState, P extends XBreakpointProp myLogMessage = logMessage; } + @Nullable public String getGroup() { return myGroup; } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointBase.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointBase.java index 32293e336bd0..5e04b64632a7 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointBase.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointBase.java @@ -293,6 +293,7 @@ public class XBreakpointBase, P extends XBreakpointP myState.setDependencyState(state); } + @Nullable public String getGroup() { return myState.getGroup(); } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointManagerImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointManagerImpl.java index 68019355cce5..db8b7f94cc21 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointManagerImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointManagerImpl.java @@ -36,6 +36,7 @@ import com.intellij.xdebugger.XDebuggerUtil; import com.intellij.xdebugger.XSourcePosition; import com.intellij.xdebugger.breakpoints.*; import com.intellij.xdebugger.impl.XDebuggerManagerImpl; +import one.util.streamex.StreamEx; import org.jdom.Element; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -396,21 +397,15 @@ public class XBreakpointManagerImpl implements XBreakpointManager, PersistentSta myBreakpointsDefaults.clear(); ApplicationManager.getApplication().runReadAction(() -> { - for (BreakpointState breakpointState : state.getDefaultBreakpoints()) { - loadBreakpoint(breakpointState, true); - } - for (XBreakpointType type : XBreakpointUtil.getBreakpointTypes()) { - if (!myDefaultBreakpoints.containsKey(type)) { - addDefaultBreakpoint(type); - } - } + state.getDefaultBreakpoints().forEach(breakpointState -> loadBreakpoint(breakpointState, true)); - for (XBreakpointBase breakpoint : myBreakpoints.values()) { - doRemoveBreakpoint(breakpoint); - } - for (BreakpointState breakpointState : state.getBreakpoints()) { - loadBreakpoint(breakpointState, false); - } + Arrays.stream(XBreakpointUtil.getBreakpointTypes()) + .filter(type -> !myDefaultBreakpoints.containsKey(type)) + .forEach(this::addDefaultBreakpoint); + + myBreakpoints.values().forEach(this::doRemoveBreakpoint); + + state.getBreakpoints().forEach(breakpointState -> loadBreakpoint(breakpointState, false)); for (BreakpointState defaults : state.getBreakpointsDefaults()) { XBreakpointType type = XBreakpointUtil.findType(defaults.getTypeId()); @@ -460,14 +455,7 @@ public class XBreakpointManagerImpl implements XBreakpointManager, PersistentSta } public Set getAllGroups() { - HashSet res = new HashSet<>(); - for (XBreakpointBase breakpoint : myAllBreakpoints) { - String group = breakpoint.getGroup(); - if (group != null) { - res.add(group); - } - } - return res; + return StreamEx.of(myAllBreakpoints).map(XBreakpointBase::getGroup).nonNull().toSet(); } public String getDefaultGroup() { diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointPanelProvider.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointPanelProvider.java index 2624099b144e..bda523f175ba 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointPanelProvider.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointPanelProvider.java @@ -122,14 +122,9 @@ public class XBreakpointPanelProvider extends BreakpointPanelProvider items) { - final XBreakpointType[] types = XBreakpointUtil.getBreakpointTypes(); - final XBreakpointManager manager = XDebuggerManager.getInstance(project).getBreakpointManager(); - for (XBreakpointType type : types) { - final Collection> breakpoints = manager.getBreakpoints(type); - if (breakpoints.isEmpty()) continue; - for (XBreakpoint breakpoint : breakpoints) { - items.add(new XBreakpointItem(breakpoint)); - } + XBreakpointManager manager = XDebuggerManager.getInstance(project).getBreakpointManager(); + for (XBreakpointType type : XBreakpointUtil.getBreakpointTypes()) { + manager.getBreakpoints(type).stream().map(XBreakpointItem::new).forEach(items::add); } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointUtil.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointUtil.java index 5c21e1cc792f..d38c85f635c3 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointUtil.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointUtil.java @@ -40,6 +40,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.concurrency.Promise; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import static org.jetbrains.concurrency.Promises.rejectedPromise; @@ -63,12 +64,7 @@ public class XBreakpointUtil { @Nullable public static XBreakpointType findType(@NotNull @NonNls String id) { - for (XBreakpointType breakpointType : getBreakpointTypes()) { - if (id.equals(breakpointType.getId())) { - return breakpointType; - } - } - return null; + return Arrays.stream(getBreakpointTypes()).filter(breakpointType -> id.equals(breakpointType.getId())).findFirst().orElse(null); } public static XBreakpointType[] getBreakpointTypes() { diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.java index f91b41ccdd87..9a7efcaef66f 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.java @@ -119,11 +119,7 @@ public class XLineBreakpointManager { public void updateBreakpointsUI() { if (myProject.isDefault()) return; - DumbAwareRunnable runnable = () -> { - for (XLineBreakpointImpl breakpoint : myBreakpoints.keySet()) { - breakpoint.updateUI(); - } - }; + DumbAwareRunnable runnable = () -> myBreakpoints.keySet().forEach(XLineBreakpointImpl::updateUI); if (ApplicationManager.getApplication().isUnitTestMode() || myStartupManager.startupActivityPassed()) { runnable.run(); @@ -217,9 +213,7 @@ public class XLineBreakpointManager { myBreakpointsUpdateQueue.queue(new Update("all breakpoints") { @Override public void run() { - for (XLineBreakpointImpl breakpoint : myBreakpoints.keySet()) { - breakpoint.updateUI(); - } + myBreakpoints.keySet().forEach(XLineBreakpointImpl::updateUI); } }); } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/BreakpointsDialog.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/BreakpointsDialog.java index 1f9b85359104..c148bd5c0820 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/BreakpointsDialog.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/BreakpointsDialog.java @@ -432,9 +432,7 @@ public class BreakpointsDialog extends DialogWrapper { } private void disposeItems() { - for (BreakpointItem item : myBreakpointItems) { - item.dispose(); - } + myBreakpointItems.forEach(BreakpointItem::dispose); } @Nullable diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java index a5df84489251..b8347b8c8e6a 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java @@ -35,8 +35,6 @@ import com.intellij.xdebugger.impl.ui.XDebuggerExpressionComboBox; import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.util.ArrayList; @@ -149,12 +147,7 @@ public class XLightBreakpointPropertiesPanel implements XSuspendPolicyPanel.Dele myConditionPanel.setVisible(false); } - myShowMoreOptions = false; - for (XBreakpointPropertiesSubPanel panel : mySubPanels) { - if (panel.lightVariant(showAllOptions)) { - myShowMoreOptions = true; - } - } + myShowMoreOptions = mySubPanels.stream().anyMatch(panel -> panel.lightVariant(showAllOptions)); XBreakpointCustomPropertiesPanel customPropertiesPanel = breakpointType.createCustomPropertiesPanel(project); if (customPropertiesPanel != null) { @@ -219,9 +212,7 @@ public class XLightBreakpointPropertiesPanel implements XSuspendPolicyPanel.Dele } public void saveProperties() { - for (XBreakpointPropertiesSubPanel panel : mySubPanels) { - panel.saveProperties(); - } + mySubPanels.forEach(XBreakpointPropertiesSubPanel::saveProperties); if (myConditionComboBox != null) { XExpression expression = myConditionComboBox.getExpression(); @@ -238,9 +229,7 @@ public class XLightBreakpointPropertiesPanel implements XSuspendPolicyPanel.Dele } public void loadProperties() { - for (XBreakpointPropertiesSubPanel panel : mySubPanels) { - panel.loadProperties(); - } + mySubPanels.forEach(XBreakpointPropertiesSubPanel::loadProperties); if (myConditionComboBox != null) { XExpression condition = myBreakpoint.getConditionExpressionInt(); @@ -274,8 +263,6 @@ public class XLightBreakpointPropertiesPanel implements XSuspendPolicyPanel.Dele public void dispose() { myActionsPanel.dispose(); - for (XBreakpointCustomPropertiesPanel panel : myCustomPanels) { - panel.dispose(); - } + myCustomPanels.forEach(XBreakpointCustomPropertiesPanel::dispose); } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XFramesView.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XFramesView.java index b3115674f58f..060da221eea8 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XFramesView.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XFramesView.java @@ -226,9 +226,7 @@ public class XFramesView extends XDebugView { } myListenersEnabled = false; - for (StackFramesListBuilder builder : myBuilders.values()) { - builder.dispose(); - } + myBuilders.values().forEach(StackFramesListBuilder::dispose); myBuilders.clear(); if (suspendContext == null) { @@ -435,9 +433,7 @@ public class XFramesView extends XDebugView { @SuppressWarnings("unchecked") public void initModel(final DefaultListModel model) { model.removeAllElements(); - for (XStackFrame stackFrame : myStackFrames) { - model.addElement(stackFrame); - } + myStackFrames.forEach(model::addElement); if (myErrorMessage != null) { model.addElement(myErrorMessage); } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerExpressionComboBox.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerExpressionComboBox.java index d5069dbf36fb..621c3b0cbe5e 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerExpressionComboBox.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerExpressionComboBox.java @@ -108,9 +108,7 @@ public class XDebuggerExpressionComboBox extends XDebuggerEditorBase { private void fillComboBox() { myComboBox.removeAllItems(); - for (XExpression expression : getRecentExpressions()) { - myComboBox.addItem(expression); - } + getRecentExpressions().forEach(myComboBox::addItem); if (myComboBox.getItemCount() > 0) { myComboBox.setSelectedIndex(0); } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/TreeInplaceEditor.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/TreeInplaceEditor.java index a1c0a881de41..2822bc259d47 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/TreeInplaceEditor.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/TreeInplaceEditor.java @@ -79,9 +79,7 @@ public abstract class TreeInplaceEditor implements AWTEventListener { } myInplaceEditorComponent = null; onHidden(); - for (Runnable action : myRemoveActions) { - action.run(); - } + myRemoveActions.forEach(Runnable::run); myRemoveActions.clear(); Disposer.dispose(myDisposable); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XDebuggerTreeActionBase.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XDebuggerTreeActionBase.java index 9765c69ba150..3cde83610b21 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XDebuggerTreeActionBase.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XDebuggerTreeActionBase.java @@ -21,11 +21,11 @@ import com.intellij.openapi.actionSystem.DataContext; import com.intellij.xdebugger.frame.XValue; import com.intellij.xdebugger.impl.ui.tree.XDebuggerTree; import com.intellij.xdebugger.impl.ui.tree.nodes.XValueNodeImpl; +import one.util.streamex.StreamEx; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.tree.TreePath; -import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -65,14 +65,7 @@ public abstract class XDebuggerTreeActionBase extends AnAction { if (paths == null || paths.length == 0) { return Collections.emptyList(); } - List nodes = new ArrayList<>(paths.length); - for (TreePath path : paths) { - Object component = path.getLastPathComponent(); - if (component instanceof XValueNodeImpl) { - nodes.add((XValueNodeImpl) component); - } - } - return nodes; + return StreamEx.of(paths).map(TreePath::getLastPathComponent).select(XValueNodeImpl.class).toList(); } @Nullable