summaryrefslogtreecommitdiff
path: root/android/src
diff options
context:
space:
mode:
authorAndrew Shulaev <ddrone@google.com>2015-08-03 21:19:32 +0000
committerandroid-build-merger <android-build-merger@google.com>2015-08-03 21:19:32 +0000
commitd815dbb04d7435ac2bdbe942eb30d16e0ff019b1 (patch)
treed1c7e041fbb21e64a5978e5a16c1218e91526465 /android/src
parentd9502968a45bf06f695951e8ecfabaed8557e59e (diff)
parent7b5c3b472ea0843bb0c64393cb1cc445770e4542 (diff)
downloadidea-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.java20
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;