mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-14 10:18:46 +00:00
Use an annotation instead of implementations of interfaces
This commit is contained in:
1 parent
1346a830c1
commit
f6bbebfbd2
1 file changed
+50
-87
@@ -111,126 +111,89 @@ public class HandleLog {
|
||||
return true;
|
||||
}
|
||||
|
||||
static interface LoggingFramework {
|
||||
Class<? extends Annotation> getAnnotationClass();
|
||||
String getLoggerTypeName();
|
||||
String getLoggerFactoryMethodName();
|
||||
JCExpression createFactoryParameter(JavacNode typeNode, String typeName);
|
||||
}
|
||||
|
||||
// private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(TargetType.class);
|
||||
private static LoggingFramework COMMONS = new LoggingFramework() {
|
||||
@Override public Class<? extends Annotation> getAnnotationClass() {
|
||||
return lombok.jul.Log.class;
|
||||
}
|
||||
|
||||
@Override public String getLoggerTypeName() {
|
||||
return "org.apache.commons.logging.Log";
|
||||
}
|
||||
|
||||
@Override public String getLoggerFactoryMethodName() {
|
||||
return "org.apache.commons.logging.LogFactory.getLog";
|
||||
}
|
||||
|
||||
@Override public JCExpression createFactoryParameter(JavacNode typeNode, String typeName) {
|
||||
return chainDotsString(typeNode.getTreeMaker(), typeNode, typeName + ".class");
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handles the {@link lombok.commons.Log} annotation for javac.
|
||||
*/
|
||||
@ProviderFor(JavacAnnotationHandler.class)
|
||||
public static class HandleCommonsLog implements JavacAnnotationHandler<lombok.commons.Log> {
|
||||
@Override public boolean handle(AnnotationValues<lombok.commons.Log> annotation, JCAnnotation ast, JavacNode annotationNode) {
|
||||
return processAnnotation(COMMONS, annotation, annotationNode);
|
||||
return processAnnotation(LoggingFramework.COMMONS, annotation, annotationNode);
|
||||
}
|
||||
}
|
||||
|
||||
// private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("TargetType");
|
||||
private static LoggingFramework JUL = new LoggingFramework() {
|
||||
@Override public Class<? extends Annotation> getAnnotationClass() {
|
||||
return lombok.jul.Log.class;
|
||||
}
|
||||
|
||||
@Override public String getLoggerTypeName() {
|
||||
return "java.util.logging.Logger";
|
||||
}
|
||||
|
||||
@Override public String getLoggerFactoryMethodName() {
|
||||
return "java.util.logging.Logger.getLogger";
|
||||
}
|
||||
|
||||
@Override public JCExpression createFactoryParameter(JavacNode typeNode, String typeName) {
|
||||
return typeNode.getTreeMaker().Literal(typeName);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handles the {@link lombok.jul.Log} annotation for javac.
|
||||
*/
|
||||
@ProviderFor(JavacAnnotationHandler.class)
|
||||
public static class HandleJulLog implements JavacAnnotationHandler<lombok.jul.Log> {
|
||||
@Override public boolean handle(AnnotationValues<lombok.jul.Log> annotation, JCAnnotation ast, JavacNode annotationNode) {
|
||||
return processAnnotation(JUL, annotation, annotationNode);
|
||||
return processAnnotation(LoggingFramework.JUL, annotation, annotationNode);
|
||||
}
|
||||
}
|
||||
|
||||
// private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(TargetType.class);
|
||||
private static LoggingFramework LOG4J = new LoggingFramework() {
|
||||
@Override public Class<? extends Annotation> getAnnotationClass() {
|
||||
return lombok.jul.Log.class;
|
||||
}
|
||||
|
||||
@Override public String getLoggerTypeName() {
|
||||
return "org.apache.log4j.Logger";
|
||||
}
|
||||
|
||||
@Override public String getLoggerFactoryMethodName() {
|
||||
return "org.apache.log4j.Logger.getLogger";
|
||||
}
|
||||
|
||||
@Override public JCExpression createFactoryParameter(JavacNode typeNode, String typeName) {
|
||||
return chainDotsString(typeNode.getTreeMaker(), typeNode, typeName + ".class");
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handles the {@link lombok.log4j.Log} annotation for javac.
|
||||
*/
|
||||
@ProviderFor(JavacAnnotationHandler.class)
|
||||
public static class HandleLog4jLog implements JavacAnnotationHandler<lombok.log4j.Log> {
|
||||
@Override public boolean handle(AnnotationValues<lombok.log4j.Log> annotation, JCAnnotation ast, JavacNode annotationNode) {
|
||||
return processAnnotation(LOG4J, annotation, annotationNode);
|
||||
return processAnnotation(LoggingFramework.LOG4J, annotation, annotationNode);
|
||||
}
|
||||
}
|
||||
|
||||
// private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(TargetType.class);
|
||||
private static LoggingFramework SLF4J = new LoggingFramework() {
|
||||
@Override public Class<? extends Annotation> getAnnotationClass() {
|
||||
return lombok.slf4j.Log.class;
|
||||
}
|
||||
|
||||
@Override public String getLoggerTypeName() {
|
||||
return "org.slf4j.Logger";
|
||||
}
|
||||
|
||||
@Override public String getLoggerFactoryMethodName() {
|
||||
return "org.slf4j.LoggerFactory.getLogger";
|
||||
}
|
||||
|
||||
@Override public JCExpression createFactoryParameter(JavacNode typeNode, String typeName) {
|
||||
return chainDotsString(typeNode.getTreeMaker(), typeNode, typeName + ".class");
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handles the {@link lombok.slf4j.Log} annotation for javac.
|
||||
*/
|
||||
@ProviderFor(JavacAnnotationHandler.class)
|
||||
public static class HandleSlf4jLog implements JavacAnnotationHandler<lombok.slf4j.Log> {
|
||||
@Override public boolean handle(AnnotationValues<lombok.slf4j.Log> annotation, JCAnnotation ast, JavacNode annotationNode) {
|
||||
return processAnnotation(SLF4J, annotation, annotationNode);
|
||||
return processAnnotation(LoggingFramework.SLF4J, annotation, annotationNode);
|
||||
}
|
||||
}
|
||||
|
||||
enum LoggingFramework {
|
||||
// private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(TargetType.class);
|
||||
COMMONS(lombok.jul.Log.class, "org.apache.commons.logging.Log", "org.apache.commons.logging.LogFactory.getLog"),
|
||||
|
||||
// private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("TargetType");
|
||||
JUL(lombok.jul.Log.class, "java.util.logging.Logger", "java.util.logging.Logger.getLogger") {
|
||||
@Override public JCExpression createFactoryParameter(JavacNode typeNode, String typeName) {
|
||||
return typeNode.getTreeMaker().Literal(typeName);
|
||||
}
|
||||
},
|
||||
|
||||
// private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(TargetType.class);
|
||||
LOG4J(lombok.jul.Log.class, "org.apache.log4j.Logger", "org.apache.log4j.Logger.getLogger"),
|
||||
|
||||
// private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(TargetType.class);
|
||||
SLF4J(lombok.slf4j.Log.class, "org.slf4j.Logger", "org.slf4j.LoggerFactory.getLogger"),
|
||||
|
||||
;
|
||||
|
||||
private final Class<? extends Annotation> annotationClass;
|
||||
private final String loggerTypeName;
|
||||
private final String loggerFactoryName;
|
||||
|
||||
LoggingFramework(Class<? extends Annotation> annotationClass, String loggerTypeName, String loggerFactoryName) {
|
||||
this.annotationClass = annotationClass;
|
||||
this.loggerTypeName = loggerTypeName;
|
||||
this.loggerFactoryName = loggerFactoryName;
|
||||
}
|
||||
|
||||
final Class<? extends Annotation> getAnnotationClass() {
|
||||
return annotationClass;
|
||||
}
|
||||
|
||||
final String getLoggerTypeName() {
|
||||
return loggerTypeName;
|
||||
}
|
||||
|
||||
final String getLoggerFactoryMethodName() {
|
||||
return loggerFactoryName;
|
||||
}
|
||||
|
||||
JCExpression createFactoryParameter(JavacNode typeNode, String typeName) {
|
||||
return chainDotsString(typeNode.getTreeMaker(), typeNode, typeName + ".class");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user