diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/DeannotateIntentionAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/DeannotateIntentionAction.java index 1781410137ff..84831e2dc6e2 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/DeannotateIntentionAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/DeannotateIntentionAction.java @@ -39,6 +39,8 @@ import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + public class DeannotateIntentionAction implements IntentionAction { private static final Logger LOG = Logger.getInstance("#" + DeannotateIntentionAction.class.getName()); private String myAnnotationName = null; @@ -59,12 +61,15 @@ public class DeannotateIntentionAction implements IntentionAction { public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) { PsiModifierListOwner listOwner = getContainer(editor, file); if (listOwner != null) { - final PsiAnnotation[] annotations = ExternalAnnotationsManager.getInstance(project).findExternalAnnotations(listOwner); + final ExternalAnnotationsManager externalAnnotationsManager = ExternalAnnotationsManager.getInstance(project); + final PsiAnnotation[] annotations = externalAnnotationsManager.findExternalAnnotations(listOwner); if (annotations != null && annotations.length > 0) { if (annotations.length == 1) { myAnnotationName = annotations[0].getQualifiedName(); } - final VirtualFile virtualFile = annotations[0].getContainingFile().getVirtualFile(); + final List files = externalAnnotationsManager.findExternalAnnotationsFiles(listOwner); + if (files == null || files.isEmpty()) return false; + final VirtualFile virtualFile = files.get(0).getVirtualFile(); return virtualFile != null && (virtualFile.isWritable() || virtualFile.isInLocalFileSystem()); } } diff --git a/java/java-psi-api/src/com/intellij/codeInsight/BaseExternalAnnotationsManager.java b/java/java-psi-api/src/com/intellij/codeInsight/BaseExternalAnnotationsManager.java index 1202f12c4720..a04f9b94c047 100644 --- a/java/java-psi-api/src/com/intellij/codeInsight/BaseExternalAnnotationsManager.java +++ b/java/java-psi-api/src/com/intellij/codeInsight/BaseExternalAnnotationsManager.java @@ -205,8 +205,9 @@ public abstract class BaseExternalAnnotationsManager extends ExternalAnnotations @NotNull protected abstract List getExternalAnnotationsRoots(@NotNull VirtualFile libraryFile); + @Override @Nullable - protected List findExternalAnnotationsFiles(@NotNull PsiModifierListOwner listOwner) { + public List findExternalAnnotationsFiles(@NotNull PsiModifierListOwner listOwner) { final PsiFile containingFile = listOwner.getContainingFile(); if (!(containingFile instanceof PsiJavaFile)) { return null; diff --git a/java/java-psi-api/src/com/intellij/codeInsight/ExternalAnnotationsManager.java b/java/java-psi-api/src/com/intellij/codeInsight/ExternalAnnotationsManager.java index 67fd1cffb3e0..83ee339ce5b0 100644 --- a/java/java-psi-api/src/com/intellij/codeInsight/ExternalAnnotationsManager.java +++ b/java/java-psi-api/src/com/intellij/codeInsight/ExternalAnnotationsManager.java @@ -28,6 +28,8 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + public abstract class ExternalAnnotationsManager { @NonNls public static final String ANNOTATIONS_XML = "annotations.xml"; @@ -58,4 +60,7 @@ public abstract class ExternalAnnotationsManager { public abstract AnnotationPlace chooseAnnotationsPlace(@NotNull PsiElement element); + @Nullable + public abstract List findExternalAnnotationsFiles(@NotNull PsiModifierListOwner listOwner); + }