IDEA-104484 Console ExceptionFilters are added twice for debugging java app

This commit is contained in:
Vassiliy
2014-06-05 12:56:06 +04:00
parent e67157df41
commit c44d318f90
6 changed files with 68 additions and 36 deletions
@@ -19,10 +19,7 @@ import com.intellij.execution.ExecutionException;
import com.intellij.execution.ExecutionResult;
import com.intellij.execution.Executor;
import com.intellij.execution.configurations.*;
import com.intellij.execution.filters.ExceptionFilters;
import com.intellij.execution.filters.TextConsoleBuilder;
import com.intellij.execution.runners.ProgramRunner;
import com.intellij.execution.runners.RunContentBuilder;
import com.intellij.openapi.project.Project;
import com.intellij.psi.search.GlobalSearchScope;
@@ -54,17 +51,11 @@ public class DefaultDebugEnvironment implements DebugEnvironment {
myRemoteConnection = remoteConnection;
myPollConnection = pollConnection;
mySearchScope = RunContentBuilder.createSearchScope(project, runProfile);
mySearchScope = SearchScopeProvider.createSearchScope(project, runProfile);
}
@Override
public ExecutionResult createExecutionResult() throws ExecutionException {
if (myState instanceof CommandLineState) {
final TextConsoleBuilder consoleBuilder = ((CommandLineState)myState).getConsoleBuilder();
if (consoleBuilder != null) {
consoleBuilder.filters(ExceptionFilters.getFilters(mySearchScope));
}
}
return myState.execute(myExecutor, myRunner);
}
@@ -11,11 +11,11 @@ import com.intellij.diagnostic.logging.LogFilesManager;
import com.intellij.execution.*;
import com.intellij.execution.configurations.RemoteConnection;
import com.intellij.execution.configurations.RunProfile;
import com.intellij.execution.configurations.SearchScopeProvider;
import com.intellij.execution.executors.DefaultDebugExecutor;
import com.intellij.execution.impl.ConsoleViewImpl;
import com.intellij.execution.process.ProcessHandler;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.runners.RunContentBuilder;
import com.intellij.execution.ui.RunContentDescriptor;
import com.intellij.execution.ui.actions.CloseAction;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
@@ -121,7 +121,7 @@ public class JavaDebuggerLauncherImpl extends JavaDebuggerLauncher {
public RemoteServerDebugEnvironment(Project project, RemoteConnection remoteConnection, RunProfile runProfile) {
myProject = project;
mySearchScope = RunContentBuilder.createSearchScope(project, runProfile);
mySearchScope = SearchScopeProvider.createSearchScope(project, runProfile);
myRemoteConnection = remoteConnection;
myRunProfile = runProfile;
}
@@ -31,6 +31,8 @@ import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.actionSystem.ToggleAction;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.psi.search.GlobalSearchScope;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -48,7 +50,11 @@ public abstract class CommandLineState implements RunProfileState {
protected CommandLineState(ExecutionEnvironment environment) {
myEnvironment = environment;
myConsoleBuilder = myEnvironment != null ? TextConsoleBuilderFactory.getInstance().createBuilder(myEnvironment.getProject()) : null;
if (myEnvironment != null) {
final Project project = myEnvironment.getProject();
final GlobalSearchScope searchScope = SearchScopeProvider.createSearchScope(project, myEnvironment.getRunProfile());
myConsoleBuilder = TextConsoleBuilderFactory.getInstance().createBuilder(project, searchScope);
}
}
public ExecutionEnvironment getEnvironment() {
@@ -0,0 +1,46 @@
/*
* Copyright 2000-2014 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.execution.configurations;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.psi.search.GlobalSearchScope;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* @author Vojtech Krasa
*/
public class SearchScopeProvider {
@NotNull
public static GlobalSearchScope createSearchScope(@NotNull Project project, @Nullable RunProfile runProfile) {
Module[] modules = null;
if (runProfile instanceof ModuleRunProfile) {
modules = ((ModuleRunProfile)runProfile).getModules();
}
if (modules == null || modules.length == 0) {
return GlobalSearchScope.allScope(project);
}
else {
GlobalSearchScope scope = GlobalSearchScope.moduleRuntimeScope(modules[0], true);
for (int idx = 1; idx < modules.length; idx++) {
Module module = modules[idx];
scope = scope.uniteWith(GlobalSearchScope.moduleRuntimeScope(module, true));
}
return scope;
}
}
}
@@ -18,10 +18,13 @@ package com.intellij.execution.runners;
import com.intellij.diagnostic.logging.LogConsoleManagerBase;
import com.intellij.diagnostic.logging.LogFilesManager;
import com.intellij.diagnostic.logging.OutputFileUtil;
import com.intellij.execution.*;
import com.intellij.execution.configurations.ModuleRunProfile;
import com.intellij.execution.DefaultExecutionResult;
import com.intellij.execution.ExecutionManager;
import com.intellij.execution.ExecutionResult;
import com.intellij.execution.Executor;
import com.intellij.execution.configurations.RunConfigurationBase;
import com.intellij.execution.configurations.RunProfile;
import com.intellij.execution.configurations.SearchScopeProvider;
import com.intellij.execution.impl.ConsoleViewImpl;
import com.intellij.execution.process.ProcessHandler;
import com.intellij.execution.ui.*;
@@ -32,7 +35,6 @@ import com.intellij.ide.actions.ContextHelpAction;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.psi.search.GlobalSearchScope;
@@ -74,7 +76,7 @@ public class RunContentBuilder extends LogConsoleManagerBase {
public RunContentBuilder(ProgramRunner runner,
ExecutionResult executionResult,
@NotNull ExecutionEnvironment environment) {
super(environment.getProject(), createSearchScope(environment.getProject(), environment.getRunProfile()));
super(environment.getProject(), SearchScopeProvider.createSearchScope(environment.getProject(), environment.getRunProfile()));
myRunner = runner;
myExecutor = environment.getExecutor();
myManager = new LogFilesManager(environment.getProject(), this, this);
@@ -92,23 +94,10 @@ public class RunContentBuilder extends LogConsoleManagerBase {
myManager = new LogFilesManager(project, this, this);
}
@Deprecated
@NotNull
public static GlobalSearchScope createSearchScope(Project project, RunProfile runProfile) {
Module[] modules = null;
if (runProfile instanceof ModuleRunProfile) {
modules = ((ModuleRunProfile)runProfile).getModules();
}
if (modules == null || modules.length == 0) {
return GlobalSearchScope.allScope(project);
}
else {
GlobalSearchScope scope = GlobalSearchScope.moduleRuntimeScope(modules[0], true);
for (int idx = 1; idx < modules.length; idx++) {
Module module = modules[idx];
scope = scope.uniteWith(GlobalSearchScope.moduleRuntimeScope(module, true));
}
return scope;
}
return SearchScopeProvider.createSearchScope(project, runProfile);
}
public ExecutionResult getExecutionResult() {
@@ -15,7 +15,10 @@
*/
package org.jetbrains.idea.maven.project;
import com.intellij.execution.filters.*;
import com.intellij.execution.filters.HyperlinkInfo;
import com.intellij.execution.filters.RegexpFilter;
import com.intellij.execution.filters.TextConsoleBuilder;
import com.intellij.execution.filters.TextConsoleBuilderFactory;
import com.intellij.execution.process.ProcessAdapter;
import com.intellij.execution.process.ProcessEvent;
import com.intellij.execution.process.ProcessHandler;
@@ -30,7 +33,6 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowId;
import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.ui.content.Content;
import com.intellij.ui.content.ContentFactory;
import com.intellij.ui.content.MessageView;
@@ -77,8 +79,6 @@ public class MavenConsoleImpl extends MavenConsole {
public static TextConsoleBuilder createConsoleBuilder(final Project project) {
TextConsoleBuilder builder = TextConsoleBuilderFactory.getInstance().createBuilder(project);
builder.filters(ExceptionFilters.getFilters(GlobalSearchScope.allScope(project)));
builder.addFilter(new RegexpFilter(project, CONSOLE_FILTER_REGEXP) {
@Nullable
@Override