package de.plushnikov.intellij.plugin.extension;
import com.intellij.codeInspection.canBeFinal.CanBeFinalHandler;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiMember;
import com.intellij.psi.util.PsiTreeUtil;
import de.plushnikov.intellij.plugin.util.PsiAnnotationSearchUtil;
import lombok.Data;
import lombok.Setter;
import lombok.Value;
/**
* Handler to produce a veto for elements with lombok methods behind
*/
public class LombokCanBeFinalHandler extends CanBeFinalHandler {
@Override
public boolean canBeFinal(PsiMember member) {
if (member instanceof PsiField) {
if (PsiAnnotationSearchUtil.isAnnotatedWith(member, Setter.class)) {
return false;
}
final PsiClass psiClass = PsiTreeUtil.getParentOfType(member, PsiClass.class);
if (null != psiClass && PsiAnnotationSearchUtil.isAnnotatedWith(psiClass, Setter.class, Data.class, Value.class)) {
return false;
}
}
return true;
}
}