GroovyHotSwapper: use FileTypeIndex

This commit is contained in:
peter
2013-12-03 16:05:27 +01:00
parent 310e294ba2
commit 2cf7ed82c9
@@ -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()) {