@Override
public void performInjectionOnAnnotatedClass(SourceUnit source, ClassNode classNode) {
if( classNode.getNodeMetaData(Slf4j.class) != null) return;
String packageName = Slf4j.class.getPackage().getName();
for (AnnotationNode annotationNode : classNode.getAnnotations()) {
if(annotationNode.getClassNode().getPackageName().equals(packageName)) {
return;
}
}
FieldNode logField = classNode.getField("log");
if(logField != null) {
if(!Modifier.isPrivate(logField.getModifiers())) {
return;
}
}
AnnotationNode annotationNode = new AnnotationNode(ClassHelper.make(Slf4j.class));
LogASTTransformation logASTTransformation = new LogASTTransformation();
logASTTransformation.setCompilationUnit( new CompilationUnit(new GroovyClassLoader(getClass().getClassLoader())) );
logASTTransformation.visit(new ASTNode[]{ annotationNode, classNode}, source);
classNode.putNodeMetaData(Slf4j.class, annotationNode);
}