import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.TextRange;
-import com.intellij.openapi.vfs.JarFileSystem;
+import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.*;
@Nullable
public static VirtualFile getJarFile(PsiElement candidate) {
VirtualFile file = candidate.getContainingFile().getVirtualFile();
- if (file != null && file.getFileSystem() instanceof JarFileSystem) {
- return JarFileSystem.getInstance().getVirtualFileForJar(file);
+ if (file != null && file.getFileSystem().getProtocol().equals("jar")) {
+ return VfsUtilCore.getVirtualFileForJar(file);
}
return file;
}
}
return new String(chars);
}
+
+ @Nullable
+ public static VirtualFile getVirtualFileForJar(@Nullable VirtualFile entryVFile) {
+ if (entryVFile == null) return null;
+ final String path = entryVFile.getPath();
+ final int separatorIndex = path.indexOf("!/");
+ if (separatorIndex < 0) return null;
+
+ String localPath = path.substring(0, separatorIndex);
+ return VirtualFileManager.getInstance().findFileByUrl("file://" + localPath);
+ }
}