Skip to content
Snippets Groups Projects

Resolve "IDE Exception"

Merged Johannes Mey requested to merge bugfix/forbidden-refresh-in-path-resolution into develop
1 file
+ 8
3
Compare changes
  • Side-by-side
  • Inline
package org.jastadd.tooling.java;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ex.ApplicationEx;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.util.ui.EDT;
import org.jetbrains.annotations.NotNull;
import java.nio.file.Paths;
@@ -33,8 +36,11 @@ public class GeneratedCodeUtil {
}
String path = jastAddFileLocation.substring(0, pos);
System.out.println(path);
VirtualFile vFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(path);
// the method performing the refresh is not allowed when the following condition is not met
// see com.intellij.openapi.vfs.newvfs.RefreshQueueImpl:execute
VirtualFile vFile = ((ApplicationEx) ApplicationManager.getApplication()).holdsReadLock() || EDT.isCurrentThreadEdt()
? LocalFileSystem.getInstance().findFileByPath(path)
: LocalFileSystem.getInstance().refreshAndFindFileByPath(path);
int line;
try {
@@ -45,7 +51,6 @@ public class GeneratedCodeUtil {
if (vFile == null) {
return Paths.get(path).getFileName() + (line == 0 ? "" : ":" + line);
}
System.out.println(line);
Document document = FileDocumentManager.getInstance().getDocument(vFile);
if (document == null) {
Loading