aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoel Spilker <r.spilker@gmail.com>2012-06-18 23:37:34 +0200
committerRoel Spilker <r.spilker@gmail.com>2012-06-18 23:38:02 +0200
commit37cbe2d3f9cd8737b46b6bfb263277f7b7cd7861 (patch)
treec8f5f66c3b420bbc1beecb85fd5a67905c5a54d3
parent78bf0f6fbbba39e1c56d5dda3df7b0c3eaec74ad (diff)
downloadlombok-37cbe2d3f9cd8737b46b6bfb263277f7b7cd7861.tar.gz
lombok-37cbe2d3f9cd8737b46b6bfb263277f7b7cd7861.tar.bz2
lombok-37cbe2d3f9cd8737b46b6bfb263277f7b7cd7861.zip
Fix for issue 376 for Eclipse
-rw-r--r--src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java12
-rw-r--r--src/core/lombok/eclipse/handlers/HandleGetter.java3
-rw-r--r--test/transform/resource/after-ecj/GetterLazyBoolean.java6
3 files changed, 17 insertions, 4 deletions
diff --git a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java
index 4cf64a14..b0b88656 100644
--- a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java
+++ b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java
@@ -774,9 +774,19 @@ public class EclipseHandlerUtil {
}
}
+ private static final Map<FieldDeclaration, GetterMethod> generatedLazyGetters = new WeakHashMap<FieldDeclaration, GetterMethod>();
+
+ static void registerCreatedLazyGetter(FieldDeclaration field, char[] methodName, TypeReference returnType) {
+ generatedLazyGetters.put(field, new GetterMethod(methodName, returnType));
+ }
+
private static GetterMethod findGetter(EclipseNode field) {
- TypeReference fieldType = ((FieldDeclaration)field.get()).type;
+ FieldDeclaration fieldDeclaration = (FieldDeclaration) field.get();
+ GetterMethod gm = generatedLazyGetters.get(fieldDeclaration);
+ if (gm != null) return gm;
+ TypeReference fieldType = fieldDeclaration.type;
boolean isBoolean = nameEquals(fieldType.getTypeName(), "boolean") && fieldType.dimensions() == 0;
+
EclipseNode typeNode = field.up();
for (String potentialGetterName : toAllGetterNames(field, isBoolean)) {
for (EclipseNode potentialGetter : typeNode.down()) {
diff --git a/src/core/lombok/eclipse/handlers/HandleGetter.java b/src/core/lombok/eclipse/handlers/HandleGetter.java
index d53bf89b..31376749 100644
--- a/src/core/lombok/eclipse/handlers/HandleGetter.java
+++ b/src/core/lombok/eclipse/handlers/HandleGetter.java
@@ -268,6 +268,9 @@ public class HandleGetter extends EclipseAnnotationHandler<Getter> {
method.bodyStart = method.declarationSourceStart = method.sourceStart = source.sourceStart;
method.bodyEnd = method.declarationSourceEnd = method.sourceEnd = source.sourceEnd;
method.statements = statements;
+
+ EclipseHandlerUtil.registerCreatedLazyGetter((FieldDeclaration) fieldNode.get(), method.selector, returnType);
+
return method;
}
diff --git a/test/transform/resource/after-ecj/GetterLazyBoolean.java b/test/transform/resource/after-ecj/GetterLazyBoolean.java
index 6f186ab3..689101c8 100644
--- a/test/transform/resource/after-ecj/GetterLazyBoolean.java
+++ b/test/transform/resource/after-ecj/GetterLazyBoolean.java
@@ -1,4 +1,4 @@
-class GetterLazyBoolean {
+@lombok.EqualsAndHashCode(of = "booleanValue") @lombok.ToString(of = "booleanValue") class GetterLazyBoolean {
private final @lombok.Getter(lazy = true) java.util.concurrent.atomic.AtomicReference<java.util.concurrent.atomic.AtomicReference<java.lang.Boolean>> booleanValue = new java.util.concurrent.atomic.AtomicReference<java.util.concurrent.atomic.AtomicReference<java.lang.Boolean>>();
private final @lombok.Getter(lazy = true) java.util.concurrent.atomic.AtomicReference<java.util.concurrent.atomic.AtomicReference<java.lang.Boolean>> otherBooleanValue = new java.util.concurrent.atomic.AtomicReference<java.util.concurrent.atomic.AtomicReference<java.lang.Boolean>>();
public @java.lang.SuppressWarnings("all") boolean isBooleanValue() {
@@ -43,7 +43,7 @@ class GetterLazyBoolean {
final @java.lang.SuppressWarnings("all") GetterLazyBoolean other = (GetterLazyBoolean) o;
if ((! other.canEqual((java.lang.Object) this)))
return false;
- if (this.isBooleanValue() != other.isBooleanValue())
+ if ((this.isBooleanValue() != other.isBooleanValue()))
return false;
return true;
}
@@ -53,7 +53,7 @@ class GetterLazyBoolean {
public @java.lang.Override @java.lang.SuppressWarnings("all") int hashCode() {
final int PRIME = 31;
int result = 1;
- result = result * PRIME + (this.isBooleanValue() ? 1231 : 1237);
+ result = ((result * PRIME) + (this.isBooleanValue() ? 1231 : 1237));
return result;
}
public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {