protected final Map<String, CachedValue<XmlNSDescriptor>> initNSDescriptorsMap() { Map<String, CachedValue<XmlNSDescriptor>> map = myNSDescriptorsMap; if (map == null) { RecursionGuard.StackStamp stamp = ourGuard.markStack(); map = computeNsDescriptorMap(); if (stamp.mayCacheNow()) { myNSDescriptorsMap = map; } } return map; }
@Nullable private BidirectionalMap<String, String> initNamespaceMaps(PsiElement parent) { BidirectionalMap<String, String> map = myNamespaceMap; if (map == null) { RecursionGuard.StackStamp stamp = ourGuard.markStack(); map = computeNamespaceMap(parent); if (stamp.mayCacheNow()) { myNamespaceMap = map; } } return map; }
@NotNull public String getNamespace() { String cachedNamespace = myCachedNamespace; final long curModCount = getManager().getModificationTracker().getModificationCount(); if (cachedNamespace != null && myModCount == curModCount) { return cachedNamespace; } RecursionGuard.StackStamp stamp = ourGuard.markStack(); cachedNamespace = getNamespaceByPrefix(getNamespacePrefix()); if (!stamp.mayCacheNow()) { return cachedNamespace; } myCachedNamespace = cachedNamespace; myModCount = curModCount; return cachedNamespace; }
public XmlElementDescriptor getDescriptor() { final long curModCount = getManager().getModificationTracker().getModificationCount(); long curExtResourcesModCount = ExternalResourceManagerEx.getInstanceEx().getModificationCount(getProject()); if (myDescriptorModCount != curModCount || myExtResourcesModCount != curExtResourcesModCount) { if (myExtResourcesModCount != curExtResourcesModCount) { myNSDescriptorsMap = null; } RecursionGuard.StackStamp stamp = ourGuard.markStack(); XmlElementDescriptor descriptor = computeElementDescriptor(); if (!stamp.mayCacheNow()) { return descriptor; } myCachedDescriptor = descriptor; myDescriptorModCount = curModCount; myExtResourcesModCount = curExtResourcesModCount; } return myCachedDescriptor; }