summaryrefslogtreecommitdiff
path: root/platform/lang-api/src/com/intellij/execution
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-api/src/com/intellij/execution')
-rw-r--r--platform/lang-api/src/com/intellij/execution/DefaultExecutionResult.java11
-rw-r--r--platform/lang-api/src/com/intellij/execution/ExecutionResult.java1
-rw-r--r--platform/lang-api/src/com/intellij/execution/configurations/AdditionalTabComponentManager.java9
-rw-r--r--platform/lang-api/src/com/intellij/execution/configurations/LogFileOptions.java65
-rw-r--r--platform/lang-api/src/com/intellij/execution/configurations/ModuleRunProfile.java2
-rw-r--r--platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationBase.java3
-rw-r--r--platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationsSettings.java3
-rw-r--r--platform/lang-api/src/com/intellij/execution/configurations/SearchScopeProvider.java4
-rw-r--r--platform/lang-api/src/com/intellij/execution/configurations/SearchScopeProvidingRunProfile.java34
-rw-r--r--platform/lang-api/src/com/intellij/execution/configurations/SimpleJavaParameters.java10
-rw-r--r--platform/lang-api/src/com/intellij/execution/filters/ConsoleDependentFilterProvider.java32
-rw-r--r--platform/lang-api/src/com/intellij/execution/runners/AsyncGenericProgramRunner.java13
-rw-r--r--platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java4
-rw-r--r--platform/lang-api/src/com/intellij/execution/ui/RunContentDescriptor.java21
14 files changed, 165 insertions, 47 deletions
diff --git a/platform/lang-api/src/com/intellij/execution/DefaultExecutionResult.java b/platform/lang-api/src/com/intellij/execution/DefaultExecutionResult.java
index 8a951da7d74f..75f117122e96 100644
--- a/platform/lang-api/src/com/intellij/execution/DefaultExecutionResult.java
+++ b/platform/lang-api/src/com/intellij/execution/DefaultExecutionResult.java
@@ -34,7 +34,8 @@ public class DefaultExecutionResult implements ExecutionResult {
private final ExecutionConsole myConsole;
private final ProcessHandler myProcessHandler;
private AnAction[] myActions;
- private AnAction[] myRestartActions;
+ @NotNull
+ private AnAction[] myRestartActions = AnAction.EMPTY_ARRAY;
private final List<AnAction> myStopActions = new ArrayList<AnAction>();
public DefaultExecutionResult() {
@@ -67,12 +68,14 @@ public class DefaultExecutionResult implements ExecutionResult {
myActions = actions;
}
+ @NotNull
public AnAction[] getRestartActions() {
return myRestartActions;
}
- public void setRestartActions(AnAction... restartActions) {
- myRestartActions = restartActions;
+ // TODO: Find all usages, make sure there is no null and make this method NotNull
+ public void setRestartActions(@Nullable AnAction... restartActions) {
+ myRestartActions = (restartActions != null ? restartActions : AnAction.EMPTY_ARRAY);
}
public void addStopAction(AnAction action) {
@@ -104,7 +107,7 @@ public class DefaultExecutionResult implements ExecutionResult {
@Override
public void actionPerformed(final AnActionEvent e) {
- if(myProcessHandler.detachIsDefault()) {
+ if (myProcessHandler.detachIsDefault()) {
myProcessHandler.detachProcess();
}
else {
diff --git a/platform/lang-api/src/com/intellij/execution/ExecutionResult.java b/platform/lang-api/src/com/intellij/execution/ExecutionResult.java
index 116ce555e94d..91f888aa8dc6 100644
--- a/platform/lang-api/src/com/intellij/execution/ExecutionResult.java
+++ b/platform/lang-api/src/com/intellij/execution/ExecutionResult.java
@@ -40,6 +40,7 @@ public interface ExecutionResult {
*/
AnAction[] getActions();
+
/**
* Returns the ProcessHandler attached to the running process.
*
diff --git a/platform/lang-api/src/com/intellij/execution/configurations/AdditionalTabComponentManager.java b/platform/lang-api/src/com/intellij/execution/configurations/AdditionalTabComponentManager.java
index 26f1273b2698..701f1b294003 100644
--- a/platform/lang-api/src/com/intellij/execution/configurations/AdditionalTabComponentManager.java
+++ b/platform/lang-api/src/com/intellij/execution/configurations/AdditionalTabComponentManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * 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.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
/*
* Created by IntelliJ IDEA.
* User: Anna.Kozlova
@@ -23,8 +22,10 @@
package com.intellij.execution.configurations;
import com.intellij.diagnostic.logging.AdditionalTabComponent;
+import org.jetbrains.annotations.NotNull;
public interface AdditionalTabComponentManager {
- void addAdditionalTabComponent(AdditionalTabComponent component, final String id);
- void removeAdditionalTabComponent(AdditionalTabComponent component);
+ void addAdditionalTabComponent(@NotNull AdditionalTabComponent component, @NotNull String id);
+
+ void removeAdditionalTabComponent(@NotNull AdditionalTabComponent component);
} \ No newline at end of file
diff --git a/platform/lang-api/src/com/intellij/execution/configurations/LogFileOptions.java b/platform/lang-api/src/com/intellij/execution/configurations/LogFileOptions.java
index 6f23831c9e3a..0a4132d83a52 100644
--- a/platform/lang-api/src/com/intellij/execution/configurations/LogFileOptions.java
+++ b/platform/lang-api/src/com/intellij/execution/configurations/LogFileOptions.java
@@ -20,6 +20,8 @@ import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.JDOMExternalizable;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.openapi.util.io.FileUtil;
+import com.intellij.util.SmartList;
+import com.intellij.util.containers.SmartHashSet;
import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -27,8 +29,7 @@ import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.HashSet;
+import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;
@@ -80,46 +81,50 @@ public class LogFileOptions implements JDOMExternalizable {
return myPathPattern;
}
+ @NotNull
public Set<String> getPaths(){
- Set<String> result = new HashSet<String>();
- final File logFile = new File(myPathPattern);
+ File logFile = new File(myPathPattern);
if (logFile.exists()){
- result.add(myPathPattern);
+ return Collections.singleton(myPathPattern);
+ }
+
+ int dirIndex = myPathPattern.lastIndexOf(File.separator);
+ if (dirIndex == -1) {
+ return Collections.emptySet();
+ }
+
+ List<File> files = new SmartList<File>();
+ collectMatchedFiles(new File(myPathPattern.substring(0, dirIndex)), Pattern.compile(FileUtil.convertAntToRegexp(myPathPattern.substring(dirIndex + File.separator.length()))), files);
+ if (files.isEmpty()) {
+ return Collections.emptySet();
+ }
+
+ if (myShowAll) {
+ SmartHashSet<String> result = new SmartHashSet<String>();
+ result.ensureCapacity(files.size());
+ for (File file : files) {
+ result.add(file.getPath());
+ }
return result;
}
- final int dirIndex = myPathPattern.lastIndexOf(File.separator);
- if (dirIndex != -1) {
- final ArrayList<File> files = new ArrayList<File>();
- final String basePath = myPathPattern.substring(0, dirIndex);
- final String pattern = myPathPattern.substring(dirIndex + File.separator.length());
- collectMatchedFiles(new File(basePath), Pattern.compile(FileUtil.convertAntToRegexp(pattern)), files);
- if (!files.isEmpty()) {
- if (myShowAll) {
- for (File file : files) {
- result.add(file.getPath());
+ else {
+ File lastFile = null;
+ for (File file : files) {
+ if (lastFile != null) {
+ if (file.lastModified() > lastFile.lastModified()) {
+ lastFile = file;
}
}
else {
- File lastFile = null;
- for (File file : files) {
- if (lastFile != null) {
- if (file.lastModified() > lastFile.lastModified()) {
- lastFile = file;
- }
- }
- else {
- lastFile = file;
- }
- }
- assert lastFile != null;
- result.add(lastFile.getPath());
+ lastFile = file;
}
}
+ assert lastFile != null;
+ return Collections.singleton(lastFile.getPath());
}
- return result;
}
- public static void collectMatchedFiles(final File root, final Pattern pattern, final List<File> files) {
+ public static void collectMatchedFiles(@NotNull File root, @NotNull Pattern pattern, @NotNull List<File> files) {
final File[] dirs = root.listFiles();
if (dirs == null) return;
for (File dir : dirs) {
diff --git a/platform/lang-api/src/com/intellij/execution/configurations/ModuleRunProfile.java b/platform/lang-api/src/com/intellij/execution/configurations/ModuleRunProfile.java
index 9a1dfad2955a..45519c91baeb 100644
--- a/platform/lang-api/src/com/intellij/execution/configurations/ModuleRunProfile.java
+++ b/platform/lang-api/src/com/intellij/execution/configurations/ModuleRunProfile.java
@@ -19,5 +19,5 @@ package com.intellij.execution.configurations;
/**
* @author spleaner
*/
-public interface ModuleRunProfile extends RunProfileWithCompileBeforeLaunchOption {
+public interface ModuleRunProfile extends RunProfileWithCompileBeforeLaunchOption, SearchScopeProvidingRunProfile {
}
diff --git a/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationBase.java b/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationBase.java
index 0e852c6c577a..d0a180114587 100644
--- a/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationBase.java
+++ b/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationBase.java
@@ -154,8 +154,9 @@ public abstract class RunConfigurationBase extends UserDataHolderBase
return myPredefinedLogFiles;
}
+ @NotNull
public ArrayList<LogFileOptions> getAllLogFiles() {
- final ArrayList<LogFileOptions> list = new ArrayList<LogFileOptions>(myLogFiles);
+ ArrayList<LogFileOptions> list = new ArrayList<LogFileOptions>(myLogFiles);
for (PredefinedLogFile predefinedLogFile : myPredefinedLogFiles) {
final LogFileOptions options = getOptionsForPredefinedLogFile(predefinedLogFile);
if (options != null) {
diff --git a/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationsSettings.java b/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationsSettings.java
index 259fd4e7484c..732976cf73a7 100644
--- a/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationsSettings.java
+++ b/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationsSettings.java
@@ -17,12 +17,11 @@ package com.intellij.execution.configurations;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.options.UnnamedConfigurable;
-import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
public interface RunConfigurationsSettings {
ExtensionPointName<RunConfigurationsSettings> EXTENSION_POINT = ExtensionPointName.create("com.intellij.runConfigurationsSettings");
@NotNull
- UnnamedConfigurable createConfigurable(@NotNull Project project);
+ UnnamedConfigurable createConfigurable();
} \ No newline at end of file
diff --git a/platform/lang-api/src/com/intellij/execution/configurations/SearchScopeProvider.java b/platform/lang-api/src/com/intellij/execution/configurations/SearchScopeProvider.java
index ea6b158e0bc2..e3f0c22a2132 100644
--- a/platform/lang-api/src/com/intellij/execution/configurations/SearchScopeProvider.java
+++ b/platform/lang-api/src/com/intellij/execution/configurations/SearchScopeProvider.java
@@ -28,8 +28,8 @@ 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 (runProfile instanceof SearchScopeProvidingRunProfile) {
+ modules = ((SearchScopeProvidingRunProfile)runProfile).getModules();
}
if (modules == null || modules.length == 0) {
return GlobalSearchScope.allScope(project);
diff --git a/platform/lang-api/src/com/intellij/execution/configurations/SearchScopeProvidingRunProfile.java b/platform/lang-api/src/com/intellij/execution/configurations/SearchScopeProvidingRunProfile.java
new file mode 100644
index 000000000000..afdd273384e8
--- /dev/null
+++ b/platform/lang-api/src/com/intellij/execution/configurations/SearchScopeProvidingRunProfile.java
@@ -0,0 +1,34 @@
+/*
+ * 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 org.jetbrains.annotations.NotNull;
+
+/**
+ * Base interface for run configurations that can specify which part of the project should be used to search sources. This information
+ * will be used to provide more accurate navigation to sources from stack traces, debugger, etc
+ *
+ * @author nik
+ */
+public interface SearchScopeProvidingRunProfile extends RunProfile {
+ /**
+ * @return modules where to search sources for this configuration
+ */
+ @NotNull
+ Module[] getModules();
+} \ No newline at end of file
diff --git a/platform/lang-api/src/com/intellij/execution/configurations/SimpleJavaParameters.java b/platform/lang-api/src/com/intellij/execution/configurations/SimpleJavaParameters.java
index 7b3c45d5c7de..59fe6c2f1be2 100644
--- a/platform/lang-api/src/com/intellij/execution/configurations/SimpleJavaParameters.java
+++ b/platform/lang-api/src/com/intellij/execution/configurations/SimpleJavaParameters.java
@@ -40,11 +40,16 @@ public class SimpleJavaParameters extends SimpleProgramParameters {
private Charset myCharset = CharsetToolkit.getDefaultSystemCharset();
private boolean myUseDynamicClasspath;
private boolean myUseDynamicVMOptions;
-
+ private String myJarPath;
+
public String getMainClass() {
return myMainClass;
}
+ public String getJarPath() {
+ return myJarPath;
+ }
+
/**
* @return jdk used to launch the application.
* If the instance of the JavaParameters is used to configure app server startup script,
@@ -62,6 +67,9 @@ public class SimpleJavaParameters extends SimpleProgramParameters {
public void setMainClass(@NonNls final String mainClass) {
myMainClass = mainClass;
}
+ public void setJarPath(@NonNls final String jarPath) {
+ myJarPath = jarPath;
+ }
public PathsList getClassPath() {
return myClassPath;
diff --git a/platform/lang-api/src/com/intellij/execution/filters/ConsoleDependentFilterProvider.java b/platform/lang-api/src/com/intellij/execution/filters/ConsoleDependentFilterProvider.java
new file mode 100644
index 000000000000..1b5f625b9b0e
--- /dev/null
+++ b/platform/lang-api/src/com/intellij/execution/filters/ConsoleDependentFilterProvider.java
@@ -0,0 +1,32 @@
+/*
+ * 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.filters;
+
+import com.intellij.execution.ui.ConsoleView;
+import com.intellij.openapi.project.Project;
+import com.intellij.psi.search.GlobalSearchScope;
+import org.jetbrains.annotations.NotNull;
+
+public abstract class ConsoleDependentFilterProvider implements ConsoleFilterProvider {
+ @NotNull
+ public abstract Filter[] getDefaultFilters(@NotNull ConsoleView consoleView, @NotNull Project project, @NotNull GlobalSearchScope scope);
+
+ @NotNull
+ @Override
+ public Filter[] getDefaultFilters(@NotNull Project project) {
+ return Filter.EMPTY_ARRAY;
+ }
+} \ No newline at end of file
diff --git a/platform/lang-api/src/com/intellij/execution/runners/AsyncGenericProgramRunner.java b/platform/lang-api/src/com/intellij/execution/runners/AsyncGenericProgramRunner.java
index ce7145adeaf9..6b63ec402320 100644
--- a/platform/lang-api/src/com/intellij/execution/runners/AsyncGenericProgramRunner.java
+++ b/platform/lang-api/src/com/intellij/execution/runners/AsyncGenericProgramRunner.java
@@ -21,6 +21,7 @@ import com.intellij.execution.RunProfileStarter;
import com.intellij.execution.configurations.RunProfileState;
import com.intellij.execution.configurations.RunnerSettings;
import com.intellij.execution.ui.RunContentDescriptor;
+import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.AsyncResult;
import com.intellij.util.Consumer;
import com.intellij.util.ui.UIUtil;
@@ -61,7 +62,17 @@ public abstract class AsyncGenericProgramRunner<Settings extends RunnerSettings>
* @return RunProfileStarter async result
*/
@NotNull
- protected abstract AsyncResult<RunProfileStarter> prepare(@NotNull ExecutionEnvironment environment, @NotNull RunProfileState state) throws ExecutionException;
+ protected AsyncResult<RunProfileStarter> prepare(@NotNull ExecutionEnvironment environment, @NotNull RunProfileState state) throws ExecutionException {
+ return prepare(environment.getProject(), environment, state);
+ }
+
+ /**
+ * @deprecated override {@link #prepare(ExecutionEnvironment, com.intellij.execution.configurations.RunProfileState)} instead
+ */
+ @Deprecated
+ protected AsyncResult<RunProfileStarter> prepare(@NotNull Project project, @NotNull ExecutionEnvironment environment, @NotNull RunProfileState state) throws ExecutionException {
+ throw new UnsupportedOperationException();
+ }
private static void startRunProfile(@NotNull ExecutionEnvironment environment,
@NotNull RunProfileState state,
diff --git a/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java b/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java
index b6c300c3f7e2..5a395ab5dd79 100644
--- a/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java
+++ b/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java
@@ -112,6 +112,10 @@ public class ExecutionUtil {
UIUtil.invokeLaterIfNeeded(new Runnable() {
@Override
public void run() {
+ if (project.isDisposed()) {
+ return;
+ }
+
ToolWindowManager toolWindowManager = ToolWindowManager.getInstance(project);
if (toolWindowManager.canShowNotification(toolWindowId)) {
//noinspection SSBasedInspection
diff --git a/platform/lang-api/src/com/intellij/execution/ui/RunContentDescriptor.java b/platform/lang-api/src/com/intellij/execution/ui/RunContentDescriptor.java
index 60e7f03d54db..5a23ed45b1a9 100644
--- a/platform/lang-api/src/com/intellij/execution/ui/RunContentDescriptor.java
+++ b/platform/lang-api/src/com/intellij/execution/ui/RunContentDescriptor.java
@@ -15,11 +15,13 @@
*/
package com.intellij.execution.ui;
+import com.intellij.execution.DefaultExecutionResult;
import com.intellij.execution.ExecutionResult;
import com.intellij.execution.configurations.RunProfile;
import com.intellij.execution.process.ProcessHandler;
import com.intellij.ide.HelpIdProvider;
import com.intellij.openapi.Disposable;
+import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.Disposer;
import com.intellij.ui.content.Content;
@@ -44,6 +46,8 @@ public class RunContentDescriptor implements Disposable {
private Content myContent;
private Runnable myRestarter;
+ @NotNull
+ private AnAction[] myRestartActions = AnAction.EMPTY_ARRAY;
public RunContentDescriptor(@Nullable ExecutionConsole executionConsole,
@Nullable ProcessHandler processHandler,
@@ -66,7 +70,19 @@ public class RunContentDescriptor implements Disposable {
}
public RunContentDescriptor(@NotNull RunProfile profile, @NotNull ExecutionResult executionResult, @NotNull RunnerLayoutUi ui) {
- this(executionResult.getExecutionConsole(), executionResult.getProcessHandler(), ui.getComponent(), profile.getName(), profile.getIcon());
+ this(executionResult.getExecutionConsole(), executionResult.getProcessHandler(), ui.getComponent(), profile.getName(),
+ profile.getIcon());
+ if (executionResult instanceof DefaultExecutionResult) {
+ myRestartActions = ((DefaultExecutionResult)executionResult).getRestartActions();
+ }
+ }
+
+ /**
+ * @return actions to restart or rerun
+ */
+ @NotNull
+ public AnAction[] getRestartActions() {
+ return myRestartActions.clone();
}
public ExecutionConsole getExecutionConsole() {
@@ -81,6 +97,8 @@ public class RunContentDescriptor implements Disposable {
}
myComponent = null;
myRestarter = null;
+ myProcessHandler = null;
+ myContent = null;
}
/**
@@ -127,6 +145,7 @@ public class RunContentDescriptor implements Disposable {
myContent = content;
}
+ @SuppressWarnings("UnusedDeclaration")
@Nullable
@Deprecated
/**