diff --git a/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaServiceImpl.java b/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaServiceImpl.java index 90e8ed02d91f..0c06d13c6e03 100644 --- a/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaServiceImpl.java +++ b/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaServiceImpl.java @@ -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> myFactory; @NotNull private final Project myProject; - @NotNull private final ClearableLazyValue>> myData; - private final AtomicBoolean myIsComputed = new AtomicBoolean(false); + @NotNull private final SynchronizedClearableLazy>> myData; private MyState(@NotNull final Supplier> factory, @NotNull Project project) { myFactory = factory; myProject = project; - myData = new ClearableLazyValue<>() { - @NotNull - @Override - public Map> compute() { - Map> map = createFileProviderMap(myFactory.get(), myProject); - myIsComputed.set(true); - return map; - } - - @NotNull - @Override - public synchronized Map> 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