From 2242de2bf9886fc80858486bbb3aa171a5496885 Mon Sep 17 00:00:00 2001 From: Roel Spilker Date: Tue, 24 Jan 2012 02:52:13 +0100 Subject: Fix for issue 328: @Delegate on a field for which we also generate a getter will use the getter for delegation --- .../resource/after-delombok/DelegateOnGetter.java | 35 +++++++++++++++++++ .../resource/after-ecj/DelegateOnGetter.java | 1 + .../resource/after-eclipse/DelegateOnGetter.java | 40 ++++++++++++++++++++++ .../resource/before/DelegateOnGetter.java | 18 ++++++++++ 4 files changed, 94 insertions(+) create mode 100644 test/transform/resource/after-delombok/DelegateOnGetter.java create mode 100644 test/transform/resource/after-ecj/DelegateOnGetter.java create mode 100644 test/transform/resource/after-eclipse/DelegateOnGetter.java create mode 100644 test/transform/resource/before/DelegateOnGetter.java (limited to 'test/transform') diff --git a/test/transform/resource/after-delombok/DelegateOnGetter.java b/test/transform/resource/after-delombok/DelegateOnGetter.java new file mode 100644 index 00000000..ee34018a --- /dev/null +++ b/test/transform/resource/after-delombok/DelegateOnGetter.java @@ -0,0 +1,35 @@ +class DelegateOnGetter { + private final java.util.concurrent.atomic.AtomicReference> bar = new java.util.concurrent.atomic.AtomicReference>(); + private interface Bar { + void setList(java.util.ArrayList list); + int getInt(); + } + @java.lang.SuppressWarnings("all") + public Bar getBar() { + java.util.concurrent.atomic.AtomicReference value = this.bar.get(); + if (value == null) { + synchronized (this.bar) { + value = this.bar.get(); + if (value == null) { + value = new java.util.concurrent.atomic.AtomicReference(new Bar(){ + public void setList(java.util.ArrayList list) { + } + public int getInt() { + return 42; + } + }); + this.bar.set(value); + } + } + } + return value.get(); + } + @java.lang.SuppressWarnings("all") + public void setList(final java.util.ArrayList list) { + this.getBar().setList(list); + } + @java.lang.SuppressWarnings("all") + public int getInt() { + return this.getBar().getInt(); + } +} \ No newline at end of file diff --git a/test/transform/resource/after-ecj/DelegateOnGetter.java b/test/transform/resource/after-ecj/DelegateOnGetter.java new file mode 100644 index 00000000..cb06d3c1 --- /dev/null +++ b/test/transform/resource/after-ecj/DelegateOnGetter.java @@ -0,0 +1 @@ +//ignore \ No newline at end of file diff --git a/test/transform/resource/after-eclipse/DelegateOnGetter.java b/test/transform/resource/after-eclipse/DelegateOnGetter.java new file mode 100644 index 00000000..7d5907e0 --- /dev/null +++ b/test/transform/resource/after-eclipse/DelegateOnGetter.java @@ -0,0 +1,40 @@ +import lombok.Delegate; +import lombok.Getter; +class DelegateOnGetter { + private interface Bar { + void setList(java.util.ArrayList list); + int getInt(); + } + private final @Delegate @Getter(lazy = true) java.util.concurrent.atomic.AtomicReference> bar = new java.util.concurrent.atomic.AtomicReference>(); + public @Delegate @java.lang.SuppressWarnings("all") Bar getBar() { + java.util.concurrent.atomic.AtomicReference value = this.bar.get(); + if ((value == null)) + { + synchronized (this.bar) + { + value = this.bar.get(); + if ((value == null)) + { + value = new java.util.concurrent.atomic.AtomicReference(new Bar() { + public void setList(java.util.ArrayList list) { + } + public int getInt() { + return 42; + } +}); + this.bar.set(value); + } + } + } + return value.get(); + } + public @java.lang.SuppressWarnings("all") int getInt() { + return this.getBar().getInt(); + } + public @java.lang.SuppressWarnings("all") void setList(final java.util.ArrayList list) { + this.getBar().setList(list); + } + DelegateOnGetter() { + super(); + } +} \ No newline at end of file diff --git a/test/transform/resource/before/DelegateOnGetter.java b/test/transform/resource/before/DelegateOnGetter.java new file mode 100644 index 00000000..afe09ff4 --- /dev/null +++ b/test/transform/resource/before/DelegateOnGetter.java @@ -0,0 +1,18 @@ +import lombok.Delegate; +import lombok.Getter; + +class DelegateOnGetter { + + @Delegate @Getter(lazy=true) private final Bar bar = new Bar() { + public void setList(java.util.ArrayList list) { + } + public int getInt() { + return 42; + } + }; + + private interface Bar { + void setList(java.util.ArrayList list); + int getInt(); + } +} \ No newline at end of file -- cgit