more streams

This commit is contained in:
Egor.Ushakov
2016-10-19 17:56:57 +03:00
parent a4fb99cb2e
commit 0795a5fdb3
28 changed files with 99 additions and 266 deletions
@@ -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) {
@@ -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<ClassFilter> 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);
@@ -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()]);
@@ -343,9 +343,7 @@ public class JavaStackFrame extends XStackFrame {
@NotNull SourcePosition sourcePosition,
@NotNull EvaluationContextImpl evalContext) {
Set<String> alreadyCollected = new HashSet<>(usedVars.first);
for (TextWithImports text : usedVars.second) {
alreadyCollected.add(text.getText());
}
usedVars.second.stream().map(TextWithImports::getText).forEach(alreadyCollected::add);
Set<TextWithImports> extra = new HashSet<>();
for (FrameExtraVariablesProvider provider : FrameExtraVariablesProvider.EP_NAME.getExtensions()) {
if (provider.isAvailable(sourcePosition, evalContext)) {
@@ -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
@@ -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
@@ -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) {
@@ -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;
@@ -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) {
@@ -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() {
@@ -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<P extends JavaBreakpointProperties> implements FilteredRequestor, ClassPrepareRequestor {
public static final Key<Breakpoint> DATA_KEY = Key.create("JavaBreakpoint");
@@ -183,13 +183,9 @@ public abstract class Breakpoint<P extends JavaBreakpointProperties> 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<P extends JavaBreakpointProperties> 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<P extends JavaBreakpointProperties> 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) {
@@ -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<Method> 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;
}
@@ -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<T extends JavaBreakpointProperties, B ex
}
}
}
for (InstanceFilter instanceFilter : myInstanceFilters) {
if (!instanceFilter.isEnabled()) {
idxs.add(instanceFilter);
}
}
Arrays.stream(myInstanceFilters).filter(instanceFilter -> !instanceFilter.isEnabled()).forEach(idxs::add);
myInstanceFilters = idxs.toArray(new InstanceFilter[idxs.size()]);
}
@@ -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));
}
}
@@ -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<XLineBreakpointType<?>> 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) {
@@ -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;
}
@@ -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<B extends XBreakpoint<P>, P extends XBreakpointProp
myLogMessage = logMessage;
}
@Nullable
public String getGroup() {
return myGroup;
}
@@ -293,6 +293,7 @@ public class XBreakpointBase<Self extends XBreakpoint<P>, P extends XBreakpointP
myState.setDependencyState(state);
}
@Nullable
public String getGroup() {
return myState.getGroup();
}
@@ -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<String> getAllGroups() {
HashSet<String> 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() {
@@ -122,14 +122,9 @@ public class XBreakpointPanelProvider extends BreakpointPanelProvider<XBreakpoin
@Override
public void provideBreakpointItems(Project project, Collection<BreakpointItem> items) {
final XBreakpointType<?, ?>[] types = XBreakpointUtil.getBreakpointTypes();
final XBreakpointManager manager = XDebuggerManager.getInstance(project).getBreakpointManager();
for (XBreakpointType<?, ?> type : types) {
final Collection<? extends XBreakpoint<?>> 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);
}
}
@@ -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() {
@@ -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);
}
});
}
@@ -432,9 +432,7 @@ public class BreakpointsDialog extends DialogWrapper {
}
private void disposeItems() {
for (BreakpointItem item : myBreakpointItems) {
item.dispose();
}
myBreakpointItems.forEach(BreakpointItem::dispose);
}
@Nullable
@@ -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);
}
}
@@ -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);
}
@@ -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);
}
@@ -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);
@@ -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<XValueNodeImpl> 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