EditorConfig documentation test
[idea/community.git] / java / java-impl / src / com / intellij / codeInsight / externalAnnotation / AnnotationProvider.java
1 // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.codeInsight.externalAnnotation;
3
4 import com.intellij.codeInsight.intention.AddAnnotationFix;
5 import com.intellij.openapi.extensions.ExtensionPointName;
6 import com.intellij.openapi.project.Project;
7 import com.intellij.psi.PsiModifierListOwner;
8 import com.intellij.util.ArrayUtilRt;
9 import org.jetbrains.annotations.NotNull;
10
11 public interface AnnotationProvider {
12   ExtensionPointName<AnnotationProvider> KEY = ExtensionPointName.create("com.intellij.java.externalAnnotation");
13
14   @NotNull
15   String getName(Project project);
16
17   boolean isAvailable(PsiModifierListOwner owner);
18
19   @NotNull
20   default String[] getAnnotationsToRemove(Project project) {
21     return ArrayUtilRt.EMPTY_STRING_ARRAY;
22   }
23
24   @NotNull
25   default AddAnnotationFix createFix(@NotNull PsiModifierListOwner owner) {
26     Project project = owner.getProject();
27     return new AddAnnotationFix(getName(project), owner, getAnnotationsToRemove(project));
28   }
29 }