diff options
author | Andrew Shulaev <ddrone@google.com> | 2015-08-03 21:19:32 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2015-08-03 21:19:32 +0000 |
commit | d815dbb04d7435ac2bdbe942eb30d16e0ff019b1 (patch) | |
tree | d1c7e041fbb21e64a5978e5a16c1218e91526465 /android/src | |
parent | d9502968a45bf06f695951e8ecfabaed8557e59e (diff) | |
parent | 7b5c3b472ea0843bb0c64393cb1cc445770e4542 (diff) | |
download | idea-d815dbb04d7435ac2bdbe942eb30d16e0ff019b1.tar.gz |
Merge "Fix IndexNotReadyException in layout editor" into studio-1.4-dev automerge: 9f218ff
automerge: 7b5c3b4
* commit '7b5c3b472ea0843bb0c64393cb1cc445770e4542':
Fix IndexNotReadyException in layout editor
Diffstat (limited to 'android/src')
-rw-r--r-- | android/src/com/android/tools/idea/configurations/ActivityMenuAction.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/android/src/com/android/tools/idea/configurations/ActivityMenuAction.java b/android/src/com/android/tools/idea/configurations/ActivityMenuAction.java index bc2c8705100..aecc8af6c0f 100644 --- a/android/src/com/android/tools/idea/configurations/ActivityMenuAction.java +++ b/android/src/com/android/tools/idea/configurations/ActivityMenuAction.java @@ -28,6 +28,7 @@ import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.openapi.module.Module; +import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -153,9 +154,9 @@ public class ActivityMenuAction extends FlatComboAction { String layoutName = ResourceHelper.getResourceName(file); Project project = module.getProject(); String rLayoutFqcn = StringUtil.notNullize(pkg) + '.' + R_CLASS + '.' + ResourceType.LAYOUT.getName(); - PsiClass layoutClass = JavaPsiFacade.getInstance(project).findClass(rLayoutFqcn, GlobalSearchScope.projectScope(project)); + PsiClass layoutClass = findClassSafe(JavaPsiFacade.getInstance(project), rLayoutFqcn, GlobalSearchScope.projectScope(project)); if (layoutClass != null) { - PsiClass activityBase = JavaPsiFacade.getInstance(project).findClass(CLASS_ACTIVITY, GlobalSearchScope.allScope(project)); + PsiClass activityBase = findClassSafe(JavaPsiFacade.getInstance(project), CLASS_ACTIVITY, GlobalSearchScope.allScope(project)); PsiField field = layoutClass.findFieldByName(layoutName, false); if (field != null && activityBase != null) { Iterable<PsiReference> allReferences = SearchUtils.findAllReferences(field, GlobalSearchScope.projectScope(project)); @@ -195,6 +196,21 @@ public class ActivityMenuAction extends FlatComboAction { return group; } + /** + * Try to look up class by name and scope using JavaPsiFacade, return null if IndexNotReadyException is thrown. + */ + @Nullable + private static PsiClass findClassSafe(@NotNull JavaPsiFacade facade, @NotNull String qualifiedName, GlobalSearchScope scope) { + PsiClass result; + try { + result = facade.findClass(qualifiedName, scope); + } + catch (IndexNotReadyException e) { + result = null; + } + return result; + } + private static class ChooseActivityAction extends AnAction { private final RenderContext myRenderContext; private String myActivity; |