Make sure alt-headers actually work in "core" environment

This commit is contained in:
Maxim Shafirov
2012-01-31 13:37:40 +04:00
parent ef530de14b
commit dbbd4c6902
3 changed files with 26 additions and 13 deletions
@@ -4,8 +4,10 @@ import com.intellij.core.JavaCoreEnvironment;
import com.intellij.lang.java.JavaParserDefinition;
import com.intellij.mock.MockApplication;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.jet.lang.parsing.JetParserDefinition;
import org.jetbrains.jet.plugin.JetFileType;
import org.jetbrains.jet.plugin.compiler.PathUtil;
/**
* @author yole
@@ -26,6 +28,9 @@ public class JetCoreEnvironment extends JavaCoreEnvironment {
.registerExtension(new JavaElementFinder(myProject));
*/
for (VirtualFile root : PathUtil.getAltHeadersRoots()) {
addLibraryRoot(root);
}
}
public MockApplication getApplication() {
@@ -6,7 +6,6 @@ package org.jetbrains.jet.lang.resolve.java.alt;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiClassOwner;
import com.intellij.psi.PsiFile;
@@ -14,27 +13,18 @@ import com.intellij.psi.PsiManager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.plugin.compiler.PathUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class AltClassFinder {
private static final Logger LOG = Logger.getInstance("#org.jetbrains.jet.lang.resolve.java.alt.AltClassFinder");
private final PsiManager psiManager;
private final List<VirtualFile> roots = new ArrayList<VirtualFile>();
private final List<VirtualFile> roots;
public AltClassFinder(Project project) {
psiManager = PsiManager.getInstance(project);
File alts = PathUtil.getAltHeadersPath();
if (alts != null) {
for (File root : alts.listFiles()) {
VirtualFile jarRoot = VirtualFileManager.getInstance().findFileByUrl("jar://" + root.getPath() + "!/");
roots.add(jarRoot);
}
}
this.roots = PathUtil.getAltHeadersRoots();
}
public PsiClass findClass(@NotNull String qualifiedName) {
@@ -4,9 +4,13 @@
package org.jetbrains.jet.plugin.compiler;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class PathUtil {
private PathUtil() {}
@@ -64,4 +68,18 @@ public class PathUtil {
String resourceRoot = PathManager.getResourceRoot(aClass, "/" + aClass.getName().replace('.', '/') + ".class");
return new File(resourceRoot).getAbsoluteFile().getAbsolutePath();
}
public static List<VirtualFile> getAltHeadersRoots() {
List<VirtualFile> roots = new ArrayList<VirtualFile>();
File alts = getAltHeadersPath();
if (alts != null) {
for (File root : alts.listFiles()) {
VirtualFile jarRoot = VirtualFileManager.getInstance().findFileByUrl("jar://" + root.getPath() + "!/");
roots.add(jarRoot);
}
}
return roots;
}
}