mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
InternetAttachSourceProvider: display dialogs outside write action (EA-97211 - assert: NoSwingUnderWriteAction.lambda$watchForEvents$)
This commit is contained in:
@@ -193,21 +193,25 @@ public class InternetAttachSourceProvider extends AbstractAttachSourceProvider {
|
||||
}
|
||||
|
||||
public static void attachSourceJar(@NotNull File sourceJar, @NotNull Collection<Library> libraries) {
|
||||
VirtualFile srcFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(sourceJar);
|
||||
if (srcFile == null) return;
|
||||
|
||||
VirtualFile jarRoot = JarFileSystem.getInstance().getJarRootForLocalFile(srcFile);
|
||||
if (jarRoot == null) return;
|
||||
|
||||
VirtualFile[] roots = LibrarySourceRootDetectorUtil.scanAndSelectDetectedJavaSourceRoots(null, new VirtualFile[]{jarRoot});
|
||||
if (roots.length == 0) {
|
||||
roots = new VirtualFile[]{jarRoot};
|
||||
}
|
||||
|
||||
doAttachSourceJars(libraries, roots);
|
||||
}
|
||||
|
||||
private static void doAttachSourceJars(@NotNull Collection<Library> libraries, VirtualFile[] roots) {
|
||||
WriteAction.run(() -> {
|
||||
VirtualFile srcFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(sourceJar);
|
||||
if (srcFile == null) return;
|
||||
|
||||
VirtualFile jarRoot = JarFileSystem.getInstance().getJarRootForLocalFile(srcFile);
|
||||
if (jarRoot == null) return;
|
||||
|
||||
VirtualFile[] roots = LibrarySourceRootDetectorUtil.scanAndSelectDetectedJavaSourceRoots(null, new VirtualFile[]{jarRoot});
|
||||
if (roots.length == 0) {
|
||||
roots = new VirtualFile[]{jarRoot};
|
||||
}
|
||||
|
||||
for (Library library : libraries) {
|
||||
Library.ModifiableModel model = library.getModifiableModel();
|
||||
List<VirtualFile> alreadyExistingFiles = Arrays.asList(model.getFiles(OrderRootType.SOURCES));
|
||||
Set<VirtualFile> alreadyExistingFiles = ContainerUtil.newHashSet(model.getFiles(OrderRootType.SOURCES));
|
||||
|
||||
for (VirtualFile root : roots) {
|
||||
if (!alreadyExistingFiles.contains(root)) {
|
||||
|
||||
Reference in New Issue
Block a user