From 8a3a656213605482bfa11f2efddf96dc1f47d16e Mon Sep 17 00:00:00 2001 From: Roel Spilker Date: Sat, 6 Nov 2010 15:37:20 +0100 Subject: Add support for multiple logging frameworks in Eclipse --- test/transform/resource/after-ecj/LoggerJul.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 test/transform/resource/after-ecj/LoggerJul.java (limited to 'test/transform/resource/after-ecj/LoggerJul.java') diff --git a/test/transform/resource/after-ecj/LoggerJul.java b/test/transform/resource/after-ecj/LoggerJul.java new file mode 100644 index 00000000..86405ebd --- /dev/null +++ b/test/transform/resource/after-ecj/LoggerJul.java @@ -0,0 +1,18 @@ +@lombok.jul.Log class LoggerJul { + private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("LoggerJul"); + LoggerJul() { + super(); + } +} +@lombok.jul.Log(String.class) class LoggerJulString { + private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("String"); + LoggerJulString() { + super(); + } +} +@lombok.jul.Log(java.lang.String.class) class LoggerJulJavaLangString { + private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("java.lang.String"); + LoggerJulJavaLangString() { + super(); + } +} \ No newline at end of file -- cgit From 0c7b29f8e7009d1433e2386f710c78801f119ebb Mon Sep 17 00:00:00 2001 From: Roel Spilker Date: Sat, 6 Nov 2010 16:41:17 +0100 Subject: Create Clinit if you create a static field and it doesn't yet exist --- .../lombok/eclipse/handlers/EclipseHandlerUtil.java | 17 +++++++++++++++++ test/transform/resource/after-ecj/LoggerCommons.java | 6 ++++++ test/transform/resource/after-ecj/LoggerJul.java | 6 ++++++ test/transform/resource/after-ecj/LoggerLog4j.java | 6 ++++++ test/transform/resource/after-ecj/LoggerSlf4j.java | 4 ++++ .../resource/after-ecj/LoggerSlf4jClassOfArray.java | 2 ++ test/transform/resource/after-ecj/LoggerSlf4jTypes.java | 2 ++ .../resource/after-ecj/LoggerSlf4jWithClass.java | 8 ++++++++ .../resource/after-ecj/LoggerSlf4jWithPackage.java | 4 ++++ .../transform/resource/after-ecj/SynchronizedPlain.java | 2 ++ 10 files changed, 57 insertions(+) (limited to 'test/transform/resource/after-ecj/LoggerJul.java') diff --git a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java index 29937279..c37de8ea 100644 --- a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java +++ b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java @@ -23,6 +23,7 @@ package lombok.eclipse.handlers; import static lombok.eclipse.Eclipse.*; +import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -42,6 +43,7 @@ import org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration; import org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration; import org.eclipse.jdt.internal.compiler.ast.AllocationExpression; import org.eclipse.jdt.internal.compiler.ast.Annotation; +import org.eclipse.jdt.internal.compiler.ast.Clinit; import org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration; import org.eclipse.jdt.internal.compiler.ast.EqualExpression; import org.eclipse.jdt.internal.compiler.ast.Expression; @@ -429,9 +431,24 @@ public class EclipseHandlerUtil { parent.fields = newArray; } + if ((field.modifiers & Modifier.STATIC) != 0) { + if (!hasClinit(parent)) { + parent.addClinit(); + } + } + type.add(field, Kind.FIELD).recursiveSetHandled(); } + private static boolean hasClinit(TypeDeclaration parent) { + if (parent.methods == null) return false; + + for (AbstractMethodDeclaration method : parent.methods) { + if (method instanceof Clinit) return true; + } + return false; + } + /** * Inserts a method into an existing type. The type must represent a {@code TypeDeclaration}. */ diff --git a/test/transform/resource/after-ecj/LoggerCommons.java b/test/transform/resource/after-ecj/LoggerCommons.java index 1d21fb66..e5a3bf35 100644 --- a/test/transform/resource/after-ecj/LoggerCommons.java +++ b/test/transform/resource/after-ecj/LoggerCommons.java @@ -1,17 +1,23 @@ @lombok.commons.Log class LoggerCommons { private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LoggerCommons.class); + () { + } LoggerCommons() { super(); } } @lombok.commons.Log(String.class) class LoggerCommonsString { private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(String.class); + () { + } LoggerCommonsString() { super(); } } @lombok.commons.Log(java.lang.String.class) class LoggerCommonsJavaLangString { private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(java.lang.String.class); + () { + } LoggerCommonsJavaLangString() { super(); } diff --git a/test/transform/resource/after-ecj/LoggerJul.java b/test/transform/resource/after-ecj/LoggerJul.java index 86405ebd..734d0dac 100644 --- a/test/transform/resource/after-ecj/LoggerJul.java +++ b/test/transform/resource/after-ecj/LoggerJul.java @@ -1,17 +1,23 @@ @lombok.jul.Log class LoggerJul { private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("LoggerJul"); + () { + } LoggerJul() { super(); } } @lombok.jul.Log(String.class) class LoggerJulString { private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("String"); + () { + } LoggerJulString() { super(); } } @lombok.jul.Log(java.lang.String.class) class LoggerJulJavaLangString { private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("java.lang.String"); + () { + } LoggerJulJavaLangString() { super(); } diff --git a/test/transform/resource/after-ecj/LoggerLog4j.java b/test/transform/resource/after-ecj/LoggerLog4j.java index 27ad6b9c..64445b96 100644 --- a/test/transform/resource/after-ecj/LoggerLog4j.java +++ b/test/transform/resource/after-ecj/LoggerLog4j.java @@ -1,17 +1,23 @@ @lombok.log4j.Log class LoggerLog4j { private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LoggerLog4j.class); + () { + } LoggerLog4j() { super(); } } @lombok.log4j.Log(String.class) class LoggerLog4jString { private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(String.class); + () { + } LoggerLog4jString() { super(); } } @lombok.log4j.Log(java.lang.String.class) class LoggerLog4jJavaLangString { private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(java.lang.String.class); + () { + } LoggerLog4jJavaLangString() { super(); } diff --git a/test/transform/resource/after-ecj/LoggerSlf4j.java b/test/transform/resource/after-ecj/LoggerSlf4j.java index 6a611c2b..2e4d65a5 100644 --- a/test/transform/resource/after-ecj/LoggerSlf4j.java +++ b/test/transform/resource/after-ecj/LoggerSlf4j.java @@ -1,5 +1,7 @@ @lombok.slf4j.Log class LoggerSlf4j { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4j.class); + () { + } LoggerSlf4j() { super(); } @@ -7,6 +9,8 @@ class LoggerSlf4jOuter { static @lombok.slf4j.Log class Inner { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4jOuter.Inner.class); + () { + } Inner() { super(); } diff --git a/test/transform/resource/after-ecj/LoggerSlf4jClassOfArray.java b/test/transform/resource/after-ecj/LoggerSlf4jClassOfArray.java index c8f8069d..ffec7e66 100644 --- a/test/transform/resource/after-ecj/LoggerSlf4jClassOfArray.java +++ b/test/transform/resource/after-ecj/LoggerSlf4jClassOfArray.java @@ -1,5 +1,7 @@ @lombok.slf4j.Log(String[].class) class LoggerSlf4jClassOfArray { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(String[].class); + () { + } LoggerSlf4jClassOfArray() { super(); } diff --git a/test/transform/resource/after-ecj/LoggerSlf4jTypes.java b/test/transform/resource/after-ecj/LoggerSlf4jTypes.java index 88bcdae8..2e860ed2 100644 --- a/test/transform/resource/after-ecj/LoggerSlf4jTypes.java +++ b/test/transform/resource/after-ecj/LoggerSlf4jTypes.java @@ -22,6 +22,8 @@ interface LoggerSlf4jTypesInterfaceOuter { @lombok.slf4j.Log class Inner { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4jTypesInterfaceOuter.Inner.class); + () { + } Inner() { super(); } diff --git a/test/transform/resource/after-ecj/LoggerSlf4jWithClass.java b/test/transform/resource/after-ecj/LoggerSlf4jWithClass.java index 2839cdef..fbb4b2d2 100644 --- a/test/transform/resource/after-ecj/LoggerSlf4jWithClass.java +++ b/test/transform/resource/after-ecj/LoggerSlf4jWithClass.java @@ -1,23 +1,31 @@ @lombok.slf4j.Log(String.class) class LoggerSlf4jWithClass { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(String.class); + () { + } LoggerSlf4jWithClass() { super(); } } @lombok.slf4j.Log(java.util.List.class) class LoggerSlf4jWithClassList { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(java.util.List.class); + () { + } LoggerSlf4jWithClassList() { super(); } } @lombok.slf4j.Log(value = java.lang.String.class) class LoggerSlf4jWithClassValue { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(java.lang.String.class); + () { + } LoggerSlf4jWithClassValue() { super(); } } @lombok.slf4j.Log(void.class) class LoggerSlf4jWithClassVoid { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4jWithClassVoid.class); + () { + } LoggerSlf4jWithClassVoid() { super(); } diff --git a/test/transform/resource/after-ecj/LoggerSlf4jWithPackage.java b/test/transform/resource/after-ecj/LoggerSlf4jWithPackage.java index efd43685..76d19bc3 100644 --- a/test/transform/resource/after-ecj/LoggerSlf4jWithPackage.java +++ b/test/transform/resource/after-ecj/LoggerSlf4jWithPackage.java @@ -1,6 +1,8 @@ package before; @lombok.slf4j.Log class LoggerSlf4jWithPackage { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(before.LoggerSlf4jWithPackage.class); + () { + } LoggerSlf4jWithPackage() { super(); } @@ -8,6 +10,8 @@ package before; class LoggerSlf4jWithPackageOuter { static @lombok.slf4j.Log class Inner { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(before.LoggerSlf4jWithPackageOuter.Inner.class); + () { + } Inner() { super(); } diff --git a/test/transform/resource/after-ecj/SynchronizedPlain.java b/test/transform/resource/after-ecj/SynchronizedPlain.java index b9f032c5..8e5b6297 100644 --- a/test/transform/resource/after-ecj/SynchronizedPlain.java +++ b/test/transform/resource/after-ecj/SynchronizedPlain.java @@ -19,6 +19,8 @@ class SynchronizedPlain1 { } class SynchronizedPlain2 { private static final @java.lang.SuppressWarnings("all") java.lang.Object $LOCK = new java.lang.Object[0]; + () { + } SynchronizedPlain2() { super(); } -- cgit From 59150328992339ec64ae015e2d1d73c109c4d322 Mon Sep 17 00:00:00 2001 From: Roel Spilker Date: Sat, 6 Nov 2010 20:41:36 +0100 Subject: Have j.u.l. be invoked with TargetType.class.getName() instead of "TargetType" --- src/core/lombok/eclipse/handlers/HandleLog.java | 20 +++++++++++++++----- src/core/lombok/javac/handlers/HandleLog.java | 7 +++++-- .../transform/resource/after-delombok/LoggerJul.java | 6 +++--- test/transform/resource/after-ecj/LoggerJul.java | 6 +++--- 4 files changed, 26 insertions(+), 13 deletions(-) (limited to 'test/transform/resource/after-ecj/LoggerJul.java') diff --git a/src/core/lombok/eclipse/handlers/HandleLog.java b/src/core/lombok/eclipse/handlers/HandleLog.java index 08f3e6f2..dfb45a29 100644 --- a/src/core/lombok/eclipse/handlers/HandleLog.java +++ b/src/core/lombok/eclipse/handlers/HandleLog.java @@ -42,7 +42,6 @@ import org.eclipse.jdt.internal.compiler.ast.MessageSend; import org.eclipse.jdt.internal.compiler.ast.NameReference; import org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference; import org.eclipse.jdt.internal.compiler.ast.QualifiedTypeReference; -import org.eclipse.jdt.internal.compiler.ast.StringLiteral; import org.eclipse.jdt.internal.compiler.ast.TypeDeclaration; import org.eclipse.jdt.internal.compiler.ast.TypeReference; import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; @@ -216,12 +215,23 @@ public class HandleLog { // 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"); + // private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(TargetType.class.getName()); JUL(lombok.jul.Log.class, "java.util.logging.Logger", "java.util.logging.Logger", "getLogger") { @Override public Expression createFactoryParameter(String typeName, Annotation source) { - Expression current = new StringLiteral(typeName.toCharArray(), source.sourceStart, source.sourceEnd, 0); - Eclipse.setGeneratedBy(current, source); - return current; + int pS = source.sourceStart, pE = source.sourceEnd; + long p = (long)pS << 32 | pE; + + MessageSend factoryParameterCall = new MessageSend(); + Eclipse.setGeneratedBy(factoryParameterCall, source); + + factoryParameterCall.receiver = super.createFactoryParameter(typeName, source); + factoryParameterCall.selector = "getName".toCharArray(); + + factoryParameterCall.nameSourcePosition = p; + factoryParameterCall.sourceStart = pS; + factoryParameterCall.sourceEnd = factoryParameterCall.statementEnd = pE; + + return factoryParameterCall; } }, diff --git a/src/core/lombok/javac/handlers/HandleLog.java b/src/core/lombok/javac/handlers/HandleLog.java index 52a308ab..014895a1 100644 --- a/src/core/lombok/javac/handlers/HandleLog.java +++ b/src/core/lombok/javac/handlers/HandleLog.java @@ -155,10 +155,13 @@ public class HandleLog { // 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"); + // private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(TargetType.class.getName()); 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); + TreeMaker maker = typeNode.getTreeMaker(); + JCExpression classAccess = super.createFactoryParameter(typeNode, typeName); + JCExpression method = maker.Select(classAccess, typeNode.toName("getName")); + return maker.Apply(List.nil(), method, List.nil()); } }, diff --git a/test/transform/resource/after-delombok/LoggerJul.java b/test/transform/resource/after-delombok/LoggerJul.java index a40bb2da..51f19926 100644 --- a/test/transform/resource/after-delombok/LoggerJul.java +++ b/test/transform/resource/after-delombok/LoggerJul.java @@ -1,9 +1,9 @@ class LoggerJul { - private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("LoggerJul"); + private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LoggerJul.class.getName()); } class LoggerJulString { - private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("String"); + private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(String.class.getName()); } class LoggerJulJavaLangString { - private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("java.lang.String"); + private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(java.lang.String.class.getName()); } \ No newline at end of file diff --git a/test/transform/resource/after-ecj/LoggerJul.java b/test/transform/resource/after-ecj/LoggerJul.java index 734d0dac..99c1000c 100644 --- a/test/transform/resource/after-ecj/LoggerJul.java +++ b/test/transform/resource/after-ecj/LoggerJul.java @@ -1,5 +1,5 @@ @lombok.jul.Log class LoggerJul { - private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("LoggerJul"); + private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LoggerJul.class.getName()); () { } LoggerJul() { @@ -7,7 +7,7 @@ } } @lombok.jul.Log(String.class) class LoggerJulString { - private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("String"); + private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(String.class.getName()); () { } LoggerJulString() { @@ -15,7 +15,7 @@ } } @lombok.jul.Log(java.lang.String.class) class LoggerJulJavaLangString { - private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("java.lang.String"); + private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(java.lang.String.class.getName()); () { } LoggerJulJavaLangString() { -- cgit From 8e7334a50535ef33189c3e71fcab0d9e625c6534 Mon Sep 17 00:00:00 2001 From: Roel Spilker Date: Sat, 6 Nov 2010 23:29:43 +0100 Subject: Updated documentation on @Log and moved them all to lombok.extern.* --- buildScripts/website.ant.xml | 4 +- src/core/lombok/commons/Log.java | 34 ---------- src/core/lombok/eclipse/handlers/HandleLog.java | 32 ++++----- src/core/lombok/extern/apachecommons/Log.java | 77 ++++++++++++++++++++++ src/core/lombok/extern/jul/Log.java | 77 ++++++++++++++++++++++ src/core/lombok/extern/log4j/Log.java | 77 ++++++++++++++++++++++ src/core/lombok/extern/slf4j/Log.java | 76 +++++++++++++++++++++ src/core/lombok/javac/handlers/HandleLog.java | 32 ++++----- src/core/lombok/jul/Log.java | 34 ---------- src/core/lombok/log4j/Log.java | 34 ---------- src/core/lombok/slf4j/Log.java | 34 ---------- test/pretty/resource/after/Interfaces.java | 4 +- .../resource/after-ecj/LoggerCommons.java | 6 +- test/transform/resource/after-ecj/LoggerJul.java | 6 +- test/transform/resource/after-ecj/LoggerLog4j.java | 6 +- test/transform/resource/after-ecj/LoggerSlf4j.java | 4 +- .../after-ecj/LoggerSlf4jAlreadyExists.java | 2 +- .../after-ecj/LoggerSlf4jClassOfArray.java | 2 +- .../resource/after-ecj/LoggerSlf4jOnNonType.java | 2 +- .../resource/after-ecj/LoggerSlf4jTypes.java | 10 +-- .../resource/after-ecj/LoggerSlf4jWithClass.java | 8 +-- .../resource/after-ecj/LoggerSlf4jWithPackage.java | 4 +- test/transform/resource/before/LoggerCommons.java | 6 +- test/transform/resource/before/LoggerJul.java | 6 +- test/transform/resource/before/LoggerLog4j.java | 6 +- test/transform/resource/before/LoggerSlf4j.java | 4 +- .../resource/before/LoggerSlf4jAlreadyExists.java | 2 +- .../resource/before/LoggerSlf4jClassOfArray.java | 2 +- .../resource/before/LoggerSlf4jOnNonType.java | 2 +- .../resource/before/LoggerSlf4jTypes.java | 10 +-- .../resource/before/LoggerSlf4jWithClass.java | 8 +-- .../resource/before/LoggerSlf4jWithPackage.java | 4 +- usage_examples/LogExample_pre.jpage | 2 +- website/features/Log.html | 16 ++--- 34 files changed, 402 insertions(+), 231 deletions(-) delete mode 100644 src/core/lombok/commons/Log.java create mode 100644 src/core/lombok/extern/apachecommons/Log.java create mode 100644 src/core/lombok/extern/jul/Log.java create mode 100644 src/core/lombok/extern/log4j/Log.java create mode 100644 src/core/lombok/extern/slf4j/Log.java delete mode 100644 src/core/lombok/jul/Log.java delete mode 100644 src/core/lombok/log4j/Log.java delete mode 100644 src/core/lombok/slf4j/Log.java (limited to 'test/transform/resource/after-ecj/LoggerJul.java') diff --git a/buildScripts/website.ant.xml b/buildScripts/website.ant.xml index 6ab8d509..08fc8a55 100644 --- a/buildScripts/website.ant.xml +++ b/buildScripts/website.ant.xml @@ -1,5 +1,5 @@