diff --git a/xml/xml-analysis-impl/src/com/intellij/psi/impl/source/resolve/impl/XmlEntityRefUtil.java b/xml/xml-analysis-impl/src/com/intellij/psi/impl/source/resolve/impl/XmlEntityRefUtil.java index cb75130ca53d..28c92162d770 100644 --- a/xml/xml-analysis-impl/src/com/intellij/psi/impl/source/resolve/impl/XmlEntityRefUtil.java +++ b/xml/xml-analysis-impl/src/com/intellij/psi/impl/source/resolve/impl/XmlEntityRefUtil.java @@ -9,7 +9,7 @@ import com.intellij.psi.FileViewProvider; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; -import com.intellij.psi.impl.source.xml.XmlEntityCacheImplUtil; +import com.intellij.psi.impl.source.xml.XmlEntityCache; import com.intellij.psi.search.PsiElementProcessor; import com.intellij.psi.util.CachedValue; import com.intellij.psi.util.CachedValueProvider; @@ -44,8 +44,8 @@ public final class XmlEntityRefUtil { final PsiElement targetElement = targetFile != null ? targetFile : element; CachedValue value; - synchronized (XmlEntityCacheImplUtil.LOCK) { - Map> map = XmlEntityCacheImplUtil.getCachingMap(targetElement); + synchronized (XmlEntityCache.LOCK) { + Map> map = XmlEntityCache.getCachingMap(targetElement); value = map.get(entityName); final PsiFile containingFile = element.getContainingFile(); diff --git a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlEntityCache.java b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlEntityCache.java index b3c0a0f55b49..fbefcf929585 100644 --- a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlEntityCache.java +++ b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlEntityCache.java @@ -1,6 +1,7 @@ // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.psi.impl.source.xml; +import com.intellij.openapi.util.Key; import com.intellij.openapi.util.ModificationTracker; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; @@ -10,13 +11,19 @@ import com.intellij.psi.util.CachedValue; import com.intellij.psi.util.CachedValueProvider; import com.intellij.psi.util.CachedValuesManager; import com.intellij.psi.xml.XmlEntityDecl; +import org.jetbrains.annotations.ApiStatus; +import java.util.HashMap; import java.util.Map; public final class XmlEntityCache { + @ApiStatus.Internal + public static final Object LOCK = new Object(); + private static final Key>> XML_ENTITY_DECL_MAP = Key.create("XML_ENTITY_DECL_MAP"); + public static void cacheParticularEntity(PsiFile file, XmlEntityDecl decl) { - synchronized(XmlEntityCacheImplUtil.LOCK) { - final Map> cachingMap = XmlEntityCacheImplUtil.getCachingMap(file); + synchronized(LOCK) { + final Map> cachingMap = getCachingMap(file); final String name = decl.getName(); if (cachingMap.containsKey(name)) return; final SmartPsiElementPointer declPointer = SmartPointerManager.getInstance(file.getProject()).createSmartPsiElementPointer(decl); @@ -34,18 +41,28 @@ public final class XmlEntityCache { } } + @ApiStatus.Internal + public static Map> getCachingMap(final PsiElement targetElement) { + Map> map = targetElement.getUserData(XML_ENTITY_DECL_MAP); + if (map == null){ + map = new HashMap<>(); + targetElement.putUserData(XML_ENTITY_DECL_MAP, map); + } + return map; + } + public static void copyEntityCaches(final PsiFile file, final PsiFile context) { - synchronized (XmlEntityCacheImplUtil.LOCK) { - final Map> cachingMap = XmlEntityCacheImplUtil.getCachingMap(file); - cachingMap.putAll(XmlEntityCacheImplUtil.getCachingMap(context)); + synchronized (LOCK) { + final Map> cachingMap = getCachingMap(file); + cachingMap.putAll(getCachingMap(context)); } } public static XmlEntityDecl getCachedEntity(PsiFile file, String name) { CachedValue cachedValue; - synchronized(XmlEntityCacheImplUtil.LOCK) { - final Map> cachingMap = XmlEntityCacheImplUtil.getCachingMap(file); + synchronized(LOCK) { + final Map> cachingMap = getCachingMap(file); cachedValue = cachingMap.get(name); } return cachedValue != null ? cachedValue.getValue():null; diff --git a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlEntityCacheImplUtil.java b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlEntityCacheImplUtil.java deleted file mode 100644 index 5c752726cca0..000000000000 --- a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlEntityCacheImplUtil.java +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.psi.impl.source.xml; - -import com.intellij.openapi.util.Key; -import com.intellij.psi.PsiElement; -import com.intellij.psi.util.CachedValue; -import com.intellij.psi.xml.XmlEntityDecl; -import org.jetbrains.annotations.ApiStatus; - -import java.util.HashMap; -import java.util.Map; - -@ApiStatus.Internal -public final class XmlEntityCacheImplUtil { - public static final Object LOCK = new Object(); - - private static final Key>> XML_ENTITY_DECL_MAP = Key.create("XML_ENTITY_DECL_MAP"); - - public static Map> getCachingMap(final PsiElement targetElement) { - Map> map = targetElement.getUserData(XML_ENTITY_DECL_MAP); - if (map == null){ - map = new HashMap<>(); - targetElement.putUserData(XML_ENTITY_DECL_MAP, map); - } - return map; - } -}