From 195861bdd1623a0405010fbc4f613d145bd1b605 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Tue, 7 Nov 2017 22:08:44 +0000 Subject: [PATCH] Revert "use simple cached value as it can handle non-physical elements properly" This reverts commit 7ba7dae --- .../model/descriptors/RngNsDescriptor.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngNsDescriptor.java b/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngNsDescriptor.java index a104f877606c..868a54e7a5c3 100644 --- a/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngNsDescriptor.java +++ b/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngNsDescriptor.java @@ -55,7 +55,7 @@ public class RngNsDescriptor implements XmlNSDescriptorEx, Validator { private final Map> myDescriptorsMap = Collections.synchronizedMap(new HashMap>()); - private static final Key> ROOT_KEY = Key.create("ROOT_DESCRIPTOR"); + private static final Key> ROOT_KEY = Key.create("ROOT_DESCRIPTOR"); private XmlFile myFile; private PsiElement myElement; @@ -100,15 +100,19 @@ public class RngNsDescriptor implements XmlNSDescriptorEx, Validator { } private XmlElementDescriptor findRootDescriptor(final XmlTag tag) { - return CachedValuesManager.getCachedValue(tag, ROOT_KEY, () -> { - final XmlElementDescriptor descr = findRootDescriptorInner(tag); - if (descr != null) { - return CachedValueProvider.Result.create(descr, descr.getDependences(), getDependences()); - } - else { - return CachedValueProvider.Result.create(null, getDependences()); - } - }); + return CachedValuesManager.getManager(tag.getProject()) + .getParameterizedCachedValue(tag, ROOT_KEY, new ParameterizedCachedValueProvider() { + @Override + public CachedValueProvider.Result compute(RngNsDescriptor o) { + final XmlElementDescriptor descr = o.findRootDescriptorInner(tag); + if (descr != null) { + return CachedValueProvider.Result.create(descr, descr.getDependences(), o.getDependences()); + } + else { + return CachedValueProvider.Result.create(null, o.getDependences()); + } + } + }, false, this); } private XmlElementDescriptor findRootDescriptorInner(XmlTag tag) {