summaryrefslogtreecommitdiff
path: root/platform/lang-api/src/com/intellij/execution/configurations
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-api/src/com/intellij/execution/configurations')
-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
8 files changed, 89 insertions, 41 deletions
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;