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 868a54e7a5c3..f68ad87efe8c 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 @@ -19,7 +19,6 @@ package org.intellij.plugins.relaxNG.model.descriptors; import com.intellij.codeInsight.daemon.Validator; import com.intellij.javaee.ExternalResourceManager; import com.intellij.openapi.project.DumbService; -import com.intellij.openapi.util.Key; import com.intellij.openapi.util.ModificationTracker; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; @@ -27,7 +26,10 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; import com.intellij.psi.search.PsiElementProcessor; -import com.intellij.psi.util.*; +import com.intellij.psi.util.CachedValue; +import com.intellij.psi.util.CachedValueProvider; +import com.intellij.psi.util.CachedValuesManager; +import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.xml.XmlDocument; import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; @@ -55,8 +57,6 @@ 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 XmlFile myFile; private PsiElement myElement; private String myUrl; @@ -100,31 +100,12 @@ public class RngNsDescriptor implements XmlNSDescriptorEx, Validator { } private XmlElementDescriptor findRootDescriptor(final XmlTag tag) { - 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) { - final List allNamedPatterns = - ContainerUtil.findAll(ChildElementFinder.find(-1, myPattern), NamedPatternFilter.INSTANCE); - XmlElementDescriptor descriptor = findDescriptor(tag, allNamedPatterns); - return descriptor != null ? descriptor : findDescriptor(tag, ChildElementFinder.find(myPattern)); + return getElementDescriptor(tag.getLocalName(), tag.getNamespace()); } private XmlElementDescriptor findRootDescriptorInner(QName qName) { - return findDescriptor(qName, ContainerUtil.findAll( - ChildElementFinder.find(-1, myPattern), NamedPatternFilter.INSTANCE)); + XmlElementDescriptor descriptor = findDescriptor(qName, ContainerUtil.findAll(ChildElementFinder.find(-1, myPattern), NamedPatternFilter.INSTANCE)); + return descriptor != null ? descriptor : findDescriptor(qName, ChildElementFinder.find(myPattern)); } public XmlElementDescriptor findDescriptor(XmlTag tag, List list) {