aboutsummaryrefslogtreecommitdiff
path: root/test/transform
diff options
context:
space:
mode:
authorBulgakov Alexander <buls@yandex.ru>2019-05-04 23:41:14 +0300
committerBulgakov Alexander <buls@yandex.ru>2019-05-04 23:41:14 +0300
commit8276dee2551d3f8d29f414a0a762565eec381258 (patch)
tree58e279150b6577b26e3a7a9c24aed4e1b347fda1 /test/transform
parentafe9e374975c85a87fdf6c0d45171ac44f616a37 (diff)
parent2611e6bf9830e4971dcae3abedfede59f3cc86a5 (diff)
downloadlombok-8276dee2551d3f8d29f414a0a762565eec381258.tar.gz
lombok-8276dee2551d3f8d29f414a0a762565eec381258.tar.bz2
lombok-8276dee2551d3f8d29f414a0a762565eec381258.zip
Merge branch 'feature/typeInferenceImprovements' of https://github.com/bulgakovalexander/lombok into feature/typeInferenceImprovements
Diffstat (limited to 'test/transform')
-rw-r--r--test/transform/resource/after-delombok/BuilderSimple.java4
-rw-r--r--test/transform/resource/after-delombok/FieldNameConstantsUppercased.java12
-rw-r--r--test/transform/resource/after-delombok/SuperBuilderWithGenericsAndToBuilder.java53
-rw-r--r--test/transform/resource/after-delombok/ValDelegateMethodReference.java65
-rw-r--r--test/transform/resource/after-ecj/BuilderSimple.java6
-rw-r--r--test/transform/resource/after-ecj/FieldNameConstantsUppercased.java23
-rw-r--r--test/transform/resource/after-ecj/SuperBuilderWithGenericsAndToBuilder.java60
-rw-r--r--test/transform/resource/after-ecj/ValDelegateMethodReference.java58
-rw-r--r--test/transform/resource/before/BuilderSimple.java2
-rw-r--r--test/transform/resource/before/FieldNameConstantsUppercased.java12
-rw-r--r--test/transform/resource/before/SuperBuilderWithGenericsAndToBuilder.java6
-rw-r--r--test/transform/resource/before/ValDelegateMethodReference.java35
12 files changed, 288 insertions, 48 deletions
diff --git a/test/transform/resource/after-delombok/BuilderSimple.java b/test/transform/resource/after-delombok/BuilderSimple.java
index e3821c9a..4cd20b23 100644
--- a/test/transform/resource/after-delombok/BuilderSimple.java
+++ b/test/transform/resource/after-delombok/BuilderSimple.java
@@ -10,7 +10,7 @@ class BuilderSimple<T> {
this.also = also;
}
@java.lang.SuppressWarnings("all")
- public static class BuilderSimpleBuilder<T> {
+ protected static class BuilderSimpleBuilder<T> {
@java.lang.SuppressWarnings("all")
private int yes;
@java.lang.SuppressWarnings("all")
@@ -39,7 +39,7 @@ class BuilderSimple<T> {
}
}
@java.lang.SuppressWarnings("all")
- public static <T> BuilderSimpleBuilder<T> builder() {
+ protected static <T> BuilderSimpleBuilder<T> builder() {
return new BuilderSimpleBuilder<T>();
}
}
diff --git a/test/transform/resource/after-delombok/FieldNameConstantsUppercased.java b/test/transform/resource/after-delombok/FieldNameConstantsUppercased.java
new file mode 100644
index 00000000..dd7de86a
--- /dev/null
+++ b/test/transform/resource/after-delombok/FieldNameConstantsUppercased.java
@@ -0,0 +1,12 @@
+public class FieldNameConstantsUppercased {
+ String iAmADvdPlayer;
+ int $skipMe;
+ static double skipMeToo;
+ int andMe;
+ String butPrintMePlease;
+ @java.lang.SuppressWarnings("all")
+ static final class Fields {
+ public static final java.lang.String I_AM_A_DVD_PLAYER = "iAmADvdPlayer";
+ public static final java.lang.String BUT_PRINT_ME_PLEASE = "butPrintMePlease";
+ }
+}
diff --git a/test/transform/resource/after-delombok/SuperBuilderWithGenericsAndToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderWithGenericsAndToBuilder.java
index deb5a223..af67e900 100644
--- a/test/transform/resource/after-delombok/SuperBuilderWithGenericsAndToBuilder.java
+++ b/test/transform/resource/after-delombok/SuperBuilderWithGenericsAndToBuilder.java
@@ -1,14 +1,16 @@
-import java.util.List;
+import java.util.Map;
public class SuperBuilderWithGenericsAndToBuilder {
public static class Parent<A> {
A field1;
- List<String> items;
+ Map<Integer, String> items;
@java.lang.SuppressWarnings("all")
public static abstract class ParentBuilder<A, C extends Parent<A>, B extends ParentBuilder<A, C, B>> {
@java.lang.SuppressWarnings("all")
private A field1;
@java.lang.SuppressWarnings("all")
- private java.util.ArrayList<String> items;
+ private java.util.ArrayList<Integer> items$key;
+ @java.lang.SuppressWarnings("all")
+ private java.util.ArrayList<String> items$value;
@java.lang.SuppressWarnings("all")
protected B $fillValuesFrom(final C instance) {
ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
@@ -17,7 +19,7 @@ public class SuperBuilderWithGenericsAndToBuilder {
@java.lang.SuppressWarnings("all")
private static <A> void $fillValuesFromInstanceIntoBuilder(final Parent<A> instance, final ParentBuilder<A, ?, ?> b) {
b.field1(instance.field1);
- b.items(instance.items == null ? java.util.Collections.emptyList() : instance.items);
+ b.items(instance.items == null ? java.util.Collections.emptyMap() : instance.items);
}
@java.lang.SuppressWarnings("all")
protected abstract B self();
@@ -29,26 +31,39 @@ public class SuperBuilderWithGenericsAndToBuilder {
return self();
}
@java.lang.SuppressWarnings("all")
- public B item(final String item) {
- if (this.items == null) this.items = new java.util.ArrayList<String>();
- this.items.add(item);
+ public B item(final Integer itemKey, final String itemValue) {
+ if (this.items$key == null) {
+ this.items$key = new java.util.ArrayList<Integer>();
+ this.items$value = new java.util.ArrayList<String>();
+ }
+ this.items$key.add(itemKey);
+ this.items$value.add(itemValue);
return self();
}
@java.lang.SuppressWarnings("all")
- public B items(final java.util.Collection<? extends String> items) {
- if (this.items == null) this.items = new java.util.ArrayList<String>();
- this.items.addAll(items);
+ public B items(final java.util.Map<? extends Integer, ? extends String> items) {
+ if (this.items$key == null) {
+ this.items$key = new java.util.ArrayList<Integer>();
+ this.items$value = new java.util.ArrayList<String>();
+ }
+ for (final java.util.Map.Entry<? extends Integer, ? extends String> $lombokEntry : items.entrySet()) {
+ this.items$key.add($lombokEntry.getKey());
+ this.items$value.add($lombokEntry.getValue());
+ }
return self();
}
@java.lang.SuppressWarnings("all")
public B clearItems() {
- if (this.items != null) this.items.clear();
+ if (this.items$key != null) {
+ this.items$key.clear();
+ this.items$value.clear();
+ }
return self();
}
@java.lang.Override
@java.lang.SuppressWarnings("all")
public java.lang.String toString() {
- return "SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder(field1=" + this.field1 + ", items=" + this.items + ")";
+ return "SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder(field1=" + this.field1 + ", items$key=" + this.items$key + ", items$value=" + this.items$value + ")";
}
}
@java.lang.SuppressWarnings("all")
@@ -70,16 +85,18 @@ public class SuperBuilderWithGenericsAndToBuilder {
@java.lang.SuppressWarnings("all")
protected Parent(final ParentBuilder<A, ?, ?> b) {
this.field1 = b.field1;
- java.util.List<String> items;
- switch (b.items == null ? 0 : b.items.size()) {
+ java.util.Map<Integer, String> items;
+ switch (b.items$key == null ? 0 : b.items$key.size()) {
case 0:
- items = java.util.Collections.emptyList();
+ items = java.util.Collections.emptyMap();
break;
case 1:
- items = java.util.Collections.singletonList(b.items.get(0));
+ items = java.util.Collections.singletonMap(b.items$key.get(0), b.items$value.get(0));
break;
default:
- items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items));
+ items = new java.util.LinkedHashMap<Integer, String>(b.items$key.size() < 1073741824 ? 1 + b.items$key.size() + (b.items$key.size() - 3) / 3 : java.lang.Integer.MAX_VALUE);
+ for (int $i = 0; $i < b.items$key.size(); $i++) items.put(b.items$key.get($i), (String) b.items$value.get($i));
+ items = java.util.Collections.unmodifiableMap(items);
}
this.items = items;
}
@@ -157,6 +174,6 @@ public class SuperBuilderWithGenericsAndToBuilder {
}
}
public static void test() {
- Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item("").build().toBuilder().build();
+ Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item(5, "").build().toBuilder().build();
}
}
diff --git a/test/transform/resource/after-delombok/ValDelegateMethodReference.java b/test/transform/resource/after-delombok/ValDelegateMethodReference.java
new file mode 100644
index 00000000..186e2aaa
--- /dev/null
+++ b/test/transform/resource/after-delombok/ValDelegateMethodReference.java
@@ -0,0 +1,65 @@
+import java.util.function.Function;
+
+public class ValDelegateMethodReference {
+ public void config() {
+ final Column<Entity, java.lang.String> column = createColumn(Entity::getValue);
+ }
+
+ private <V> Column<Entity, V> createColumn(Function<Entity, V> func) {
+ return new Column<>(func);
+ }
+}
+
+class Column<T, V> {
+ public Column(Function<T, V> vp) {
+ }
+}
+
+class Entity {
+ private MyDelegate innerDelegate;
+
+ @java.lang.SuppressWarnings("all")
+ public java.lang.String getValue() {
+ return this.innerDelegate.getValue();
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public java.lang.Boolean getABoolean() {
+ return this.innerDelegate.getABoolean();
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public void setValue(final java.lang.String value) {
+ this.innerDelegate.setValue(value);
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public void setABoolean(final java.lang.Boolean aBoolean) {
+ this.innerDelegate.setABoolean(aBoolean);
+ }
+}
+
+class MyDelegate {
+ private String value;
+ private Boolean aBoolean;
+
+ @java.lang.SuppressWarnings("all")
+ public String getValue() {
+ return this.value;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public Boolean getABoolean() {
+ return this.aBoolean;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public void setValue(final String value) {
+ this.value = value;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public void setABoolean(final Boolean aBoolean) {
+ this.aBoolean = aBoolean;
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/BuilderSimple.java b/test/transform/resource/after-ecj/BuilderSimple.java
index bc0ff186..9d9fb7f3 100644
--- a/test/transform/resource/after-ecj/BuilderSimple.java
+++ b/test/transform/resource/after-ecj/BuilderSimple.java
@@ -1,6 +1,6 @@
import java.util.List;
-@lombok.Builder class BuilderSimple<T> {
- public static @java.lang.SuppressWarnings("all") class BuilderSimpleBuilder<T> {
+@lombok.Builder(access = lombok.AccessLevel.PROTECTED) class BuilderSimple<T> {
+ protected static @java.lang.SuppressWarnings("all") class BuilderSimpleBuilder<T> {
private @java.lang.SuppressWarnings("all") int yes;
private @java.lang.SuppressWarnings("all") List<T> also;
@java.lang.SuppressWarnings("all") BuilderSimpleBuilder() {
@@ -30,7 +30,7 @@ import java.util.List;
this.yes = yes;
this.also = also;
}
- public static @java.lang.SuppressWarnings("all") <T>BuilderSimpleBuilder<T> builder() {
+ protected static @java.lang.SuppressWarnings("all") <T>BuilderSimpleBuilder<T> builder() {
return new BuilderSimpleBuilder<T>();
}
}
diff --git a/test/transform/resource/after-ecj/FieldNameConstantsUppercased.java b/test/transform/resource/after-ecj/FieldNameConstantsUppercased.java
new file mode 100644
index 00000000..a858b91f
--- /dev/null
+++ b/test/transform/resource/after-ecj/FieldNameConstantsUppercased.java
@@ -0,0 +1,23 @@
+import lombok.experimental.FieldNameConstants;
+import lombok.AccessLevel;
+public @FieldNameConstants(level = AccessLevel.PACKAGE) class FieldNameConstantsUppercased {
+ static final @java.lang.SuppressWarnings("all") class Fields {
+ public static final java.lang.String I_AM_A_DVD_PLAYER = "iAmADvdPlayer";
+ public static final java.lang.String BUT_PRINT_ME_PLEASE = "butPrintMePlease";
+ <clinit>() {
+ }
+ private @java.lang.SuppressWarnings("all") Fields() {
+ super();
+ }
+ }
+ String iAmADvdPlayer;
+ int $skipMe;
+ static double skipMeToo;
+ @FieldNameConstants.Exclude int andMe;
+ String butPrintMePlease;
+ <clinit>() {
+ }
+ public FieldNameConstantsUppercased() {
+ super();
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/SuperBuilderWithGenericsAndToBuilder.java b/test/transform/resource/after-ecj/SuperBuilderWithGenericsAndToBuilder.java
index 107ee362..ce960d61 100644
--- a/test/transform/resource/after-ecj/SuperBuilderWithGenericsAndToBuilder.java
+++ b/test/transform/resource/after-ecj/SuperBuilderWithGenericsAndToBuilder.java
@@ -1,9 +1,10 @@
-import java.util.List;
+import java.util.Map;
public class SuperBuilderWithGenericsAndToBuilder {
public static @lombok.experimental.SuperBuilder(toBuilder = true) class Parent<A> {
public static abstract @java.lang.SuppressWarnings("all") class ParentBuilder<A, C extends Parent<A>, B extends ParentBuilder<A, C, B>> {
private @java.lang.SuppressWarnings("all") A field1;
- private @java.lang.SuppressWarnings("all") java.util.ArrayList<String> items;
+ private @java.lang.SuppressWarnings("all") java.util.ArrayList<Integer> items$key;
+ private @java.lang.SuppressWarnings("all") java.util.ArrayList<String> items$value;
public ParentBuilder() {
super();
}
@@ -13,7 +14,7 @@ public class SuperBuilderWithGenericsAndToBuilder {
}
private static @java.lang.SuppressWarnings("all") <A>void $fillValuesFromInstanceIntoBuilder(final Parent<A> instance, final ParentBuilder<A, ?, ?> b) {
b.field1(instance.field1);
- b.items(((instance.items == null) ? java.util.Collections.emptyList() : instance.items));
+ b.items(((instance.items == null) ? java.util.Collections.emptyMap() : instance.items));
}
protected abstract @java.lang.SuppressWarnings("all") B self();
public abstract @java.lang.SuppressWarnings("all") C build();
@@ -21,25 +22,39 @@ public class SuperBuilderWithGenericsAndToBuilder {
this.field1 = field1;
return self();
}
- public @java.lang.SuppressWarnings("all") B item(final String item) {
- if ((this.items == null))
- this.items = new java.util.ArrayList<String>();
- this.items.add(item);
+ public @java.lang.SuppressWarnings("all") B item(final Integer itemKey, final String itemValue) {
+ if ((this.items$key == null))
+ {
+ this.items$key = new java.util.ArrayList<Integer>();
+ this.items$value = new java.util.ArrayList<String>();
+ }
+ this.items$key.add(itemKey);
+ this.items$value.add(itemValue);
return self();
}
- public @java.lang.SuppressWarnings("all") B items(final java.util.Collection<? extends String> items) {
- if ((this.items == null))
- this.items = new java.util.ArrayList<String>();
- this.items.addAll(items);
+ public @java.lang.SuppressWarnings("all") B items(final java.util.Map<? extends Integer, ? extends String> items) {
+ if ((this.items$key == null))
+ {
+ this.items$key = new java.util.ArrayList<Integer>();
+ this.items$value = new java.util.ArrayList<String>();
+ }
+ for (java.util.Map.Entry<? extends Integer, ? extends String> $lombokEntry : items.entrySet())
+ {
+ this.items$key.add($lombokEntry.getKey());
+ this.items$value.add($lombokEntry.getValue());
+ }
return self();
}
public @java.lang.SuppressWarnings("all") B clearItems() {
- if ((this.items != null))
- this.items.clear();
+ if ((this.items$key != null))
+ {
+ this.items$key.clear();
+ this.items$value.clear();
+ }
return self();
}
public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
- return (((("SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder(field1=" + this.field1) + ", items=") + this.items) + ")");
+ return (((((("SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder(field1=" + this.field1) + ", items$key=") + this.items$key) + ", items$value=") + this.items$value) + ")");
}
}
private static final @java.lang.SuppressWarnings("all") class ParentBuilderImpl<A> extends ParentBuilder<A, Parent<A>, ParentBuilderImpl<A>> {
@@ -54,20 +69,23 @@ public class SuperBuilderWithGenericsAndToBuilder {
}
}
A field1;
- @lombok.Singular List<String> items;
+ @lombok.Singular Map<Integer, String> items;
protected @java.lang.SuppressWarnings("all") Parent(final ParentBuilder<A, ?, ?> b) {
super();
this.field1 = b.field1;
- java.util.List<String> items;
- switch (((b.items == null) ? 0 : b.items.size())) {
+ java.util.Map<Integer, String> items;
+ switch (((b.items$key == null) ? 0 : b.items$key.size())) {
case 0 :
- items = java.util.Collections.emptyList();
+ items = java.util.Collections.emptyMap();
break;
case 1 :
- items = java.util.Collections.singletonList(b.items.get(0));
+ items = java.util.Collections.singletonMap(b.items$key.get(0), b.items$value.get(0));
break;
default :
- items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items));
+ items = new java.util.LinkedHashMap<Integer, String>(((b.items$key.size() < 0x40000000) ? ((1 + b.items$key.size()) + ((b.items$key.size() - 3) / 3)) : java.lang.Integer.MAX_VALUE));
+ for (int $i = 0;; ($i < b.items$key.size()); $i ++)
+ items.put(b.items$key.get($i), b.items$value.get($i));
+ items = java.util.Collections.unmodifiableMap(items);
}
this.items = items;
}
@@ -129,6 +147,6 @@ public class SuperBuilderWithGenericsAndToBuilder {
super();
}
public static void test() {
- Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item("").build().toBuilder().build();
+ Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item(5, "").build().toBuilder().build();
}
}
diff --git a/test/transform/resource/after-ecj/ValDelegateMethodReference.java b/test/transform/resource/after-ecj/ValDelegateMethodReference.java
new file mode 100644
index 00000000..cfd0dab2
--- /dev/null
+++ b/test/transform/resource/after-ecj/ValDelegateMethodReference.java
@@ -0,0 +1,58 @@
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Delegate;
+import lombok.val;
+import java.util.function.Function;
+public class ValDelegateMethodReference {
+ public ValDelegateMethodReference() {
+ super();
+ }
+ public void config() {
+ final @val Column<Entity, java.lang.String> column = createColumn(Entity::getValue);
+ }
+ private <V>Column<Entity, V> createColumn(Function<Entity, V> func) {
+ return new Column<>(func);
+ }
+}
+class Column<T, V> {
+ public Column(Function<T, V> vp) {
+ super();
+ }
+}
+class Entity {
+ private @Delegate MyDelegate innerDelegate;
+ Entity() {
+ super();
+ }
+ public @java.lang.SuppressWarnings("all") java.lang.Boolean getABoolean() {
+ return this.innerDelegate.getABoolean();
+ }
+ public @java.lang.SuppressWarnings("all") java.lang.String getValue() {
+ return this.innerDelegate.getValue();
+ }
+ public @java.lang.SuppressWarnings("all") void setABoolean(final java.lang.Boolean aBoolean) {
+ this.innerDelegate.setABoolean(aBoolean);
+ }
+ public @java.lang.SuppressWarnings("all") void setValue(final java.lang.String value) {
+ this.innerDelegate.setValue(value);
+ }
+}
+@Getter @Setter class MyDelegate {
+ private String value;
+ private Boolean aBoolean;
+ MyDelegate() {
+ super();
+ }
+ public @java.lang.SuppressWarnings("all") String getValue() {
+ return this.value;
+ }
+ public @java.lang.SuppressWarnings("all") Boolean getABoolean() {
+ return this.aBoolean;
+ }
+ public @java.lang.SuppressWarnings("all") void setValue(final String value) {
+ this.value = value;
+ }
+ public @java.lang.SuppressWarnings("all") void setABoolean(final Boolean aBoolean) {
+ this.aBoolean = aBoolean;
+ }
+}
diff --git a/test/transform/resource/before/BuilderSimple.java b/test/transform/resource/before/BuilderSimple.java
index 83c89713..d0a786db 100644
--- a/test/transform/resource/before/BuilderSimple.java
+++ b/test/transform/resource/before/BuilderSimple.java
@@ -1,6 +1,6 @@
import java.util.List;
-@lombok.Builder
+@lombok.Builder(access = lombok.AccessLevel.PROTECTED)
class BuilderSimple<T> {
private final int noshow = 0;
private final int yes;
diff --git a/test/transform/resource/before/FieldNameConstantsUppercased.java b/test/transform/resource/before/FieldNameConstantsUppercased.java
new file mode 100644
index 00000000..674cb7f1
--- /dev/null
+++ b/test/transform/resource/before/FieldNameConstantsUppercased.java
@@ -0,0 +1,12 @@
+//CONF: lombok.fieldNameConstants.uppercase = true
+import lombok.experimental.FieldNameConstants;
+import lombok.AccessLevel;
+
+@FieldNameConstants(level = AccessLevel.PACKAGE)
+public class FieldNameConstantsUppercased {
+ String iAmADvdPlayer;
+ int $skipMe;
+ static double skipMeToo;
+ @FieldNameConstants.Exclude int andMe;
+ String butPrintMePlease;
+}
diff --git a/test/transform/resource/before/SuperBuilderWithGenericsAndToBuilder.java b/test/transform/resource/before/SuperBuilderWithGenericsAndToBuilder.java
index dae68034..1f2caf6d 100644
--- a/test/transform/resource/before/SuperBuilderWithGenericsAndToBuilder.java
+++ b/test/transform/resource/before/SuperBuilderWithGenericsAndToBuilder.java
@@ -1,10 +1,10 @@
-import java.util.List;
+import java.util.Map;
public class SuperBuilderWithGenericsAndToBuilder {
@lombok.experimental.SuperBuilder(toBuilder = true)
public static class Parent<A> {
A field1;
- @lombok.Singular List<String> items;
+ @lombok.Singular Map<Integer, String> items;
}
@lombok.experimental.SuperBuilder(toBuilder = true)
@@ -13,6 +13,6 @@ public class SuperBuilderWithGenericsAndToBuilder {
}
public static void test() {
- Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item("").build().toBuilder().build();
+ Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item(5, "").build().toBuilder().build();
}
}
diff --git a/test/transform/resource/before/ValDelegateMethodReference.java b/test/transform/resource/before/ValDelegateMethodReference.java
new file mode 100644
index 00000000..7adc402a
--- /dev/null
+++ b/test/transform/resource/before/ValDelegateMethodReference.java
@@ -0,0 +1,35 @@
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Delegate;
+import lombok.val;
+
+import java.util.function.Function;
+
+public class ValDelegateMethodReference {
+
+ public void config() {
+ val column = createColumn(Entity::getValue);
+ }
+
+ private <V> Column<Entity, V> createColumn(Function<Entity, V> func) {
+ return new Column<>(func);
+ }
+
+}
+
+class Column<T, V> {
+ public Column(Function<T, V> vp) {}
+}
+
+class Entity {
+ @Delegate
+ private MyDelegate innerDelegate;
+}
+
+@Getter
+@Setter
+class MyDelegate {
+ private String value;
+ private Boolean aBoolean;
+} \ No newline at end of file