avoid accessing index during events dispatch

This commit is contained in:
Maxim.Mossienko
2015-07-03 19:11:25 +02:00
parent 1294ec93f4
commit b31fb5dd8b
2 changed files with 11 additions and 12 deletions
@@ -30,6 +30,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.xml.XmlFile;
import com.intellij.util.indexing.FileBasedIndex;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -119,10 +120,14 @@ public class PropertiesImplUtil extends PropertiesUtil {
@Nullable
public static PropertiesFile getPropertiesFile(@Nullable PsiFile file) {
if (file == null) return null;
if (!canBePropertyFile(file)) return null;
return file instanceof PropertiesFile ? (PropertiesFile)file : XmlPropertiesFileImpl.getPropertiesFile(file);
}
public static boolean canBePropertyFile(PsiFile file) {
return file instanceof PropertiesFile || file instanceof XmlFile;
}
@Nullable
public static PropertiesFile getPropertiesFile(@Nullable PsiElement element) {
if (!(element instanceof PsiFile)) return null;
@@ -23,7 +23,6 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.NotNullLazyValue;
import com.intellij.openapi.util.NullableComputable;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.util.Function;
@@ -32,9 +31,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.regex.Matcher;
/**
* @author Dmitry Batkovich
@@ -103,14 +100,11 @@ public class ResourceBundleManager implements PersistentStateComponent<ResourceB
@Override
public void beforeChildRemoval(@NotNull PsiTreeChangeEvent event) {
final PsiElement child = event.getChild();
if (!(child instanceof PsiFile)) {
return;
}
PropertiesFile file = PropertiesImplUtil.getPropertiesFile((PsiFile)child);
if (file == null) {
return;
}
final VirtualFile virtualFile = file.getVirtualFile();
if (!(child instanceof PsiFile)) return;
PsiFile psiFile = (PsiFile)child;
if (!PropertiesImplUtil.canBePropertyFile(psiFile)) return;
final VirtualFile virtualFile = psiFile.getVirtualFile();
final NotNullLazyValue<String> url = new NotNullLazyValue<String>() {
@NotNull
@Override