package de.plushnikov.intellij.plugin.processor; import com.intellij.ide.util.PropertiesComponent; import com.intellij.psi.PsiAnnotation; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiField; import de.plushnikov.intellij.plugin.problem.LombokProblem; import org.jetbrains.annotations.NotNull; import java.lang.annotation.Annotation; import java.util.Collection; import java.util.List; /** * @author Plushnikov Michail */ public interface Processor { @NotNull Class<? extends Annotation>[] getSupportedAnnotationClasses(); @NotNull Class<? extends PsiElement> getSupportedClass(); @NotNull Collection<LombokProblem> verifyAnnotation(@NotNull PsiAnnotation psiAnnotation); boolean isEnabled(@NotNull PropertiesComponent propertiesComponent); boolean isShouldGenerateFullBodyBlock(); @NotNull List<? super PsiElement> process(@NotNull PsiClass psiClass); LombokPsiElementUsage checkFieldUsage(@NotNull PsiField psiField, @NotNull PsiAnnotation psiAnnotation); }