From 1ac3c1c71af18cdaa9c4752326b872c0d2b453d0 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 1 Sep 2011 16:57:08 +0200 Subject: [PATCH] decouple PsiManager from CacheManager --- .../daemon/DaemonAnalyzerTestCase.java | 3 +- .../intellij/find/impl/FindInProjectUtil.java | 5 +- .../src/com/intellij/mock/MockPsiManager.java | 39 -------------- .../intellij/psi/impl/EmptyCacheManager.java | 54 ------------------- .../com/intellij/psi/impl/PsiManagerEx.java | 5 -- .../com/intellij/psi/impl/PsiManagerImpl.java | 13 ----- .../intellij/psi/impl/cache/CacheManager.java | 11 ++++ .../cache/impl/IndexCacheManagerImpl.java | 19 ++++++- .../impl/search/IndexPatternSearchImpl.java | 6 +-- .../psi/impl/search/IndexPatternSearcher.java | 3 +- .../psi/impl/search/PsiSearchHelperImpl.java | 30 ++++++----- .../src/META-INF/LangExtensions.xml | 3 ++ .../impl/CodeInsightTestFixtureImpl.java | 3 +- .../PatternEditorContextMembersProvider.java | 7 +-- .../binding/FormReferencesSearcher.java | 16 ++++-- 15 files changed, 71 insertions(+), 146 deletions(-) delete mode 100644 platform/lang-impl/src/com/intellij/psi/impl/EmptyCacheManager.java diff --git a/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java b/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java index 39bfcda42d56..dd74f73a0d9b 100644 --- a/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java +++ b/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java @@ -65,6 +65,7 @@ import com.intellij.profile.codeInspection.InspectionProfileManager; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.*; import com.intellij.psi.impl.JavaPsiFacadeEx; +import com.intellij.psi.impl.cache.CacheManager; import com.intellij.psi.impl.search.IndexPatternBuilder; import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry; import com.intellij.psi.impl.source.tree.TreeElement; @@ -289,7 +290,7 @@ public abstract class DaemonAnalyzerTestCase extends CodeInsightTestCase { //to initialize caches if (!DumbService.isDumb(getProject())) { - myPsiManager.getCacheManager().getFilesWithWord("XXX", UsageSearchContext.IN_COMMENTS, GlobalSearchScope.allScope(myProject), true); + CacheManager.SERVICE.getInstance(myProject).getFilesWithWord("XXX", UsageSearchContext.IN_COMMENTS, GlobalSearchScope.allScope(myProject), true); } final JavaPsiFacadeEx facade = getJavaFacade(); if (facade != null) { diff --git a/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java b/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java index 129d4a42465b..1aeb6cd3dc64 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java @@ -26,7 +26,6 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ApplicationNamesInfo; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.editor.colors.TextAttributesKey; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileEditor.FileEditor; import com.intellij.openapi.fileTypes.FileTypeManager; @@ -49,7 +48,6 @@ import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.util.text.TrigramBuilder; -import com.intellij.openapi.vcs.FileStatus; import com.intellij.openapi.vfs.JarFileSystem; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; @@ -57,7 +55,6 @@ import com.intellij.openapi.vfs.VirtualFileFilter; import com.intellij.openapi.wm.ToolWindowId; import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.psi.*; -import com.intellij.psi.impl.PsiManagerEx; import com.intellij.psi.impl.cache.CacheManager; import com.intellij.psi.search.*; import com.intellij.usageView.UsageInfo; @@ -444,7 +441,7 @@ public class FindInProjectUtil { } PsiManager pm = PsiManager.getInstance(project); - CacheManager cacheManager = ((PsiManagerEx)pm).getCacheManager(); + CacheManager cacheManager = CacheManager.SERVICE.getInstance(project); SearchScope customScope = findModel.getCustomScope(); @NotNull GlobalSearchScope scope = psiDirectory != null ? GlobalSearchScopes.directoryScope(psiDirectory, true) diff --git a/platform/lang-impl/src/com/intellij/mock/MockPsiManager.java b/platform/lang-impl/src/com/intellij/mock/MockPsiManager.java index f3e50da8f970..6eec16657e1a 100644 --- a/platform/lang-impl/src/com/intellij/mock/MockPsiManager.java +++ b/platform/lang-impl/src/com/intellij/mock/MockPsiManager.java @@ -23,23 +23,17 @@ import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Key; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; -import com.intellij.psi.impl.EmptyCacheManager; import com.intellij.psi.impl.PsiManagerEx; import com.intellij.psi.impl.PsiModificationTrackerImpl; import com.intellij.psi.impl.PsiTreeChangeEventImpl; -import com.intellij.psi.impl.cache.CacheManager; import com.intellij.psi.impl.file.impl.FileManager; import com.intellij.psi.impl.source.resolve.ResolveCache; import com.intellij.psi.util.PsiModificationTracker; -import com.intellij.util.CachedValuesManagerImpl; -import com.intellij.util.IncorrectOperationException; import com.intellij.util.ThrowableRunnable; import gnu.trove.THashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Collections; -import java.util.List; import java.util.Map; public class MockPsiManager extends PsiManagerEx { @@ -47,7 +41,6 @@ public class MockPsiManager extends PsiManagerEx { private final Map myDirectories = new THashMap(); private MockFileManager myMockFileManager; private PsiModificationTrackerImpl myPsiModificationTracker; - private final CacheManager myCacheManager = new EmptyCacheManager(); private ResolveCache myResolveCache; public MockPsiManager() { @@ -105,15 +98,6 @@ public class MockPsiManager extends PsiManagerEx { return myPsiModificationTracker; } - public void moveFile(@NotNull PsiFile file, @NotNull PsiDirectory newParentDir) throws IncorrectOperationException { - } - - public void moveDirectory(@NotNull PsiDirectory dir, @NotNull PsiDirectory newParentDir) throws IncorrectOperationException { - } - - public void checkMove(@NotNull PsiElement element, @NotNull PsiElement newContainer) throws IncorrectOperationException { - } - public void startBatchFilesProcessingMode() { } @@ -151,25 +135,10 @@ public class MockPsiManager extends PsiManagerEx { return r.compute(); } - public void registerLanguageInjector(@NotNull LanguageInjector injector) { - } - - public void registerLanguageInjector(@NotNull LanguageInjector injector, Disposable parentDisposable) { - } - - public void unregisterLanguageInjector(@NotNull LanguageInjector injector) { - - } - @Override public void dropFileCaches(@NotNull PsiFile file) { } - @NotNull - public List getLanguageInjectors() { - return Collections.emptyList(); - } - public boolean isBatchFilesProcessingMode() { return false; } @@ -214,9 +183,6 @@ public class MockPsiManager extends PsiManagerEx { return myMockFileManager; } - public void invalidateFile(@NotNull final PsiFile file) { - } - public void beforeChildRemoval(@NotNull final PsiTreeChangeEventImpl event) { } @@ -227,9 +193,4 @@ public class MockPsiManager extends PsiManagerEx { @Override public void beforeChildAddition(@NotNull PsiTreeChangeEventImpl event) { } - - @NotNull - public CacheManager getCacheManager() { - return myCacheManager; - } } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/EmptyCacheManager.java b/platform/lang-impl/src/com/intellij/psi/impl/EmptyCacheManager.java deleted file mode 100644 index 2e7c11cde659..000000000000 --- a/platform/lang-impl/src/com/intellij/psi/impl/EmptyCacheManager.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2000-2009 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * @author max - */ -package com.intellij.psi.impl; - -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.cache.CacheManager; -import com.intellij.psi.search.GlobalSearchScope; -import com.intellij.psi.search.IndexPattern; -import com.intellij.psi.search.IndexPatternProvider; -import com.intellij.util.Processor; -import org.jetbrains.annotations.NotNull; - -public class EmptyCacheManager implements CacheManager { - @NotNull - public PsiFile[] getFilesWithWord(@NotNull String word, short occurenceMask, @NotNull GlobalSearchScope scope, final boolean caseSensitive) { - return PsiFile.EMPTY_ARRAY; - } - - public boolean processFilesWithWord(@NotNull Processor processor, @NotNull String word, short occurenceMask, @NotNull GlobalSearchScope scope, - final boolean caseSensitively) { - return true; - } - - @NotNull - public PsiFile[] getFilesWithTodoItems() { - return PsiFile.EMPTY_ARRAY; - } - - public int getTodoCount(@NotNull VirtualFile file, final IndexPatternProvider patternProvider) { - return 0; - } - - public int getTodoCount(@NotNull VirtualFile file, IndexPattern pattern) { - return 0; - } -} \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/psi/impl/PsiManagerEx.java b/platform/lang-impl/src/com/intellij/psi/impl/PsiManagerEx.java index 4cc5114deb7f..aed48fe3b89d 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/PsiManagerEx.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/PsiManagerEx.java @@ -16,9 +16,7 @@ package com.intellij.psi.impl; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; -import com.intellij.psi.impl.cache.CacheManager; import com.intellij.psi.impl.file.impl.FileManager; import com.intellij.psi.impl.source.resolve.ResolveCache; import org.jetbrains.annotations.NotNull; @@ -55,9 +53,6 @@ public abstract class PsiManagerEx extends PsiManager { public abstract void beforeChildReplacement(@NotNull PsiTreeChangeEventImpl event); - @NotNull - public abstract CacheManager getCacheManager(); - public abstract void beforeChange(boolean isPhysical); public abstract void afterChange(boolean isPhysical); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/PsiManagerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/PsiManagerImpl.java index 5257ce3fd5c8..64d7c2f17999 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/PsiManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/PsiManagerImpl.java @@ -38,9 +38,7 @@ import com.intellij.openapi.util.Key; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileFilter; import com.intellij.psi.*; -import com.intellij.psi.impl.cache.CacheManager; import com.intellij.psi.impl.cache.impl.CacheUtil; -import com.intellij.psi.impl.cache.impl.IndexCacheManagerImpl; import com.intellij.psi.impl.file.impl.FileManager; import com.intellij.psi.impl.file.impl.FileManagerImpl; import com.intellij.psi.impl.source.PostprocessReformattingAspect; @@ -67,7 +65,6 @@ public class PsiManagerImpl extends PsiManagerEx implements ProjectComponent { private final MessageBus myMessageBus; private final FileManager myFileManager; - private final CacheManager myCacheManager; private final PsiModificationTrackerImpl myModificationTracker; private final ResolveCache myResolveCache; @@ -102,8 +99,6 @@ public class PsiManagerImpl extends PsiManagerEx implements ProjectComponent { myFileManager = isProjectDefault ? new EmptyFileManager(this) : new FileManagerImpl(this, fileTypeManager, fileDocumentManager, projectRootManagerEx); - myCacheManager = isProjectDefault ? new EmptyCacheManager() : new IndexCacheManagerImpl(this); - myModificationTracker = new PsiModificationTrackerImpl(myProject); myTreeChangePreprocessors.add(myModificationTracker); myResolveCache = new ResolveCache(messageBus); @@ -244,14 +239,6 @@ public class PsiManagerImpl extends PsiManagerEx implements ProjectComponent { return myFileManager; } - @NotNull - public CacheManager getCacheManager() { - if (myIsDisposed) { - LOG.error("Project is already disposed."); - } - return myCacheManager; - } - @NotNull public ResolveCache getResolveCache() { ProgressManager.checkCanceled(); // We hope this method is being called often enough to cancel daemon processes smoothly diff --git a/platform/lang-impl/src/com/intellij/psi/impl/cache/CacheManager.java b/platform/lang-impl/src/com/intellij/psi/impl/cache/CacheManager.java index 1cb4e8eeb6df..5773600672f6 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/cache/CacheManager.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/cache/CacheManager.java @@ -16,6 +16,8 @@ package com.intellij.psi.impl.cache; +import com.intellij.openapi.components.ServiceManager; +import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; import com.intellij.psi.search.GlobalSearchScope; @@ -25,6 +27,15 @@ import com.intellij.util.Processor; import org.jetbrains.annotations.NotNull; public interface CacheManager { + class SERVICE { + private SERVICE() { + } + + public static CacheManager getInstance(Project project) { + return ServiceManager.getService(project, CacheManager.class); + } + } + @NotNull PsiFile[] getFilesWithWord(@NotNull String word, short occurenceMask, @NotNull GlobalSearchScope scope, final boolean caseSensitively); boolean processFilesWithWord(@NotNull Processor processor,@NotNull String word, short occurenceMask, @NotNull GlobalSearchScope scope, final boolean caseSensitively); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/IndexCacheManagerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/IndexCacheManagerImpl.java index 6acbf3c54103..d970b37c9b5c 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/IndexCacheManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/IndexCacheManagerImpl.java @@ -65,6 +65,9 @@ public class IndexCacheManagerImpl implements CacheManager{ @NotNull public PsiFile[] getFilesWithWord(@NotNull final String word, final short occurenceMask, @NotNull final GlobalSearchScope scope, final boolean caseSensitively) { + if (myProject.isDefault()) { + return PsiFile.EMPTY_ARRAY; + } CommonProcessors.CollectProcessor processor = new CommonProcessors.CollectProcessor(); processFilesWithWord(processor, word, occurenceMask, scope, caseSensitively); return processor.getResults().isEmpty() ? PsiFile.EMPTY_ARRAY : processor.toArray(PsiFile.EMPTY_ARRAY); @@ -75,6 +78,9 @@ public class IndexCacheManagerImpl implements CacheManager{ } public boolean processFilesWithWord(@NotNull final Processor psiFileProcessor, @NotNull final String word, final short occurrenceMask, @NotNull final GlobalSearchScope scope, final boolean caseSensitively) { + if (myProject.isDefault()) { + return true; + } final Set vFiles = new THashSet(); final GlobalSearchScope projectScope = GlobalSearchScope.allScope(myProject); try { @@ -130,12 +136,15 @@ public class IndexCacheManagerImpl implements CacheManager{ @NotNull public PsiFile[] getFilesWithTodoItems() { + if (myProject.isDefault()) { + return PsiFile.EMPTY_ARRAY; + } final FileBasedIndex fileBasedIndex = FileBasedIndex.getInstance(); final Set allFiles = new HashSet(); final ProjectFileIndex projectFileIndex = ProjectRootManager.getInstance(myProject).getFileIndex(); for (IndexPattern indexPattern : CacheUtil.getIndexPatterns()) { final Collection files = fileBasedIndex.getContainingFiles( - TodoIndex.NAME, + TodoIndex.NAME, new TodoIndexEntry(indexPattern.getPatternString(), indexPattern.isCaseSensitive()), GlobalSearchScope.allScope(myProject)); ApplicationManager.getApplication().runReadAction(new Runnable() { public void run() { @@ -148,12 +157,15 @@ public class IndexCacheManagerImpl implements CacheManager{ } } } - }); + }); } return allFiles.isEmpty() ? PsiFile.EMPTY_ARRAY : PsiUtilBase.toPsiFileArray(allFiles); } public int getTodoCount(@NotNull final VirtualFile file, final IndexPatternProvider patternProvider) { + if (myProject.isDefault()) { + return 0; + } if (file instanceof VirtualFileWindow) return -1; final FileBasedIndex fileBasedIndex = FileBasedIndex.getInstance(); int count = 0; @@ -164,6 +176,9 @@ public class IndexCacheManagerImpl implements CacheManager{ } public int getTodoCount(@NotNull final VirtualFile file, final IndexPattern pattern) { + if (myProject.isDefault()) { + return 0; + } if (file instanceof VirtualFileWindow) return -1; return fetchCount(FileBasedIndex.getInstance(), file, pattern); } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/search/IndexPatternSearchImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/search/IndexPatternSearchImpl.java index 77cf09173c4b..a0adea4e09bf 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/search/IndexPatternSearchImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/search/IndexPatternSearchImpl.java @@ -17,7 +17,7 @@ package com.intellij.psi.impl.search; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.PsiManagerEx; +import com.intellij.psi.impl.cache.CacheManager; import com.intellij.psi.search.IndexPattern; import com.intellij.psi.search.IndexPatternProvider; import com.intellij.psi.search.searches.IndexPatternSearch; @@ -31,13 +31,13 @@ class IndexPatternSearchImpl extends IndexPatternSearch { } protected int getOccurrencesCountImpl(PsiFile file, IndexPatternProvider provider) { - int count = ((PsiManagerEx)file.getManager()).getCacheManager().getTodoCount(file.getVirtualFile(), provider); + int count = CacheManager.SERVICE.getInstance(file.getProject()).getTodoCount(file.getVirtualFile(), provider); if (count != -1) return count; return search(file, provider).findAll().size(); } protected int getOccurrencesCountImpl(PsiFile file, IndexPattern pattern) { - int count = ((PsiManagerEx)file.getManager()).getCacheManager().getTodoCount(file.getVirtualFile(), pattern); + int count = CacheManager.SERVICE.getInstance(file.getProject()).getTodoCount(file.getVirtualFile(), pattern); if (count != -1) return count; return search(file, pattern).findAll().size(); } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/search/IndexPatternSearcher.java b/platform/lang-impl/src/com/intellij/psi/impl/search/IndexPatternSearcher.java index 41b29cf49bab..bf4686480f5a 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/search/IndexPatternSearcher.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/search/IndexPatternSearcher.java @@ -29,7 +29,6 @@ import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; -import com.intellij.psi.impl.PsiManagerEx; import com.intellij.psi.impl.cache.CacheManager; import com.intellij.psi.search.IndexPattern; import com.intellij.psi.search.IndexPatternOccurrence; @@ -60,7 +59,7 @@ public class IndexPatternSearcher implements QueryExecutor(copy), word, searchContext, scope, caseSensitively); + CacheManager.SERVICE.getInstance(myManager.getProject()).processFilesWithWord(new CommonProcessors.CollectProcessor(copy), word, searchContext, scope, caseSensitively); if (i == 0) { fileSet.addAll(copy); } @@ -364,21 +365,22 @@ public class PsiSearchHelperImpl implements PsiSearchHelper { else { fileSet = null; } - return myManager.getCacheManager().processFilesWithWord(new Processor() { + return CacheManager.SERVICE.getInstance(myManager.getProject()).processFilesWithWord(new Processor() { public boolean process(PsiFile psiFile) { if (fileSet != null && !fileSet.contains(psiFile)) { return true; } return processor.process(psiFile); } - }, words.get(words.size()-1), searchContext, scope, caseSensitively); + }, words.get(words.size() - 1), searchContext, scope, caseSensitively); } @NotNull public PsiFile[] findFilesWithPlainTextWords(@NotNull String word) { - return myManager.getCacheManager().getFilesWithWord(word, - UsageSearchContext.IN_PLAIN_TEXT, - GlobalSearchScope.projectScope(myManager.getProject()), true); + return CacheManager.SERVICE.getInstance(myManager.getProject()).getFilesWithWord(word, + UsageSearchContext.IN_PLAIN_TEXT, + GlobalSearchScope.projectScope(myManager.getProject()), + true); } @@ -407,7 +409,7 @@ public class PsiSearchHelperImpl implements PsiSearchHelper { final GlobalSearchScope theSearchScope = searchScope; PsiFile[] files = ApplicationManager.getApplication().runReadAction(new Computable() { public PsiFile[] compute() { - return myManager.getCacheManager().getFilesWithWord(wordToSearch, UsageSearchContext.IN_PLAIN_TEXT, theSearchScope, true); + return CacheManager.SERVICE.getInstance(myManager.getProject()).getFilesWithWord(wordToSearch, UsageSearchContext.IN_PLAIN_TEXT, theSearchScope, true); } }); @@ -462,20 +464,20 @@ public class PsiSearchHelperImpl implements PsiSearchHelper { } public void processAllFilesWithWord(@NotNull String word, @NotNull GlobalSearchScope scope, @NotNull Processor processor, final boolean caseSensitively) { - myManager.getCacheManager().processFilesWithWord(processor,word, UsageSearchContext.IN_CODE, scope, caseSensitively); + CacheManager.SERVICE.getInstance(myManager.getProject()).processFilesWithWord(processor, word, UsageSearchContext.IN_CODE, scope, caseSensitively); } public void processAllFilesWithWordInText(@NotNull final String word, @NotNull final GlobalSearchScope scope, @NotNull final Processor processor, final boolean caseSensitively) { - myManager.getCacheManager().processFilesWithWord(processor,word, UsageSearchContext.IN_PLAIN_TEXT, scope, caseSensitively); + CacheManager.SERVICE.getInstance(myManager.getProject()).processFilesWithWord(processor, word, UsageSearchContext.IN_PLAIN_TEXT, scope, caseSensitively); } public void processAllFilesWithWordInComments(@NotNull String word, @NotNull GlobalSearchScope scope, @NotNull Processor processor) { - myManager.getCacheManager().processFilesWithWord(processor, word, UsageSearchContext.IN_COMMENTS, scope, true); + CacheManager.SERVICE.getInstance(myManager.getProject()).processFilesWithWord(processor, word, UsageSearchContext.IN_COMMENTS, scope, true); } public void processAllFilesWithWordInLiterals(@NotNull String word, @NotNull GlobalSearchScope scope, @NotNull Processor processor) { - myManager.getCacheManager().processFilesWithWord(processor, word, UsageSearchContext.IN_STRINGS, scope, true); + CacheManager.SERVICE.getInstance(myManager.getProject()).processFilesWithWord(processor, word, UsageSearchContext.IN_STRINGS, scope, true); } private static class RequestWithProcessor { diff --git a/platform/platform-resources/src/META-INF/LangExtensions.xml b/platform/platform-resources/src/META-INF/LangExtensions.xml index c9caa03c4290..d549c98d8911 100644 --- a/platform/platform-resources/src/META-INF/LangExtensions.xml +++ b/platform/platform-resources/src/META-INF/LangExtensions.xml @@ -273,6 +273,9 @@ + + diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index b31b019d07e5..62cf40cf4a3c 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -91,6 +91,7 @@ import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleSettingsManager; import com.intellij.psi.impl.PsiManagerImpl; +import com.intellij.psi.impl.cache.CacheManager; import com.intellij.psi.impl.cache.impl.todo.TodoIndex; import com.intellij.psi.impl.source.PostprocessReformattingAspect; import com.intellij.psi.impl.source.PsiFileImpl; @@ -1315,7 +1316,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig ((PsiFileImpl)myFile).calcTreeElement(); //to load text //to initialize caches - myPsiManager.getCacheManager().getFilesWithWord(XXX, UsageSearchContext.IN_COMMENTS, GlobalSearchScope.allScope(project), true); + CacheManager.SERVICE.getInstance(project).getFilesWithWord(XXX, UsageSearchContext.IN_COMMENTS, GlobalSearchScope.allScope(project), true); List infos; try { diff --git a/plugins/groovy/src/org/intellij/plugins/intelliLang/inject/groovy/PatternEditorContextMembersProvider.java b/plugins/groovy/src/org/intellij/plugins/intelliLang/inject/groovy/PatternEditorContextMembersProvider.java index 403205f0cce3..94de04ef0adc 100644 --- a/plugins/groovy/src/org/intellij/plugins/intelliLang/inject/groovy/PatternEditorContextMembersProvider.java +++ b/plugins/groovy/src/org/intellij/plugins/intelliLang/inject/groovy/PatternEditorContextMembersProvider.java @@ -22,7 +22,7 @@ import com.intellij.openapi.util.Key; import com.intellij.patterns.compiler.PatternClassBean; import com.intellij.patterns.compiler.PatternCompilerFactory; import com.intellij.psi.*; -import com.intellij.psi.impl.PsiManagerEx; +import com.intellij.psi.impl.cache.CacheManager; import com.intellij.psi.impl.search.LowLevelSearchUtil; import com.intellij.psi.impl.source.resolve.FileContextUtil; import com.intellij.psi.scope.PsiScopeProcessor; @@ -156,10 +156,11 @@ public class PatternEditorContextMembersProvider extends NonCodeMembersContribut } }; final StringSearcher searcher = new StringSearcher("patternClass", true, true); - ((PsiManagerEx)beanClass.getManager()).getCacheManager().processFilesWithWord(new Processor() { + CacheManager.SERVICE.getInstance(beanClass.getProject()).processFilesWithWord(new Processor() { @Override public boolean process(PsiFile psiFile) { - LowLevelSearchUtil.processElementsContainingWordInElement(occurenceProcessor, psiFile, searcher, true, new EmptyProgressIndicator()); + LowLevelSearchUtil + .processElementsContainingWordInElement(occurenceProcessor, psiFile, searcher, true, new EmptyProgressIndicator()); return true; } }, searcher.getPattern(), UsageSearchContext.IN_FOREIGN_LANGUAGES, scope, searcher.isCaseSensitive()); diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/binding/FormReferencesSearcher.java b/plugins/ui-designer/src/com/intellij/uiDesigner/binding/FormReferencesSearcher.java index b25d5f5d8b31..01c553f94747 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/binding/FormReferencesSearcher.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/binding/FormReferencesSearcher.java @@ -9,6 +9,7 @@ import com.intellij.openapi.application.ReadAction; import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.module.Module; import com.intellij.openapi.progress.ProgressManager; +import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.NullableComputable; @@ -16,6 +17,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.impl.PsiManagerImpl; +import com.intellij.psi.impl.cache.CacheManager; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.search.SearchScope; @@ -230,7 +232,8 @@ public class FormReferencesSearcher implements QueryExecutor() { @Override @@ -249,12 +252,14 @@ public class FormReferencesSearcher implements QueryExecutor fileSet = new HashSet(); ApplicationManager.getApplication().runReadAction(new Runnable() { public void run() { - PsiFile[] filesWithWord = manager.getCacheManager().getFilesWithWord(words.get(0), UsageSearchContext.IN_PLAIN_TEXT, scope, true); + PsiFile[] filesWithWord = CacheManager.SERVICE.getInstance(project).getFilesWithWord(words.get(0), + UsageSearchContext.IN_PLAIN_TEXT, scope, + true); ContainerUtil.addAll(fileSet, filesWithWord); for (int i = 1; i < words.size(); i++) { ProgressManager.checkCanceled(); String word = words.get(i); - PsiFile[] filesWithThisWord = manager.getCacheManager().getFilesWithWord(word, UsageSearchContext.IN_PLAIN_TEXT, scope, true); + PsiFile[] filesWithThisWord = CacheManager.SERVICE.getInstance(project).getFilesWithWord(word, UsageSearchContext.IN_PLAIN_TEXT, scope, true); fileSet.retainAll(Arrays.asList(filesWithThisWord)); if (fileSet.isEmpty()) break; } @@ -278,13 +283,14 @@ public class FormReferencesSearcher implements QueryExecutor processor, final PropertiesFile propFile, final GlobalSearchScope globalSearchScope, final LocalSearchScope filterScope) { - GlobalSearchScope scope = GlobalSearchScope.projectScope(propFile.getProject()).intersectWith(globalSearchScope); + final Project project = propFile.getProject(); + GlobalSearchScope scope = GlobalSearchScope.projectScope(project).intersectWith(globalSearchScope); PsiManagerImpl manager = (PsiManagerImpl)propFile.getContainingFile().getManager(); final String baseName = propFile.getResourceBundle().getBaseName(); manager.startBatchFilesProcessingMode(); try { - PsiFile[] files = manager.getCacheManager().getFilesWithWord(baseName, UsageSearchContext.IN_PLAIN_TEXT, scope, true); + PsiFile[] files = CacheManager.SERVICE.getInstance(project).getFilesWithWord(baseName, UsageSearchContext.IN_PLAIN_TEXT, scope, true); for (PsiFile file : files) { ProgressManager.checkCanceled();