mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
json schema: do not acquire any locks in JsonSchemaServiceImpl$MyState.reset (IDEA-327761)
GitOrigin-RevId: 4f0791f7728069caa76779666662087cc405cd87
This commit is contained in:
committed by
intellij-monorepo-bot
parent
51a119b574
commit
224cfa336e
@@ -21,6 +21,7 @@ import com.intellij.openapi.vfs.impl.http.HttpVirtualFile;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.concurrency.SynchronizedClearableLazy;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.messages.MessageBusConnection;
|
||||
import com.jetbrains.jsonSchema.*;
|
||||
@@ -33,7 +34,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Supplier;
|
||||
@@ -511,33 +511,12 @@ public class JsonSchemaServiceImpl implements JsonSchemaService, ModificationTra
|
||||
private static final class MyState {
|
||||
@NotNull private final Supplier<List<JsonSchemaFileProvider>> myFactory;
|
||||
@NotNull private final Project myProject;
|
||||
@NotNull private final ClearableLazyValue<Map<VirtualFile, List<JsonSchemaFileProvider>>> myData;
|
||||
private final AtomicBoolean myIsComputed = new AtomicBoolean(false);
|
||||
@NotNull private final SynchronizedClearableLazy<Map<VirtualFile, List<JsonSchemaFileProvider>>> myData;
|
||||
|
||||
private MyState(@NotNull final Supplier<List<JsonSchemaFileProvider>> factory, @NotNull Project project) {
|
||||
myFactory = factory;
|
||||
myProject = project;
|
||||
myData = new ClearableLazyValue<>() {
|
||||
@NotNull
|
||||
@Override
|
||||
public Map<VirtualFile, List<JsonSchemaFileProvider>> compute() {
|
||||
Map<VirtualFile, List<JsonSchemaFileProvider>> map = createFileProviderMap(myFactory.get(), myProject);
|
||||
myIsComputed.set(true);
|
||||
return map;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public synchronized Map<VirtualFile, List<JsonSchemaFileProvider>> getValue() {
|
||||
return super.getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void drop() {
|
||||
myIsComputed.set(false);
|
||||
super.drop();
|
||||
}
|
||||
};
|
||||
myData = new SynchronizedClearableLazy<>(() -> createFileProviderMap(myFactory.get(), myProject));
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
@@ -576,7 +555,7 @@ public class JsonSchemaServiceImpl implements JsonSchemaService, ModificationTra
|
||||
}
|
||||
|
||||
public boolean isComputed() {
|
||||
return myIsComputed.get();
|
||||
return myData.isInitialized();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
Reference in New Issue
Block a user