From 849aa4fddadb40439a30967131d2847b90fb139f Mon Sep 17 00:00:00 2001 From: Jan Rieke Date: Sun, 9 Sep 2018 19:47:51 +0200 Subject: SuperBuilder toBuilder; test cases --- .../after-delombok/SuperBuilderBasicToBuilder.java | 157 +++++++++++++++++++++ .../after-ecj/SuperBuilderBasicToBuilder.java | 133 +++++++++++++++++ .../before/SuperBuilderBasicToBuilder.java | 18 +++ 3 files changed, 308 insertions(+) create mode 100644 test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java create mode 100644 test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java create mode 100644 test/transform/resource/before/SuperBuilderBasicToBuilder.java (limited to 'test/transform/resource') diff --git a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java new file mode 100644 index 00000000..2e097c1a --- /dev/null +++ b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java @@ -0,0 +1,157 @@ +import java.util.List; + +import manual.model.Superclass.SuperclassBuilder; +import manual.model.Superclass.SuperclassBuilderImpl; +public class SuperBuilderBasicToBuilder { + public static class Parent { + int field1; + List items; + @java.lang.SuppressWarnings("all") + public static abstract class ParentBuilder> { + @java.lang.SuppressWarnings("all") + private int field1; + @java.lang.SuppressWarnings("all") + private java.util.ArrayList items; + @java.lang.SuppressWarnings("all") + protected B $fillValuesFrom(final C instance) { + this.field1(instance.field1); + this.items(instance.items); + return self(); + } + @java.lang.SuppressWarnings("all") + protected abstract B self(); + @java.lang.SuppressWarnings("all") + public abstract C build(); + @java.lang.SuppressWarnings("all") + public B field1(final int field1) { + this.field1 = field1; + return self(); + } + @java.lang.SuppressWarnings("all") + public B item(final String item) { + if (this.items == null) this.items = new java.util.ArrayList(); + this.items.add(item); + return self(); + } + @java.lang.SuppressWarnings("all") + public B items(final java.util.Collection items) { + if (this.items == null) this.items = new java.util.ArrayList(); + this.items.addAll(items); + return self(); + } + @java.lang.SuppressWarnings("all") + public B clearItems() { + if (this.items != null) this.items.clear(); + return self(); + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public java.lang.String toString() { + return "SuperBuilderBasicToBuilder.Parent.ParentBuilder(field1=" + this.field1 + ", items=" + this.items + ")"; + } + } + @java.lang.SuppressWarnings("all") + private static final class ParentBuilderImpl extends ParentBuilder { + @java.lang.SuppressWarnings("all") + private ParentBuilderImpl() { + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + protected ParentBuilderImpl self() { + return this; + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public Parent build() { + return new Parent(this); + } + } + @java.lang.SuppressWarnings("all") + protected Parent(final ParentBuilder b) { + this.field1 = b.field1; + java.util.List items; + switch (b.items == null ? 0 : b.items.size()) { + case 0: + items = java.util.Collections.emptyList(); + break; + case 1: + items = java.util.Collections.singletonList(b.items.get(0)); + break; + default: + items = java.util.Collections.unmodifiableList(new java.util.ArrayList(b.items)); + } + this.items = items; + } + @java.lang.SuppressWarnings("all") + public static ParentBuilder builder() { + return new ParentBuilderImpl(); + } + @java.lang.SuppressWarnings("all") + public ParentBuilder toBuilder() { + return new ParentBuilderImpl().$fillValuesFrom(this); + } + } + public static class Child extends Parent { + double field3; + @java.lang.SuppressWarnings("all") + public static abstract class ChildBuilder> extends Parent.ParentBuilder { + @java.lang.SuppressWarnings("all") + private double field3; + @java.lang.Override + @java.lang.SuppressWarnings("all") + protected B $fillValuesFrom(C instance) { + super.$fillValuesFrom(instance); + this.field3(instance.field3); + return self(); + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + protected abstract B self(); + @java.lang.Override + @java.lang.SuppressWarnings("all") + public abstract C build(); + @java.lang.SuppressWarnings("all") + public B field3(final double field3) { + this.field3 = field3; + return self(); + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public java.lang.String toString() { + return "SuperBuilderBasicToBuilder.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")"; + } + } + @java.lang.SuppressWarnings("all") + private static final class ChildBuilderImpl extends ChildBuilder { + @java.lang.SuppressWarnings("all") + private ChildBuilderImpl() { + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + protected ChildBuilderImpl self() { + return this; + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public Child build() { + return new Child(this); + } + } + @java.lang.SuppressWarnings("all") + protected Child(final ChildBuilder b) { + super(b); + this.field3 = b.field3; + } + @java.lang.SuppressWarnings("all") + public static ChildBuilder builder() { + return new ChildBuilderImpl(); + } + @java.lang.SuppressWarnings("all") + public ChildBuilder toBuilder() { + return new ChildBuilderImpl().$fillValuesFrom(this); + } + } + public static void test() { + Child x = Child.builder().field3(0.0).field1(5).item("").build().toBuilder().build(); + } +} diff --git a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java new file mode 100644 index 00000000..03fc86d1 --- /dev/null +++ b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java @@ -0,0 +1,133 @@ +import java.util.List; + +import SuperBuilderBasicToBuilder.Child.ChildBuilder; +import SuperBuilderBasicToBuilder.Child.ChildBuilderImpl; +import SuperBuilderBasicToBuilder.Parent.ParentBuilder; +import SuperBuilderBasicToBuilder.Parent.ParentBuilderImpl; +public class SuperBuilderBasic { + public static @lombok.experimental.SuperBuilder class Parent { + public static abstract @java.lang.SuppressWarnings("all") class ParentBuilder> { + private @java.lang.SuppressWarnings("all") int field1; + private @java.lang.SuppressWarnings("all") java.util.ArrayList items; + public ParentBuilder() { + super(); + } + protected @java.lang.SuppressWarnings("all") B $fillValuesFrom(final C instance) { + this.field1(instance.field1); + this.items(instance.items); + return self(); + } + protected abstract @java.lang.SuppressWarnings("all") B self(); + public abstract @java.lang.SuppressWarnings("all") C build(); + public @java.lang.SuppressWarnings("all") B field1(final int field1) { + this.field1 = field1; + return self(); + } + public @java.lang.SuppressWarnings("all") B item(String item) { + if ((this.items == null)) + this.items = new java.util.ArrayList(); + this.items.add(item); + return self(); + } + public @java.lang.SuppressWarnings("all") B items(java.util.Collection items) { + if ((this.items == null)) + this.items = new java.util.ArrayList(); + this.items.addAll(items); + return self(); + } + public @java.lang.SuppressWarnings("all") B clearItems() { + if ((this.items != null)) + this.items.clear(); + return self(); + } + public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() { + return (((("SuperBuilderBasic.Parent.ParentBuilder(field1=" + this.field1) + ", items=") + this.items) + ")"); + } + } + private static final @java.lang.SuppressWarnings("all") class ParentBuilderImpl extends ParentBuilder { + private ParentBuilderImpl() { + super(); + } + protected @java.lang.Override @java.lang.SuppressWarnings("all") ParentBuilderImpl self() { + return this; + } + public @java.lang.Override @java.lang.SuppressWarnings("all") Parent build() { + return new Parent(this); + } + } + int field1; + @lombok.Singular List items; + protected @java.lang.SuppressWarnings("all") Parent(final ParentBuilder b) { + super(); + this.field1 = b.field1; + java.util.List items; + switch (((b.items == null) ? 0 : b.items.size())) { + case 0 : + items = java.util.Collections.emptyList(); + break; + case 1 : + items = java.util.Collections.singletonList(b.items.get(0)); + break; + default : + items = java.util.Collections.unmodifiableList(new java.util.ArrayList(b.items)); + } + this.items = items; + } + public static @java.lang.SuppressWarnings("all") ParentBuilder builder() { + return new ParentBuilderImpl(); + } + public @java.lang.SuppressWarnings("all") ParentBuilder toBuilder() { + return new ParentBuilderImpl().$fillValuesFrom(this); + } + } + public static @lombok.experimental.SuperBuilder class Child extends Parent { + public static abstract @java.lang.SuppressWarnings("all") class ChildBuilder> extends Parent.ParentBuilder { + private @java.lang.SuppressWarnings("all") double field3; + public ChildBuilder() { + super(); + } + protected @java.lang.Override @java.lang.SuppressWarnings("all") B $fillValuesFrom(C instance) { + super.$fillValuesFrom(instance); + this.field3(instance.field3); + return self(); + } + protected abstract @java.lang.Override @java.lang.SuppressWarnings("all") B self(); + public abstract @java.lang.Override @java.lang.SuppressWarnings("all") C build(); + public @java.lang.SuppressWarnings("all") B field3(final double field3) { + this.field3 = field3; + return self(); + } + public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() { + return (((("SuperBuilderBasic.Child.ChildBuilder(super=" + super.toString()) + ", field3=") + this.field3) + ")"); + } + } + private static final @java.lang.SuppressWarnings("all") class ChildBuilderImpl extends ChildBuilder { + private ChildBuilderImpl() { + super(); + } + protected @java.lang.Override @java.lang.SuppressWarnings("all") ChildBuilderImpl self() { + return this; + } + public @java.lang.Override @java.lang.SuppressWarnings("all") Child build() { + return new Child(this); + } + } + double field3; + protected @java.lang.SuppressWarnings("all") Child(final ChildBuilder b) { + super(b); + this.field3 = b.field3; + } + public static @java.lang.SuppressWarnings("all") ChildBuilder builder() { + return new ChildBuilderImpl(); + } + public @java.lang.SuppressWarnings("all") ChildBuilder toBuilder() { + return new ChildBuilderImpl().$fillValuesFrom(this); + } + } + public SuperBuilderBasic() { + super(); + } + public static void test() { + Child x = Child.builder().field3(0.0).field1(5).item("").build(); + } +} diff --git a/test/transform/resource/before/SuperBuilderBasicToBuilder.java b/test/transform/resource/before/SuperBuilderBasicToBuilder.java new file mode 100644 index 00000000..bc3578f5 --- /dev/null +++ b/test/transform/resource/before/SuperBuilderBasicToBuilder.java @@ -0,0 +1,18 @@ +import java.util.List; + +public class SuperBuilderBasicToBuilder { + @lombok.experimental.SuperBuilder(toBuilder=true) + public static class Parent { + int field1; + @lombok.Singular List items; + } + + @lombok.experimental.SuperBuilder(toBuilder=true) + public static class Child extends Parent { + double field3; + } + + public static void test() { + Child x = Child.builder().field3(0.0).field1(5).item("").build().toBuilder().build(); + } +} -- cgit From b42ce5325afbe6202d5d5815a9c74dd64a0ce3de Mon Sep 17 00:00:00 2001 From: Jan Rieke Date: Tue, 11 Sep 2018 10:32:50 +0200 Subject: SuperBuilder: generate toBuilder method (javac) --- .../transform/resource/after-delombok/SuperBuilderBasicToBuilder.java | 2 -- test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java | 4 ---- 2 files changed, 6 deletions(-) (limited to 'test/transform/resource') diff --git a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java index 2e097c1a..ae3f5f31 100644 --- a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java @@ -1,7 +1,5 @@ import java.util.List; -import manual.model.Superclass.SuperclassBuilder; -import manual.model.Superclass.SuperclassBuilderImpl; public class SuperBuilderBasicToBuilder { public static class Parent { int field1; diff --git a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java index 03fc86d1..a2299a9c 100644 --- a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java @@ -1,9 +1,5 @@ import java.util.List; -import SuperBuilderBasicToBuilder.Child.ChildBuilder; -import SuperBuilderBasicToBuilder.Child.ChildBuilderImpl; -import SuperBuilderBasicToBuilder.Parent.ParentBuilder; -import SuperBuilderBasicToBuilder.Parent.ParentBuilderImpl; public class SuperBuilderBasic { public static @lombok.experimental.SuperBuilder class Parent { public static abstract @java.lang.SuppressWarnings("all") class ParentBuilder> { -- cgit From abb0d2374e0ca6cda55c5ea63f51235111701081 Mon Sep 17 00:00:00 2001 From: Jan Rieke Date: Tue, 11 Sep 2018 14:52:15 +0200 Subject: SuperBuilder: generate fillValuesFrom method (javac) --- .../resource/after-delombok/SuperBuilderBasicToBuilder.java | 5 ++--- test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) (limited to 'test/transform/resource') diff --git a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java index ae3f5f31..404984b9 100644 --- a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java @@ -1,5 +1,4 @@ import java.util.List; - public class SuperBuilderBasicToBuilder { public static class Parent { int field1; @@ -13,7 +12,7 @@ public class SuperBuilderBasicToBuilder { @java.lang.SuppressWarnings("all") protected B $fillValuesFrom(final C instance) { this.field1(instance.field1); - this.items(instance.items); + this.items(instance.items == null ? java.util.Collections.emptyList() : instance.items); return self(); } @java.lang.SuppressWarnings("all") @@ -97,7 +96,7 @@ public class SuperBuilderBasicToBuilder { private double field3; @java.lang.Override @java.lang.SuppressWarnings("all") - protected B $fillValuesFrom(C instance) { + protected B $fillValuesFrom(final C instance) { super.$fillValuesFrom(instance); this.field3(instance.field3); return self(); diff --git a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java index a2299a9c..5e5f9760 100644 --- a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java @@ -10,7 +10,7 @@ public class SuperBuilderBasic { } protected @java.lang.SuppressWarnings("all") B $fillValuesFrom(final C instance) { this.field1(instance.field1); - this.items(instance.items); + this.items(instance.items == null ? java.util.Collections.emptyList() : instance.items); return self(); } protected abstract @java.lang.SuppressWarnings("all") B self(); -- cgit From 1f3688fdba92508e091eab39b6131dbca2a8ef83 Mon Sep 17 00:00:00 2001 From: Jan Rieke Date: Tue, 11 Sep 2018 16:36:25 +0200 Subject: SuperBuilder: generate fillValuesFrom method (ecj) --- .../resource/after-ecj/SuperBuilderBasicToBuilder.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'test/transform/resource') diff --git a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java index 5e5f9760..6dd06fb7 100644 --- a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java @@ -1,7 +1,7 @@ import java.util.List; -public class SuperBuilderBasic { - public static @lombok.experimental.SuperBuilder class Parent { +public class SuperBuilderBasicToBuilder { + public static @lombok.experimental.SuperBuilder(toBuilder = true) class Parent { public static abstract @java.lang.SuppressWarnings("all") class ParentBuilder> { private @java.lang.SuppressWarnings("all") int field1; private @java.lang.SuppressWarnings("all") java.util.ArrayList items; @@ -9,8 +9,8 @@ public class SuperBuilderBasic { super(); } protected @java.lang.SuppressWarnings("all") B $fillValuesFrom(final C instance) { - this.field1(instance.field1); - this.items(instance.items == null ? java.util.Collections.emptyList() : instance.items); + field1(instance.field1); + items(((instance.items == null) ? java.util.Collections.emptyList() : instance.items)); return self(); } protected abstract @java.lang.SuppressWarnings("all") B self(); @@ -37,7 +37,7 @@ public class SuperBuilderBasic { return self(); } public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() { - return (((("SuperBuilderBasic.Parent.ParentBuilder(field1=" + this.field1) + ", items=") + this.items) + ")"); + return (((("SuperBuilderBasicToBuilder.Parent.ParentBuilder(field1=" + this.field1) + ", items=") + this.items) + ")"); } } private static final @java.lang.SuppressWarnings("all") class ParentBuilderImpl extends ParentBuilder { @@ -76,7 +76,7 @@ public class SuperBuilderBasic { return new ParentBuilderImpl().$fillValuesFrom(this); } } - public static @lombok.experimental.SuperBuilder class Child extends Parent { + public static @lombok.experimental.SuperBuilder(toBuilder = true) class Child extends Parent { public static abstract @java.lang.SuppressWarnings("all") class ChildBuilder> extends Parent.ParentBuilder { private @java.lang.SuppressWarnings("all") double field3; public ChildBuilder() { @@ -84,7 +84,7 @@ public class SuperBuilderBasic { } protected @java.lang.Override @java.lang.SuppressWarnings("all") B $fillValuesFrom(C instance) { super.$fillValuesFrom(instance); - this.field3(instance.field3); + field3(instance.field3); return self(); } protected abstract @java.lang.Override @java.lang.SuppressWarnings("all") B self(); @@ -94,7 +94,7 @@ public class SuperBuilderBasic { return self(); } public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() { - return (((("SuperBuilderBasic.Child.ChildBuilder(super=" + super.toString()) + ", field3=") + this.field3) + ")"); + return (((("SuperBuilderBasicToBuilder.Child.ChildBuilder(super=" + super.toString()) + ", field3=") + this.field3) + ")"); } } private static final @java.lang.SuppressWarnings("all") class ChildBuilderImpl extends ChildBuilder { -- cgit From da59d2d6375afcfcf6cb43288adba61cb99a49e8 Mon Sep 17 00:00:00 2001 From: Jan Rieke Date: Tue, 11 Sep 2018 16:59:29 +0200 Subject: SuperBuilder: generate toBuilder method (ecj) --- test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'test/transform/resource') diff --git a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java index 6dd06fb7..2b294d65 100644 --- a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java @@ -82,7 +82,7 @@ public class SuperBuilderBasicToBuilder { public ChildBuilder() { super(); } - protected @java.lang.Override @java.lang.SuppressWarnings("all") B $fillValuesFrom(C instance) { + protected @java.lang.Override @java.lang.SuppressWarnings("all") B $fillValuesFrom(final C instance) { super.$fillValuesFrom(instance); field3(instance.field3); return self(); @@ -120,10 +120,10 @@ public class SuperBuilderBasicToBuilder { return new ChildBuilderImpl().$fillValuesFrom(this); } } - public SuperBuilderBasic() { + public SuperBuilderBasicToBuilder() { super(); } public static void test() { - Child x = Child.builder().field3(0.0).field1(5).item("").build(); + Child x = Child.builder().field3(0.0).field1(5).item("").build().toBuilder().build(); } } -- cgit From a2b884c71194c780d37ccbd84561abd6a0f63741 Mon Sep 17 00:00:00 2001 From: Jan Rieke Date: Tue, 11 Sep 2018 20:37:16 +0200 Subject: SuperBuilder: fixed ObtainVia --- .../after-delombok/SuperBuilderBasicToBuilder.java | 38 +++++++++++++++++++++- .../after-ecj/SuperBuilderBasicToBuilder.java | 33 +++++++++++++++++-- .../before/SuperBuilderBasicToBuilder.java | 14 ++++++++ 3 files changed, 82 insertions(+), 3 deletions(-) (limited to 'test/transform/resource') diff --git a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java index 404984b9..7d34d28a 100644 --- a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java @@ -2,16 +2,34 @@ import java.util.List; public class SuperBuilderBasicToBuilder { public static class Parent { int field1; + int obtainViaField; + int obtainViaMethod; + String obtainViaStaticMethod; List items; + int method() { + return 2; + } + private static String staticMethod(Parent instance) { + return "staticMethod"; + } @java.lang.SuppressWarnings("all") public static abstract class ParentBuilder> { @java.lang.SuppressWarnings("all") private int field1; @java.lang.SuppressWarnings("all") + private int obtainViaField; + @java.lang.SuppressWarnings("all") + private int obtainViaMethod; + @java.lang.SuppressWarnings("all") + private String obtainViaStaticMethod; + @java.lang.SuppressWarnings("all") private java.util.ArrayList items; @java.lang.SuppressWarnings("all") protected B $fillValuesFrom(final C instance) { this.field1(instance.field1); + this.obtainViaField(instance.field1); + this.obtainViaMethod(instance.method()); + this.obtainViaStaticMethod(Parent.staticMethod(instance)); this.items(instance.items == null ? java.util.Collections.emptyList() : instance.items); return self(); } @@ -25,6 +43,21 @@ public class SuperBuilderBasicToBuilder { return self(); } @java.lang.SuppressWarnings("all") + public B obtainViaField(final int obtainViaField) { + this.obtainViaField = obtainViaField; + return self(); + } + @java.lang.SuppressWarnings("all") + public B obtainViaMethod(final int obtainViaMethod) { + this.obtainViaMethod = obtainViaMethod; + return self(); + } + @java.lang.SuppressWarnings("all") + public B obtainViaStaticMethod(final String obtainViaStaticMethod) { + this.obtainViaStaticMethod = obtainViaStaticMethod; + return self(); + } + @java.lang.SuppressWarnings("all") public B item(final String item) { if (this.items == null) this.items = new java.util.ArrayList(); this.items.add(item); @@ -44,7 +77,7 @@ public class SuperBuilderBasicToBuilder { @java.lang.Override @java.lang.SuppressWarnings("all") public java.lang.String toString() { - return "SuperBuilderBasicToBuilder.Parent.ParentBuilder(field1=" + this.field1 + ", items=" + this.items + ")"; + return "SuperBuilderBasicToBuilder.Parent.ParentBuilder(field1=" + this.field1 + ", obtainViaField=" + this.obtainViaField + ", obtainViaMethod=" + this.obtainViaMethod + ", obtainViaStaticMethod=" + this.obtainViaStaticMethod + ", items=" + this.items + ")"; } } @java.lang.SuppressWarnings("all") @@ -66,6 +99,9 @@ public class SuperBuilderBasicToBuilder { @java.lang.SuppressWarnings("all") protected Parent(final ParentBuilder b) { this.field1 = b.field1; + this.obtainViaField = b.obtainViaField; + this.obtainViaMethod = b.obtainViaMethod; + this.obtainViaStaticMethod = b.obtainViaStaticMethod; java.util.List items; switch (b.items == null ? 0 : b.items.size()) { case 0: diff --git a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java index 2b294d65..974d933d 100644 --- a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java @@ -1,15 +1,20 @@ import java.util.List; - public class SuperBuilderBasicToBuilder { public static @lombok.experimental.SuperBuilder(toBuilder = true) class Parent { public static abstract @java.lang.SuppressWarnings("all") class ParentBuilder> { private @java.lang.SuppressWarnings("all") int field1; + private @java.lang.SuppressWarnings("all") int obtainViaField; + private @java.lang.SuppressWarnings("all") int obtainViaMethod; + private @java.lang.SuppressWarnings("all") String obtainViaStaticMethod; private @java.lang.SuppressWarnings("all") java.util.ArrayList items; public ParentBuilder() { super(); } protected @java.lang.SuppressWarnings("all") B $fillValuesFrom(final C instance) { field1(instance.field1); + obtainViaField(instance.field1); + obtainViaMethod(instance.method()); + obtainViaStaticMethod(Parent.staticMethod(instance)); items(((instance.items == null) ? java.util.Collections.emptyList() : instance.items)); return self(); } @@ -19,6 +24,18 @@ public class SuperBuilderBasicToBuilder { this.field1 = field1; return self(); } + public @java.lang.SuppressWarnings("all") B obtainViaField(final int obtainViaField) { + this.obtainViaField = obtainViaField; + return self(); + } + public @java.lang.SuppressWarnings("all") B obtainViaMethod(final int obtainViaMethod) { + this.obtainViaMethod = obtainViaMethod; + return self(); + } + public @java.lang.SuppressWarnings("all") B obtainViaStaticMethod(final String obtainViaStaticMethod) { + this.obtainViaStaticMethod = obtainViaStaticMethod; + return self(); + } public @java.lang.SuppressWarnings("all") B item(String item) { if ((this.items == null)) this.items = new java.util.ArrayList(); @@ -37,7 +54,7 @@ public class SuperBuilderBasicToBuilder { return self(); } public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() { - return (((("SuperBuilderBasicToBuilder.Parent.ParentBuilder(field1=" + this.field1) + ", items=") + this.items) + ")"); + return (((((((((("SuperBuilderBasicToBuilder.Parent.ParentBuilder(field1=" + this.field1) + ", obtainViaField=") + this.obtainViaField) + ", obtainViaMethod=") + this.obtainViaMethod) + ", obtainViaStaticMethod=") + this.obtainViaStaticMethod) + ", items=") + this.items) + ")"); } } private static final @java.lang.SuppressWarnings("all") class ParentBuilderImpl extends ParentBuilder { @@ -52,10 +69,22 @@ public class SuperBuilderBasicToBuilder { } } int field1; + @lombok.Builder.ObtainVia(field = "field1") int obtainViaField; + @lombok.Builder.ObtainVia(method = "method") int obtainViaMethod; + @lombok.Builder.ObtainVia(method = "staticMethod",isStatic = true) String obtainViaStaticMethod; @lombok.Singular List items; + int method() { + return 2; + } + private static String staticMethod(Parent instance) { + return "staticMethod"; + } protected @java.lang.SuppressWarnings("all") Parent(final ParentBuilder b) { super(); this.field1 = b.field1; + this.obtainViaField = b.obtainViaField; + this.obtainViaMethod = b.obtainViaMethod; + this.obtainViaStaticMethod = b.obtainViaStaticMethod; java.util.List items; switch (((b.items == null) ? 0 : b.items.size())) { case 0 : diff --git a/test/transform/resource/before/SuperBuilderBasicToBuilder.java b/test/transform/resource/before/SuperBuilderBasicToBuilder.java index bc3578f5..4dfac613 100644 --- a/test/transform/resource/before/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/before/SuperBuilderBasicToBuilder.java @@ -4,7 +4,21 @@ public class SuperBuilderBasicToBuilder { @lombok.experimental.SuperBuilder(toBuilder=true) public static class Parent { int field1; + @lombok.Builder.ObtainVia(field="field1") + int obtainViaField; + @lombok.Builder.ObtainVia(method="method") + int obtainViaMethod; + @lombok.Builder.ObtainVia(method = "staticMethod", isStatic = true) + String obtainViaStaticMethod; @lombok.Singular List items; + + int method() { + return 2; + } + + private static String staticMethod(Parent instance) { + return "staticMethod"; + } } @lombok.experimental.SuperBuilder(toBuilder=true) -- cgit From ddd42acb599d45c432a200313a0f403a8a2a3928 Mon Sep 17 00:00:00 2001 From: Jan Rieke Date: Tue, 11 Sep 2018 21:39:10 +0200 Subject: adjusted toBuilder tests to cover private variables (impl not yet done) --- .../after-delombok/SuperBuilderBasicToBuilder.java | 26 ++++++++++++++-------- .../after-ecj/SuperBuilderBasicToBuilder.java | 24 ++++++++++++-------- .../before/SuperBuilderBasicToBuilder.java | 6 ++--- 3 files changed, 35 insertions(+), 21 deletions(-) (limited to 'test/transform/resource') diff --git a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java index 7d34d28a..e44b3aeb 100644 --- a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java @@ -1,12 +1,12 @@ import java.util.List; public class SuperBuilderBasicToBuilder { public static class Parent { - int field1; + private int field1; int obtainViaField; int obtainViaMethod; String obtainViaStaticMethod; List items; - int method() { + private int method() { return 2; } private static String staticMethod(Parent instance) { @@ -26,11 +26,7 @@ public class SuperBuilderBasicToBuilder { private java.util.ArrayList items; @java.lang.SuppressWarnings("all") protected B $fillValuesFrom(final C instance) { - this.field1(instance.field1); - this.obtainViaField(instance.field1); - this.obtainViaMethod(instance.method()); - this.obtainViaStaticMethod(Parent.staticMethod(instance)); - this.items(instance.items == null ? java.util.Collections.emptyList() : instance.items); + ParentBuilderImpl.$fillValuesFromInto(instance, this); return self(); } @java.lang.SuppressWarnings("all") @@ -82,6 +78,14 @@ public class SuperBuilderBasicToBuilder { } @java.lang.SuppressWarnings("all") private static final class ParentBuilderImpl extends ParentBuilder { + @java.lang.SuppressWarnings("all") + private static void $fillValuesFromInto(Parent instance, ParentBuilder b) { + b.field1(instance.field1); + b.obtainViaField(instance.field1); + b.obtainViaMethod(instance.method()); + b.obtainViaStaticMethod(Parent.staticMethod(instance)); + b.items(instance.items == null ? java.util.Collections.emptyList() : instance.items); + } @java.lang.SuppressWarnings("all") private ParentBuilderImpl() { } @@ -125,7 +129,7 @@ public class SuperBuilderBasicToBuilder { } } public static class Child extends Parent { - double field3; + private double field3; @java.lang.SuppressWarnings("all") public static abstract class ChildBuilder> extends Parent.ParentBuilder { @java.lang.SuppressWarnings("all") @@ -134,7 +138,7 @@ public class SuperBuilderBasicToBuilder { @java.lang.SuppressWarnings("all") protected B $fillValuesFrom(final C instance) { super.$fillValuesFrom(instance); - this.field3(instance.field3); + ChildBuilderImpl.$fillValuesFromInto(instance, this); return self(); } @java.lang.Override @@ -156,6 +160,10 @@ public class SuperBuilderBasicToBuilder { } @java.lang.SuppressWarnings("all") private static final class ChildBuilderImpl extends ChildBuilder { + @java.lang.SuppressWarnings("all") + private static void $fillValuesFromInto(Parent instance, ParentBuilder b) { + b.field3(instance.field3); + } @java.lang.SuppressWarnings("all") private ChildBuilderImpl() { } diff --git a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java index 974d933d..6ff2849d 100644 --- a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java @@ -11,11 +11,7 @@ public class SuperBuilderBasicToBuilder { super(); } protected @java.lang.SuppressWarnings("all") B $fillValuesFrom(final C instance) { - field1(instance.field1); - obtainViaField(instance.field1); - obtainViaMethod(instance.method()); - obtainViaStaticMethod(Parent.staticMethod(instance)); - items(((instance.items == null) ? java.util.Collections.emptyList() : instance.items)); + ParentBuilderImpl.$fillValuesFromInto(instance, this); return self(); } protected abstract @java.lang.SuppressWarnings("all") B self(); @@ -61,6 +57,13 @@ public class SuperBuilderBasicToBuilder { private ParentBuilderImpl() { super(); } + private static @java.lang.SuppressWarnings("all") void $fillValuesFromInto(Parent instance, ParentBuilder b) { + b.field1(instance.field1); + b.obtainViaField(instance.field1); + b.obtainViaMethod(instance.method()); + b.obtainViaStaticMethod(Parent.staticMethod(instance)); + b.items(((instance.items == null) ? java.util.Collections.emptyList() : instance.items)); + } protected @java.lang.Override @java.lang.SuppressWarnings("all") ParentBuilderImpl self() { return this; } @@ -68,12 +71,12 @@ public class SuperBuilderBasicToBuilder { return new Parent(this); } } - int field1; + private int field1; @lombok.Builder.ObtainVia(field = "field1") int obtainViaField; @lombok.Builder.ObtainVia(method = "method") int obtainViaMethod; @lombok.Builder.ObtainVia(method = "staticMethod",isStatic = true) String obtainViaStaticMethod; @lombok.Singular List items; - int method() { + private int method() { return 2; } private static String staticMethod(Parent instance) { @@ -113,7 +116,7 @@ public class SuperBuilderBasicToBuilder { } protected @java.lang.Override @java.lang.SuppressWarnings("all") B $fillValuesFrom(final C instance) { super.$fillValuesFrom(instance); - field3(instance.field3); + ChildBuilderImpl.$fillValuesFromInto(instance, this); return self(); } protected abstract @java.lang.Override @java.lang.SuppressWarnings("all") B self(); @@ -130,6 +133,9 @@ public class SuperBuilderBasicToBuilder { private ChildBuilderImpl() { super(); } + private static @java.lang.SuppressWarnings("all") void $fillValuesFromInto(Child instance, ChildBuilder b) { + b.field3(instance.field3); + } protected @java.lang.Override @java.lang.SuppressWarnings("all") ChildBuilderImpl self() { return this; } @@ -137,7 +143,7 @@ public class SuperBuilderBasicToBuilder { return new Child(this); } } - double field3; + private double field3; protected @java.lang.SuppressWarnings("all") Child(final ChildBuilder b) { super(b); this.field3 = b.field3; diff --git a/test/transform/resource/before/SuperBuilderBasicToBuilder.java b/test/transform/resource/before/SuperBuilderBasicToBuilder.java index 4dfac613..93161443 100644 --- a/test/transform/resource/before/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/before/SuperBuilderBasicToBuilder.java @@ -3,7 +3,7 @@ import java.util.List; public class SuperBuilderBasicToBuilder { @lombok.experimental.SuperBuilder(toBuilder=true) public static class Parent { - int field1; + private int field1; @lombok.Builder.ObtainVia(field="field1") int obtainViaField; @lombok.Builder.ObtainVia(method="method") @@ -12,7 +12,7 @@ public class SuperBuilderBasicToBuilder { String obtainViaStaticMethod; @lombok.Singular List items; - int method() { + private int method() { return 2; } @@ -23,7 +23,7 @@ public class SuperBuilderBasicToBuilder { @lombok.experimental.SuperBuilder(toBuilder=true) public static class Child extends Parent { - double field3; + private double field3; } public static void test() { -- cgit From 14fa70ae183a1d15b8cee30d10775e0da281114b Mon Sep 17 00:00:00 2001 From: Jan Rieke Date: Fri, 14 Sep 2018 09:28:02 +0200 Subject: SuperBuilder toBuilder: renamed generated static helper method --- .../resource/after-delombok/SuperBuilderBasicToBuilder.java | 8 ++++---- test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'test/transform/resource') diff --git a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java index e44b3aeb..c5099480 100644 --- a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java @@ -26,7 +26,7 @@ public class SuperBuilderBasicToBuilder { private java.util.ArrayList items; @java.lang.SuppressWarnings("all") protected B $fillValuesFrom(final C instance) { - ParentBuilderImpl.$fillValuesFromInto(instance, this); + ParentBuilderImpl.$fillValuesFromInstanceIntoBuilder(instance, this); return self(); } @java.lang.SuppressWarnings("all") @@ -79,7 +79,7 @@ public class SuperBuilderBasicToBuilder { @java.lang.SuppressWarnings("all") private static final class ParentBuilderImpl extends ParentBuilder { @java.lang.SuppressWarnings("all") - private static void $fillValuesFromInto(Parent instance, ParentBuilder b) { + private static void $fillValuesFromInstanceIntoBuilder(Parent instance, ParentBuilder b) { b.field1(instance.field1); b.obtainViaField(instance.field1); b.obtainViaMethod(instance.method()); @@ -138,7 +138,7 @@ public class SuperBuilderBasicToBuilder { @java.lang.SuppressWarnings("all") protected B $fillValuesFrom(final C instance) { super.$fillValuesFrom(instance); - ChildBuilderImpl.$fillValuesFromInto(instance, this); + ChildBuilderImpl.$fillValuesFromInstanceIntoBuilder(instance, this); return self(); } @java.lang.Override @@ -161,7 +161,7 @@ public class SuperBuilderBasicToBuilder { @java.lang.SuppressWarnings("all") private static final class ChildBuilderImpl extends ChildBuilder { @java.lang.SuppressWarnings("all") - private static void $fillValuesFromInto(Parent instance, ParentBuilder b) { + private static void $fillValuesFromInstanceIntoBuilder(Parent instance, ParentBuilder b) { b.field3(instance.field3); } @java.lang.SuppressWarnings("all") diff --git a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java index 6ff2849d..fac9ab55 100644 --- a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java @@ -11,7 +11,7 @@ public class SuperBuilderBasicToBuilder { super(); } protected @java.lang.SuppressWarnings("all") B $fillValuesFrom(final C instance) { - ParentBuilderImpl.$fillValuesFromInto(instance, this); + ParentBuilderImpl.$fillValuesFromInstanceIntoBuilder(instance, this); return self(); } protected abstract @java.lang.SuppressWarnings("all") B self(); @@ -57,7 +57,7 @@ public class SuperBuilderBasicToBuilder { private ParentBuilderImpl() { super(); } - private static @java.lang.SuppressWarnings("all") void $fillValuesFromInto(Parent instance, ParentBuilder b) { + private static @java.lang.SuppressWarnings("all") void $fillValuesFromInstanceIntoBuilder(Parent instance, ParentBuilder b) { b.field1(instance.field1); b.obtainViaField(instance.field1); b.obtainViaMethod(instance.method()); @@ -116,7 +116,7 @@ public class SuperBuilderBasicToBuilder { } protected @java.lang.Override @java.lang.SuppressWarnings("all") B $fillValuesFrom(final C instance) { super.$fillValuesFrom(instance); - ChildBuilderImpl.$fillValuesFromInto(instance, this); + ChildBuilderImpl.$fillValuesFromInstanceIntoBuilder(instance, this); return self(); } protected abstract @java.lang.Override @java.lang.SuppressWarnings("all") B self(); @@ -133,7 +133,7 @@ public class SuperBuilderBasicToBuilder { private ChildBuilderImpl() { super(); } - private static @java.lang.SuppressWarnings("all") void $fillValuesFromInto(Child instance, ChildBuilder b) { + private static @java.lang.SuppressWarnings("all") void $fillValuesFromInstanceIntoBuilder(Child instance, ChildBuilder b) { b.field3(instance.field3); } protected @java.lang.Override @java.lang.SuppressWarnings("all") ChildBuilderImpl self() { -- cgit From f5fff49f73ceabb776f470a9ed346ace0ce12be6 Mon Sep 17 00:00:00 2001 From: Jan Rieke Date: Fri, 14 Sep 2018 22:53:02 +0200 Subject: SuperBuilder toBuilder: generate static toBuilder helper method (ecj) --- .../after-delombok/SuperBuilderBasicToBuilder.java | 4 ++-- .../resource/after-ecj/SuperBuilderBasicToBuilder.java | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'test/transform/resource') diff --git a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java index c5099480..dc0b6e0c 100644 --- a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java @@ -79,7 +79,7 @@ public class SuperBuilderBasicToBuilder { @java.lang.SuppressWarnings("all") private static final class ParentBuilderImpl extends ParentBuilder { @java.lang.SuppressWarnings("all") - private static void $fillValuesFromInstanceIntoBuilder(Parent instance, ParentBuilder b) { + private static void $fillValuesFromInstanceIntoBuilder(final Parent instance, final ParentBuilder b) { b.field1(instance.field1); b.obtainViaField(instance.field1); b.obtainViaMethod(instance.method()); @@ -161,7 +161,7 @@ public class SuperBuilderBasicToBuilder { @java.lang.SuppressWarnings("all") private static final class ChildBuilderImpl extends ChildBuilder { @java.lang.SuppressWarnings("all") - private static void $fillValuesFromInstanceIntoBuilder(Parent instance, ParentBuilder b) { + private static void $fillValuesFromInstanceIntoBuilder(final Parent instance, final ParentBuilder b) { b.field3(instance.field3); } @java.lang.SuppressWarnings("all") diff --git a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java index fac9ab55..be819d05 100644 --- a/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-ecj/SuperBuilderBasicToBuilder.java @@ -57,7 +57,7 @@ public class SuperBuilderBasicToBuilder { private ParentBuilderImpl() { super(); } - private static @java.lang.SuppressWarnings("all") void $fillValuesFromInstanceIntoBuilder(Parent instance, ParentBuilder b) { + private static @java.lang.SuppressWarnings("all") void $fillValuesFromInstanceIntoBuilder(final Parent instance, final ParentBuilder b) { b.field1(instance.field1); b.obtainViaField(instance.field1); b.obtainViaMethod(instance.method()); @@ -101,12 +101,12 @@ public class SuperBuilderBasicToBuilder { } this.items = items; } - public static @java.lang.SuppressWarnings("all") ParentBuilder builder() { - return new ParentBuilderImpl(); - } public @java.lang.SuppressWarnings("all") ParentBuilder toBuilder() { return new ParentBuilderImpl().$fillValuesFrom(this); } + public static @java.lang.SuppressWarnings("all") ParentBuilder builder() { + return new ParentBuilderImpl(); + } } public static @lombok.experimental.SuperBuilder(toBuilder = true) class Child extends Parent { public static abstract @java.lang.SuppressWarnings("all") class ChildBuilder> extends Parent.ParentBuilder { @@ -133,7 +133,7 @@ public class SuperBuilderBasicToBuilder { private ChildBuilderImpl() { super(); } - private static @java.lang.SuppressWarnings("all") void $fillValuesFromInstanceIntoBuilder(Child instance, ChildBuilder b) { + private static @java.lang.SuppressWarnings("all") void $fillValuesFromInstanceIntoBuilder(final Child instance, final ChildBuilder b) { b.field3(instance.field3); } protected @java.lang.Override @java.lang.SuppressWarnings("all") ChildBuilderImpl self() { @@ -148,12 +148,12 @@ public class SuperBuilderBasicToBuilder { super(b); this.field3 = b.field3; } - public static @java.lang.SuppressWarnings("all") ChildBuilder builder() { - return new ChildBuilderImpl(); - } public @java.lang.SuppressWarnings("all") ChildBuilder toBuilder() { return new ChildBuilderImpl().$fillValuesFrom(this); } + public static @java.lang.SuppressWarnings("all") ChildBuilder builder() { + return new ChildBuilderImpl(); + } } public SuperBuilderBasicToBuilder() { super(); -- cgit From 7a287670f4bb6b22db920b980ce5dde4fcef5af5 Mon Sep 17 00:00:00 2001 From: Jan Rieke Date: Sun, 16 Sep 2018 15:51:19 +0200 Subject: SuperBuilder toBuilder: generate static toBuilder helper method (javac) --- .../transform/resource/after-delombok/SuperBuilderBasicToBuilder.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'test/transform/resource') diff --git a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java index dc0b6e0c..7a80f019 100644 --- a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java @@ -79,7 +79,7 @@ public class SuperBuilderBasicToBuilder { @java.lang.SuppressWarnings("all") private static final class ParentBuilderImpl extends ParentBuilder { @java.lang.SuppressWarnings("all") - private static void $fillValuesFromInstanceIntoBuilder(final Parent instance, final ParentBuilder b) { + private static void $fillValuesFromInstanceIntoBuilder(final Parent instance, final ParentBuilder b) { b.field1(instance.field1); b.obtainViaField(instance.field1); b.obtainViaMethod(instance.method()); @@ -161,7 +161,7 @@ public class SuperBuilderBasicToBuilder { @java.lang.SuppressWarnings("all") private static final class ChildBuilderImpl extends ChildBuilder { @java.lang.SuppressWarnings("all") - private static void $fillValuesFromInstanceIntoBuilder(final Parent instance, final ParentBuilder b) { + private static void $fillValuesFromInstanceIntoBuilder(final Child instance, final ChildBuilder b) { b.field3(instance.field3); } @java.lang.SuppressWarnings("all") -- cgit From 790e060380f01ea113bfeee25b3138ea267ebcb4 Mon Sep 17 00:00:00 2001 From: Jan Rieke Date: Sun, 16 Sep 2018 17:24:39 +0200 Subject: SuperBuilder toBuilder: moved static helper method to builder impl --- .../SuperBuilderAbstractToBuilder.java | 168 +++++++++++++++++++++ .../after-delombok/SuperBuilderBasicToBuilder.java | 28 ++-- .../after-ecj/SuperBuilderAbstractToBuilder.java | 131 ++++++++++++++++ .../after-ecj/SuperBuilderBasicToBuilder.java | 24 +-- .../before/SuperBuilderAbstractToBuilder.java | 20 +++ 5 files changed, 345 insertions(+), 26 deletions(-) create mode 100644 test/transform/resource/after-delombok/SuperBuilderAbstractToBuilder.java create mode 100644 test/transform/resource/after-ecj/SuperBuilderAbstractToBuilder.java create mode 100644 test/transform/resource/before/SuperBuilderAbstractToBuilder.java (limited to 'test/transform/resource') diff --git a/test/transform/resource/after-delombok/SuperBuilderAbstractToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderAbstractToBuilder.java new file mode 100644 index 00000000..096bd533 --- /dev/null +++ b/test/transform/resource/after-delombok/SuperBuilderAbstractToBuilder.java @@ -0,0 +1,168 @@ +public class SuperBuilderAbstractToBuilder { + public static class Parent { + int parentField; + @java.lang.SuppressWarnings("all") + public static abstract class ParentBuilder> { + @java.lang.SuppressWarnings("all") + private int parentField; + @java.lang.SuppressWarnings("all") + protected B $fillValuesFrom(final C instance) { + ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); + return self(); + } + @java.lang.SuppressWarnings("all") + private static void $fillValuesFromInstanceIntoBuilder(final Parent instance, final ParentBuilder b) { + b.parentField(instance.parentField); + } + @java.lang.SuppressWarnings("all") + protected abstract B self(); + @java.lang.SuppressWarnings("all") + public abstract C build(); + @java.lang.SuppressWarnings("all") + public B parentField(final int parentField) { + this.parentField = parentField; + return self(); + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public java.lang.String toString() { + return "SuperBuilderAbstractToBuilder.Parent.ParentBuilder(parentField=" + this.parentField + ")"; + } + } + @java.lang.SuppressWarnings("all") + private static final class ParentBuilderImpl extends ParentBuilder { + @java.lang.SuppressWarnings("all") + private ParentBuilderImpl() { + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + protected ParentBuilderImpl self() { + return this; + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public Parent build() { + return new Parent(this); + } + } + @java.lang.SuppressWarnings("all") + protected Parent(final ParentBuilder b) { + this.parentField = b.parentField; + } + @java.lang.SuppressWarnings("all") + public static ParentBuilder builder() { + return new ParentBuilderImpl(); + } + @java.lang.SuppressWarnings("all") + public ParentBuilder toBuilder() { + return new ParentBuilderImpl().$fillValuesFrom(this); + } + } + public static abstract class Child extends Parent { + double childField; + @java.lang.SuppressWarnings("all") + public static abstract class ChildBuilder> extends Parent.ParentBuilder { + @java.lang.SuppressWarnings("all") + private double childField; + @java.lang.Override + @java.lang.SuppressWarnings("all") + protected B $fillValuesFrom(final C instance) { + super.$fillValuesFrom(instance); + ChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); + return self(); + } + @java.lang.SuppressWarnings("all") + private static void $fillValuesFromInstanceIntoBuilder(final Child instance, final ChildBuilder b) { + b.childField(instance.childField); + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + protected abstract B self(); + @java.lang.Override + @java.lang.SuppressWarnings("all") + public abstract C build(); + @java.lang.SuppressWarnings("all") + public B childField(final double childField) { + this.childField = childField; + return self(); + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public java.lang.String toString() { + return "SuperBuilderAbstractToBuilder.Child.ChildBuilder(super=" + super.toString() + ", childField=" + this.childField + ")"; + } + } + @java.lang.SuppressWarnings("all") + protected Child(final ChildBuilder b) { + super(b); + this.childField = b.childField; + } + } + public static class GrandChild extends Child { + String grandChildField; + @java.lang.SuppressWarnings("all") + public static abstract class GrandChildBuilder> extends Child.ChildBuilder { + @java.lang.SuppressWarnings("all") + private String grandChildField; + @java.lang.Override + @java.lang.SuppressWarnings("all") + protected B $fillValuesFrom(final C instance) { + super.$fillValuesFrom(instance); + GrandChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); + return self(); + } + @java.lang.SuppressWarnings("all") + private static void $fillValuesFromInstanceIntoBuilder(final GrandChild instance, final GrandChildBuilder b) { + b.grandChildField(instance.grandChildField); + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + protected abstract B self(); + @java.lang.Override + @java.lang.SuppressWarnings("all") + public abstract C build(); + @java.lang.SuppressWarnings("all") + public B grandChildField(final String grandChildField) { + this.grandChildField = grandChildField; + return self(); + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public java.lang.String toString() { + return "SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder(super=" + super.toString() + ", grandChildField=" + this.grandChildField + ")"; + } + } + @java.lang.SuppressWarnings("all") + private static final class GrandChildBuilderImpl extends GrandChildBuilder { + @java.lang.SuppressWarnings("all") + private GrandChildBuilderImpl() { + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + protected GrandChildBuilderImpl self() { + return this; + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public GrandChild build() { + return new GrandChild(this); + } + } + @java.lang.SuppressWarnings("all") + protected GrandChild(final GrandChildBuilder b) { + super(b); + this.grandChildField = b.grandChildField; + } + @java.lang.SuppressWarnings("all") + public static GrandChildBuilder builder() { + return new GrandChildBuilderImpl(); + } + @java.lang.SuppressWarnings("all") + public GrandChildBuilder toBuilder() { + return new GrandChildBuilderImpl().$fillValuesFrom(this); + } + } + public static void test() { + GrandChild x = GrandChild.builder().grandChildField("").parentField(5).childField(2.5).build().toBuilder().build(); + } +} diff --git a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java index 7a80f019..dc0b4e70 100644 --- a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java @@ -26,10 +26,18 @@ public class SuperBuilderBasicToBuilder { private java.util.ArrayList items; @java.lang.SuppressWarnings("all") protected B $fillValuesFrom(final C instance) { - ParentBuilderImpl.$fillValuesFromInstanceIntoBuilder(instance, this); + ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); return self(); } @java.lang.SuppressWarnings("all") + private static void $fillValuesFromInstanceIntoBuilder(final Parent instance, final ParentBuilder b) { + b.field1(instance.field1); + b.obtainViaField(instance.field1); + b.obtainViaMethod(instance.method()); + b.obtainViaStaticMethod(Parent.staticMethod(instance)); + b.items(instance.items == null ? java.util.Collections.emptyList() : instance.items); + } + @java.lang.SuppressWarnings("all") protected abstract B self(); @java.lang.SuppressWarnings("all") public abstract C build(); @@ -78,14 +86,6 @@ public class SuperBuilderBasicToBuilder { } @java.lang.SuppressWarnings("all") private static final class ParentBuilderImpl extends ParentBuilder { - @java.lang.SuppressWarnings("all") - private static void $fillValuesFromInstanceIntoBuilder(final Parent instance, final ParentBuilder b) { - b.field1(instance.field1); - b.obtainViaField(instance.field1); - b.obtainViaMethod(instance.method()); - b.obtainViaStaticMethod(Parent.staticMethod(instance)); - b.items(instance.items == null ? java.util.Collections.emptyList() : instance.items); - } @java.lang.SuppressWarnings("all") private ParentBuilderImpl() { } @@ -138,9 +138,13 @@ public class SuperBuilderBasicToBuilder { @java.lang.SuppressWarnings("all") protected B $fillValuesFrom(final C instance) { super.$fillValuesFrom(instance); - ChildBuilderImpl.$fillValuesFromInstanceIntoBuilder(instance, this); + ChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); return self(); } + @java.lang.SuppressWarnings("all") + private static void $fillValuesFromInstanceIntoBuilder(final Child instance, final ChildBuilder b) { + b.field3(instance.field3); + } @java.lang.Override @java.lang.SuppressWarnings("all") protected abstract B self(); @@ -160,10 +164,6 @@ public class SuperBuilderBasicToBuilder { } @java.lang.SuppressWarnings("all") private static final class ChildBuilderImpl extends ChildBuilder { - @java.lang.SuppressWarnings("all") - private static void $fillValuesFromInstanceIntoBuilder(final Child instance, final ChildBuilder b) { - b.field3(instance.field3); - } @java.lang.SuppressWarnings("all") private ChildBuilderImpl() { } diff --git a/test/transform/resource/after-ecj/SuperBuilderAbstractToBuilder.java b/test/transform/resource/after-ecj/SuperBuilderAbstractToBuilder.java new file mode 100644 index 00000000..668f6acf --- /dev/null +++ b/test/transform/resource/after-ecj/SuperBuilderAbstractToBuilder.java @@ -0,0 +1,131 @@ +public class SuperBuilderAbstractToBuilder { + public static @lombok.experimental.SuperBuilder(toBuilder = true) class Parent { + public static abstract @java.lang.SuppressWarnings("all") class ParentBuilder> { + private @java.lang.SuppressWarnings("all") int parentField; + public ParentBuilder() { + super(); + } + protected @java.lang.SuppressWarnings("all") B $fillValuesFrom(final C instance) { + ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); + return self(); + } + private static @java.lang.SuppressWarnings("all") void $fillValuesFromInstanceIntoBuilder(final Parent instance, final ParentBuilder b) { + b.parentField(instance.parentField); + } + protected abstract @java.lang.SuppressWarnings("all") B self(); + public abstract @java.lang.SuppressWarnings("all") C build(); + public @java.lang.SuppressWarnings("all") B parentField(final int parentField) { + this.parentField = parentField; + return self(); + } + public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() { + return (("SuperBuilderAbstractToBuilder.Parent.ParentBuilder(parentField=" + this.parentField) + ")"); + } + } + private static final @java.lang.SuppressWarnings("all") class ParentBuilderImpl extends ParentBuilder { + private ParentBuilderImpl() { + super(); + } + protected @java.lang.Override @java.lang.SuppressWarnings("all") ParentBuilderImpl self() { + return this; + } + public @java.lang.Override @java.lang.SuppressWarnings("all") Parent build() { + return new Parent(this); + } + } + int parentField; + protected @java.lang.SuppressWarnings("all") Parent(final ParentBuilder b) { + super(); + this.parentField = b.parentField; + } + public @java.lang.SuppressWarnings("all") ParentBuilder toBuilder() { + return new ParentBuilderImpl().$fillValuesFrom(this); + } + publi