mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
more streams
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
+2
-5
@@ -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) {
|
||||
|
||||
+6
-12
@@ -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;
|
||||
}
|
||||
|
||||
+2
-1
@@ -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;
|
||||
}
|
||||
|
||||
+1
@@ -293,6 +293,7 @@ public class XBreakpointBase<Self extends XBreakpoint<P>, P extends XBreakpointP
|
||||
myState.setDependencyState(state);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getGroup() {
|
||||
return myState.getGroup();
|
||||
}
|
||||
|
||||
+10
-22
@@ -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() {
|
||||
|
||||
+3
-8
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-6
@@ -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() {
|
||||
|
||||
+2
-8
@@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+1
-3
@@ -432,9 +432,7 @@ public class BreakpointsDialog extends DialogWrapper {
|
||||
}
|
||||
|
||||
private void disposeItems() {
|
||||
for (BreakpointItem item : myBreakpointItems) {
|
||||
item.dispose();
|
||||
}
|
||||
myBreakpointItems.forEach(BreakpointItem::dispose);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
+4
-17
@@ -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);
|
||||
}
|
||||
|
||||
+1
-3
@@ -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);
|
||||
}
|
||||
|
||||
+1
-3
@@ -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);
|
||||
|
||||
+2
-9
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user