From f258229b88a797694320b1794a4084998411a94b Mon Sep 17 00:00:00 2001 From: Roel Spilker Date: Mon, 22 Nov 2010 23:52:34 +0100 Subject: - Renamed the diverse @Log annotations to give them distinct names - Removed the option to specify a different class to log on - Updated tests and documentation --- src/core/lombok/eclipse/handlers/HandleLog.java | 50 +++++--------- .../lombok/extern/apachecommons/CommonsLog.java | 57 ++++++++++++++++ src/core/lombok/extern/apachecommons/Log.java | 77 ---------------------- src/core/lombok/extern/java/Log.java | 56 ++++++++++++++++ src/core/lombok/extern/jul/Log.java | 76 --------------------- src/core/lombok/extern/log4j/Log.java | 77 ---------------------- src/core/lombok/extern/log4j/Log4j.java | 57 ++++++++++++++++ src/core/lombok/extern/slf4j/Log.java | 75 --------------------- src/core/lombok/extern/slf4j/Slf4j.java | 55 ++++++++++++++++ src/core/lombok/javac/handlers/HandleLog.java | 49 +++++--------- 10 files changed, 260 insertions(+), 369 deletions(-) create mode 100644 src/core/lombok/extern/apachecommons/CommonsLog.java delete mode 100644 src/core/lombok/extern/apachecommons/Log.java create mode 100644 src/core/lombok/extern/java/Log.java delete mode 100644 src/core/lombok/extern/jul/Log.java delete mode 100644 src/core/lombok/extern/log4j/Log.java create mode 100644 src/core/lombok/extern/log4j/Log4j.java delete mode 100644 src/core/lombok/extern/slf4j/Log.java create mode 100644 src/core/lombok/extern/slf4j/Slf4j.java (limited to 'src') diff --git a/src/core/lombok/eclipse/handlers/HandleLog.java b/src/core/lombok/eclipse/handlers/HandleLog.java index 1df33e89..be856208 100644 --- a/src/core/lombok/eclipse/handlers/HandleLog.java +++ b/src/core/lombok/eclipse/handlers/HandleLog.java @@ -52,12 +52,6 @@ public class HandleLog { } public static boolean processAnnotation(LoggingFramework framework, AnnotationValues annotation, Annotation source, EclipseNode annotationNode) { - Expression annotationValue = (Expression) annotation.getActualExpression("value"); - if (annotationValue != null && !(annotationValue instanceof ClassLiteralAccess)) { - return true; - } - ClassLiteralAccess loggingType = (ClassLiteralAccess)annotationValue; - EclipseNode owner = annotationNode.up(); switch (owner.getKind()) { case TYPE: @@ -78,9 +72,7 @@ public class HandleLog { return true; } - if (loggingType == null) { - loggingType = selfType(owner, source); - } + ClassLiteralAccess loggingType = selfType(owner, source); injectField(owner, createField(framework, source, loggingType)); owner.rebuild(); @@ -158,51 +150,51 @@ public class HandleLog { } /** - * Handles the {@link lombok.extern.apachecommons.Log} annotation for Eclipse. + * Handles the {@link lombok.extern.apachecommons.CommonsLog} annotation for Eclipse. */ @ProviderFor(EclipseAnnotationHandler.class) - public static class HandleCommonsLog implements EclipseAnnotationHandler { - @Override public boolean handle(AnnotationValues annotation, Annotation source, EclipseNode annotationNode) { + public static class HandleCommonsLog implements EclipseAnnotationHandler { + @Override public boolean handle(AnnotationValues annotation, Annotation source, EclipseNode annotationNode) { return processAnnotation(LoggingFramework.COMMONS, annotation, source, annotationNode); } } /** - * Handles the {@link lombok.extern.jul.Log} annotation for Eclipse. + * Handles the {@link lombok.extern.java.Log} annotation for Eclipse. */ @ProviderFor(EclipseAnnotationHandler.class) - public static class HandleJulLog implements EclipseAnnotationHandler { - @Override public boolean handle(AnnotationValues annotation, Annotation source, EclipseNode annotationNode) { + public static class HandleJulLog implements EclipseAnnotationHandler { + @Override public boolean handle(AnnotationValues annotation, Annotation source, EclipseNode annotationNode) { return processAnnotation(LoggingFramework.JUL, annotation, source, annotationNode); } } /** - * Handles the {@link lombok.extern.log4j.Log} annotation for Eclipse. + * Handles the {@link lombok.extern.log4j.Log4j} annotation for Eclipse. */ @ProviderFor(EclipseAnnotationHandler.class) - public static class HandleLog4jLog implements EclipseAnnotationHandler { - @Override public boolean handle(AnnotationValues annotation, Annotation source, EclipseNode annotationNode) { + public static class HandleLog4jLog implements EclipseAnnotationHandler { + @Override public boolean handle(AnnotationValues annotation, Annotation source, EclipseNode annotationNode) { return processAnnotation(LoggingFramework.LOG4J, annotation, source, annotationNode); } } /** - * Handles the {@link lombok.extern.slf4j.Log} annotation for Eclipse. + * Handles the {@link lombok.extern.slf4j.Slf4j} annotation for Eclipse. */ @ProviderFor(EclipseAnnotationHandler.class) - public static class HandleSlf4jLog implements EclipseAnnotationHandler { - @Override public boolean handle(AnnotationValues annotation, Annotation source, EclipseNode annotationNode) { + public static class HandleSlf4jLog implements EclipseAnnotationHandler { + @Override public boolean handle(AnnotationValues annotation, Annotation source, EclipseNode annotationNode) { return processAnnotation(LoggingFramework.SLF4J, annotation, source, annotationNode); } } enum LoggingFramework { // private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(TargetType.class); - COMMONS(lombok.extern.jul.Log.class, "org.apache.commons.logging.Log", "org.apache.commons.logging.LogFactory", "getLog"), + COMMONS("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.class.getName()); - JUL(lombok.extern.jul.Log.class, "java.util.logging.Logger", "java.util.logging.Logger", "getLogger") { + JUL("java.util.logging.Logger", "java.util.logging.Logger", "getLogger") { @Override public Expression createFactoryParameter(ClassLiteralAccess type, Annotation source) { int pS = source.sourceStart, pE = source.sourceEnd; long p = (long)pS << 32 | pE; @@ -222,29 +214,23 @@ public class HandleLog { }, // private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(TargetType.class); - LOG4J(lombok.extern.jul.Log.class, "org.apache.log4j.Logger", "org.apache.log4j.Logger", "getLogger"), + LOG4J("org.apache.log4j.Logger", "org.apache.log4j.Logger", "getLogger"), // private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(TargetType.class); - SLF4J(lombok.extern.slf4j.Log.class, "org.slf4j.Logger", "org.slf4j.LoggerFactory", "getLogger"), + SLF4J("org.slf4j.Logger", "org.slf4j.LoggerFactory", "getLogger"), ; - private final Class annotationClass; private final String loggerTypeName; private final String loggerFactoryTypeName; private final String loggerFactoryMethodName; - LoggingFramework(Class annotationClass, String loggerTypeName, String loggerFactoryTypeName, String loggerFactoryMethodName) { - this.annotationClass = annotationClass; + LoggingFramework(String loggerTypeName, String loggerFactoryTypeName, String loggerFactoryMethodName) { this.loggerTypeName = loggerTypeName; this.loggerFactoryTypeName = loggerFactoryTypeName; this.loggerFactoryMethodName = loggerFactoryMethodName; } - final Class getAnnotationClass() { - return annotationClass; - } - final String getLoggerTypeName() { return loggerTypeName; } diff --git a/src/core/lombok/extern/apachecommons/CommonsLog.java b/src/core/lombok/extern/apachecommons/CommonsLog.java new file mode 100644 index 00000000..452f97f0 --- /dev/null +++ b/src/core/lombok/extern/apachecommons/CommonsLog.java @@ -0,0 +1,57 @@ +/* + * Copyright © 2010 Reinier Zwitserloot, Roel Spilker and Robbert Jan Grootjans. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package lombok.extern.apachecommons; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Causes lombok to generate a logger field. + * Example: + *
+ * @CommonsLog
+ * public class LogExample {
+ * }
+ * 
+ * + * will generate: + * + *
+ * public class LogExample {
+ *     private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
+ * }
+ * 
+ * + * This annotation is valid for classes and enumerations.
+ * + * @see org.apache.commons.logging.Log org.apache.commons.logging.Log + * @see org.apache.commons.logging.LogFactory#getLog(java.lang.Class) org.apache.commons.logging.LogFactory.getLog(Class target) + * @see lombok.extern.java.Log @Log + * @see lombok.extern.log4j.Log4j @Log4j + * @see lombok.extern.slf4j.Slf4j @Slf4j + */ +@Retention(RetentionPolicy.SOURCE) +@Target(ElementType.TYPE) +public @interface CommonsLog { +} \ No newline at end of file diff --git a/src/core/lombok/extern/apachecommons/Log.java b/src/core/lombok/extern/apachecommons/Log.java deleted file mode 100644 index 87e7ab2c..00000000 --- a/src/core/lombok/extern/apachecommons/Log.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright © 2010 Reinier Zwitserloot, Roel Spilker and Robbert Jan Grootjans. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package lombok.extern.apachecommons; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Causes lombok to generate a logger field. - * Example: - *
- * @Log
- * public class LogExample {
- * }
- * 
- * - * will generate: - * - *
- * public class LogExample {
- *     private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
- * }
- * 
- * - * If you do not want to use the annotated class as the logger parameter, you can specify an alternate class. - * Example: - *
- * @Log(java.util.List.class)
- * public class LogExample {
- * }
- * 
- * - * will generate: - * - *
- * public class LogExample {
- *     private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(java.util.List.class);
- * }
- * 
- * - * This annotation is valid for classes and enumerations.
- * - * @see org.apache.commons.logging.Log org.apache.commons.logging.Log - * @see org.apache.commons.logging.LogFactory#getLog(java.lang.Class) org.apache.commons.logging.LogFactory.getLog(Class target) - * @see lombok.extern.jul.Log lombok.extern.jul.Log - * @see lombok.extern.log4j.Log lombok.extern.log4j.Log - * @see lombok.extern.slf4j.Log lombok.extern.slf4j.Log - */ -@Retention(RetentionPolicy.SOURCE) -@Target(ElementType.TYPE) -public @interface Log { - /** - * If you do not want to use the annotated class as the logger parameter, you can specify an alternate class here. - */ - Class value() default void.class; -} \ No newline at end of file diff --git a/src/core/lombok/extern/java/Log.java b/src/core/lombok/extern/java/Log.java new file mode 100644 index 00000000..e6e01736 --- /dev/null +++ b/src/core/lombok/extern/java/Log.java @@ -0,0 +1,56 @@ +/* + * Copyright © 2010 Reinier Zwitserloot, Roel Spilker and Robbert Jan Grootjans. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package lombok.extern.java; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Causes lombok to generate a logger field. + * Example: + *
+ * @Log
+ * public class LogExample {
+ * }
+ * 
+ * + * will generate: + * + *
+ * public class LogExample {
+ *     private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
+ * }
+ * 
+ * + * This annotation is valid for classes and enumerations.
+ * @see java.util.logging.Logger java.util.logging.Logger + * @see java.util.logging.Logger#getLogger(java.lang.String) java.util.logging.Logger.getLogger(String name) + * @see lombok.extern.apachecommons.CommonsLog @CommonsLog + * @see lombok.extern.log4j.Log4j @Log4j + * @see lombok.extern.slf4j.Slf4j @Slf4j + */ +@Retention(RetentionPolicy.SOURCE) +@Target(ElementType.TYPE) +public @interface Log { +} \ No newline at end of file diff --git a/src/core/lombok/extern/jul/Log.java b/src/core/lombok/extern/jul/Log.java deleted file mode 100644 index 8b2ec3af..00000000 --- a/src/core/lombok/extern/jul/Log.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright © 2010 Reinier Zwitserloot, Roel Spilker and Robbert Jan Grootjans. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package lombok.extern.jul; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Causes lombok to generate a logger field. - * Example: - *
- * @Log
- * public class LogExample {
- * }
- * 
- * - * will generate: - * - *
- * public class LogExample {
- *     private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
- * }
- * 
- * - * If you do not want to use the annotated class as the logger parameter, you can specify an alternate class. - * Example: - *
- * @Log(java.util.List.class)
- * public class LogExample {
- * }
- * 
- * - * will generate: - * - *
- * public class LogExample {
- *     private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(java.util.List.class.getName());
- * }
- * 
- * - * This annotation is valid for classes and enumerations.
- * @see java.util.logging.Logger java.util.logging.Logger - * @see java.util.logging.Logger#getLogger(java.lang.String) java.util.logging.Logger.getLogger(String name) - * @see lombok.extern.apachecommons.Log lombok.extern.apachecommons.Log - * @see lombok.extern.log4j.Log lombok.extern.log4j.Log - * @see lombok.extern.slf4j.Log lombok.extern.slf4j.Log - */ -@Retention(RetentionPolicy.SOURCE) -@Target(ElementType.TYPE) -public @interface Log { - /** - * If you do not want to use the annotated class as the logger parameter, you can specify an alternate class here. - */ - Class value() default void.class; -} \ No newline at end of file diff --git a/src/core/lombok/extern/log4j/Log.java b/src/core/lombok/extern/log4j/Log.java deleted file mode 100644 index 9d07f46d..00000000 --- a/src/core/lombok/extern/log4j/Log.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright © 2010 Reinier Zwitserloot, Roel Spilker and Robbert Jan Grootjans. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package lombok.extern.log4j; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Causes lombok to generate a logger field. - * Example: - *
- * @Log
- * public class LogExample {
- * }
- * 
- * - * will generate: - * - *
- * public class LogExample {
- *     private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);
- * }
- * 
- * - * If you do not want to use the annotated class as the logger parameter, you can specify an alternate class. - * Example: - *
- * @Log(java.util.List.class)
- * public class LogExample {
- * }
- * 
- * - * will generate: - * - *
- * public class LogExample {
- *     private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(java.util.List.class);
- * }
- * 
- * - * This annotation is valid for classes and enumerations.
- * - * @see org.apache.log4j.Logger org.apache.log4j.Logger - * @see org.apache.log4j.Logger#getLogger(java.lang.Class) org.apache.log4j.Logger.getLogger(Class target) - * @see lombok.extern.apachecommons.Log lombok.extern.apachecommons.Log - * @see lombok.extern.jul.Log lombok.extern.jul.Log - * @see lombok.extern.slf4j.Log lombok.extern.slf4j.Log - */ -@Retention(RetentionPolicy.SOURCE) -@Target(ElementType.TYPE) -public @interface Log { - /** - * If you do not want to use the annotated class as the logger parameter, you can specify an alternate class here. - */ - Class value() default void.class; -} \ No newline at end of file diff --git a/src/core/lombok/extern/log4j/Log4j.java b/src/core/lombok/extern/log4j/Log4j.java new file mode 100644 index 00000000..eeaf80be --- /dev/null +++ b/src/core/lombok/extern/log4j/Log4j.java @@ -0,0 +1,57 @@ +/* + * Copyright © 2010 Reinier Zwitserloot, Roel Spilker and Robbert Jan Grootjans. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package lombok.extern.log4j; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Causes lombok to generate a logger field. + * Example: + *
+ * @Log4j
+ * public class LogExample {
+ * }
+ * 
+ * + * will generate: + * + *
+ * public class LogExample {
+ *     private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);
+ * }
+ * 
+ * + * This annotation is valid for classes and enumerations.
+ * + * @see org.apache.log4j.Logger org.apache.log4j.Logger + * @see org.apache.log4j.Logger#getLogger(java.lang.Class) org.apache.log4j.Logger.getLogger(Class target) + * @see lombok.extern.apachecommons.CommonsLog @CommonsLog + * @see lombok.extern.java.Log @Log + * @see lombok.extern.slf4j.Slf4j @Slf4j + */ +@Retention(RetentionPolicy.SOURCE) +@Target(ElementType.TYPE) +public @interface Log4j { +} \ No newline at end of file diff --git a/src/core/lombok/extern/slf4j/Log.java b/src/core/lombok/extern/slf4j/Log.java deleted file mode 100644 index 63307008..00000000 --- a/src/core/lombok/extern/slf4j/Log.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright © 2010 Reinier Zwitserloot, Roel Spilker and Robbert Jan Grootjans. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package lombok.extern.slf4j; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -/** - * Causes lombok to generate a logger field. - * Example: - *
- * @Log
- * public class LogExample {
- * }
- * 
- * - * will generate: - * - *
- * public class LogExample {
- *     private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
- * }
- * 
- * - * If you do not want to use the annotated class as the logger parameter, you can specify an alternate class. - * Example: - *
- * @Log(java.util.List.class)
- * public class LogExample {
- * }
- * 
- * - * will generate: - * - *
- * public class LogExample {
- *     private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(java.util.List.class); 
- * }
- * 
- * - * This annotation is valid for classes and enumerations.
- * @see org.slf4j.Logger org.slf4j.Logger - * @see org.slf4j.LoggerFactory#getLogger(java.lang.Class) org.slf4j.LoggerFactory.getLogger(Class target) - * @see lombok.extern.apachecommons.Log lombok.extern.apachecommons.Log - * @see lombok.extern.jul.Log lombok.extern.jul.Log - * @see lombok.extern.log4j.Log lombok.extern.log4j.Log - */ -@Retention(RetentionPolicy.SOURCE) -@Target(ElementType.TYPE) -public @interface Log { - /** - * If you do not want to use the annotated class as the logger parameter, you can specify an alternate class here. - */ - Class value() default void.class; -} diff --git a/src/core/lombok/extern/slf4j/Slf4j.java b/src/core/lombok/extern/slf4j/Slf4j.java new file mode 100644 index 00000000..4986fd0c --- /dev/null +++ b/src/core/lombok/extern/slf4j/Slf4j.java @@ -0,0 +1,55 @@ +/* + * Copyright © 2010 Reinier Zwitserloot, Roel Spilker and Robbert Jan Grootjans. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package lombok.extern.slf4j; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +/** + * Causes lombok to generate a logger field. + * Example: + *
+ * @Slf4j
+ * public class LogExample {
+ * }
+ * 
+ * + * will generate: + * + *
+ * public class LogExample {
+ *     private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
+ * }
+ * 
+ * + * This annotation is valid for classes and enumerations.
+ * @see org.slf4j.Logger org.slf4j.Logger + * @see org.slf4j.LoggerFactory#getLogger(java.lang.Class) org.slf4j.LoggerFactory.getLogger(Class target) + * @see lombok.extern.apachecommons.CommonsLog @CommonsLog + * @see lombok.extern.java.Log @Log + * @see lombok.extern.log4j.Log4j @Log4j + */ +@Retention(RetentionPolicy.SOURCE) +@Target(ElementType.TYPE) +public @interface Slf4j { +} diff --git a/src/core/lombok/javac/handlers/HandleLog.java b/src/core/lombok/javac/handlers/HandleLog.java index c72892cc..53d327af 100644 --- a/src/core/lombok/javac/handlers/HandleLog.java +++ b/src/core/lombok/javac/handlers/HandleLog.java @@ -52,19 +52,6 @@ public class HandleLog { public static boolean processAnnotation(LoggingFramework framework, AnnotationValues annotation, JavacNode annotationNode) { markAnnotationAsProcessed(annotationNode, framework.getAnnotationClass()); -// String loggingClassName = annotation.getRawExpression("value"); -// if (loggingClassName == null) loggingClassName = "void"; -// if (loggingClassName.endsWith(".class")) loggingClassName = loggingClassName.substring(0, loggingClassName.length() - 6); - - JCExpression annotationValue = (JCExpression) annotation.getActualExpression("value"); - JCFieldAccess loggingType = null; - if (annotationValue != null) { - if (!(annotationValue instanceof JCFieldAccess)) return true; - loggingType = (JCFieldAccess) annotationValue; - if (!loggingType.name.contentEquals("class")) return true; - } - - JavacNode typeNode = annotationNode.up(); switch (typeNode.getKind()) { case TYPE: @@ -78,9 +65,7 @@ public class HandleLog { return true; } - if (loggingType == null) { - loggingType = selfType(typeNode); - } + JCFieldAccess loggingType = selfType(typeNode); createField(framework, typeNode, loggingType); return true; default: @@ -114,11 +99,11 @@ public class HandleLog { } /** - * Handles the {@link lombok.extern.apachecommons.Log} annotation for javac. + * Handles the {@link lombok.extern.apachecommons.CommonsLog} annotation for javac. */ @ProviderFor(JavacAnnotationHandler.class) - public static class HandleCommonsLog implements JavacAnnotationHandler { - @Override public boolean handle(AnnotationValues annotation, JCAnnotation ast, JavacNode annotationNode) { + public static class HandleCommonsLog implements JavacAnnotationHandler { + @Override public boolean handle(AnnotationValues annotation, JCAnnotation ast, JavacNode annotationNode) { return processAnnotation(LoggingFramework.COMMONS, annotation, annotationNode); } @@ -128,11 +113,11 @@ public class HandleLog { } /** - * Handles the {@link lombok.extern.jul.Log} annotation for javac. + * Handles the {@link lombok.extern.java.Log} annotation for javac. */ @ProviderFor(JavacAnnotationHandler.class) - public static class HandleJulLog implements JavacAnnotationHandler { - @Override public boolean handle(AnnotationValues annotation, JCAnnotation ast, JavacNode annotationNode) { + public static class HandleJulLog implements JavacAnnotationHandler { + @Override public boolean handle(AnnotationValues annotation, JCAnnotation ast, JavacNode annotationNode) { return processAnnotation(LoggingFramework.JUL, annotation, annotationNode); } @@ -142,11 +127,11 @@ public class HandleLog { } /** - * Handles the {@link lombok.extern.log4j.Log} annotation for javac. + * Handles the {@link lombok.extern.log4j.Log4j} annotation for javac. */ @ProviderFor(JavacAnnotationHandler.class) - public static class HandleLog4jLog implements JavacAnnotationHandler { - @Override public boolean handle(AnnotationValues annotation, JCAnnotation ast, JavacNode annotationNode) { + public static class HandleLog4jLog implements JavacAnnotationHandler { + @Override public boolean handle(AnnotationValues annotation, JCAnnotation ast, JavacNode annotationNode) { return processAnnotation(LoggingFramework.LOG4J, annotation, annotationNode); } @@ -156,11 +141,11 @@ public class HandleLog { } /** - * Handles the {@link lombok.extern.slf4j.Log} annotation for javac. + * Handles the {@link lombok.extern.slf4j.Slf4j} annotation for javac. */ @ProviderFor(JavacAnnotationHandler.class) - public static class HandleSlf4jLog implements JavacAnnotationHandler { - @Override public boolean handle(AnnotationValues annotation, JCAnnotation ast, JavacNode annotationNode) { + public static class HandleSlf4jLog implements JavacAnnotationHandler { + @Override public boolean handle(AnnotationValues annotation, JCAnnotation ast, JavacNode annotationNode) { return processAnnotation(LoggingFramework.SLF4J, annotation, annotationNode); } @@ -171,10 +156,10 @@ public class HandleLog { enum LoggingFramework { // private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(TargetType.class); - COMMONS(lombok.extern.jul.Log.class, "org.apache.commons.logging.Log", "org.apache.commons.logging.LogFactory.getLog"), + COMMONS(lombok.extern.apachecommons.CommonsLog.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.class.getName()); - JUL(lombok.extern.jul.Log.class, "java.util.logging.Logger", "java.util.logging.Logger.getLogger") { + JUL(lombok.extern.java.Log.class, "java.util.logging.Logger", "java.util.logging.Logger.getLogger") { @Override public JCExpression createFactoryParameter(JavacNode typeNode, JCFieldAccess loggingType) { TreeMaker maker = typeNode.getTreeMaker(); JCExpression method = maker.Select(loggingType, typeNode.toName("getName")); @@ -183,10 +168,10 @@ public class HandleLog { }, // private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(TargetType.class); - LOG4J(lombok.extern.jul.Log.class, "org.apache.log4j.Logger", "org.apache.log4j.Logger.getLogger"), + LOG4J(lombok.extern.log4j.Log4j.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.extern.slf4j.Log.class, "org.slf4j.Logger", "org.slf4j.LoggerFactory.getLogger"), + SLF4J(lombok.extern.slf4j.Slf4j.class, "org.slf4j.Logger", "org.slf4j.LoggerFactory.getLogger"), ; -- cgit