mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
GroovyHotSwapper: use FileTypeIndex
This commit is contained in:
@@ -18,20 +18,18 @@ import com.intellij.openapi.roots.LanguageLevelModuleExtension;
|
||||
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.search.FilenameIndex;
|
||||
import com.intellij.psi.search.FileTypeIndex;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.util.CachedValueProvider;
|
||||
import com.intellij.psi.util.CachedValuesManager;
|
||||
import com.intellij.psi.util.PsiModificationTracker;
|
||||
import com.intellij.util.PathUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.groovy.GroovyFileTypeLoader;
|
||||
import org.jetbrains.plugins.groovy.GroovyFileType;
|
||||
import org.jetbrains.plugins.groovy.debugger.filters.GroovyDebuggerSettings;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.jar.Attributes;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@@ -45,41 +43,17 @@ public class GroovyHotSwapper extends JavaProgramPatcher {
|
||||
|
||||
private static final Pattern SPRING_LOADED_PATTERN = Pattern.compile("-javaagent:.+springloaded-core-[^/\\\\]+\\.jar");
|
||||
|
||||
private static boolean endsWithAny(String s, List<String> endings) {
|
||||
for (String extension : endings) {
|
||||
if (s.endsWith(extension)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean containsGroovyClasses(final Project project) {
|
||||
return CachedValuesManager.getManager(project).getCachedValue(project, new CachedValueProvider<Boolean>() {
|
||||
@Nullable
|
||||
@Override
|
||||
public Result<Boolean> compute() {
|
||||
return Result.create(calcContainsGroovyClasses(project), PsiModificationTracker.JAVA_STRUCTURE_MODIFICATION_COUNT);
|
||||
return Result.create(FileTypeIndex.containsFileOfType(GroovyFileType.GROOVY_FILE_TYPE, GlobalSearchScope.projectScope(project)),
|
||||
PsiModificationTracker.JAVA_STRUCTURE_MODIFICATION_COUNT);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static boolean calcContainsGroovyClasses(Project project) {
|
||||
final List<String> extensions = new ArrayList<String>();
|
||||
for (String extension : GroovyFileTypeLoader.getAllGroovyExtensions()) {
|
||||
extensions.add("." + extension);
|
||||
}
|
||||
final GlobalSearchScope scope = GlobalSearchScope.projectScope(project);
|
||||
for (String fileName : FilenameIndex.getAllFilenames(project)) {
|
||||
if (endsWithAny(fileName, extensions)) {
|
||||
if (!FilenameIndex.getVirtualFilesByName(project, fileName, scope).isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean hasSpringLoadedReloader(JavaParameters javaParameters) {
|
||||
for (String param : javaParameters.getVMParametersList().getParameters()) {
|
||||
if (SPRING_LOADED_PATTERN.matcher(param).matches()) {
|
||||
|
||||
Reference in New Issue
Block a user