diff options
Diffstat (limited to 'platform/lang-api/src/com/intellij/execution/configurations')
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; |