Have the consumer version of with() use the other with() to get the builder. This will ensure better testing and is more logical
This commit is contained in:
@@ -203,8 +203,7 @@ public class NameAndAgeBuilder {
|
|||||||
* Return a new record built from the builder passed to the given consumer
|
* Return a new record built from the builder passed to the given consumer
|
||||||
*/
|
*/
|
||||||
default NameAndAge with(Consumer<NameAndAgeBuilder> consumer) {
|
default NameAndAge with(Consumer<NameAndAgeBuilder> consumer) {
|
||||||
NameAndAge r = _downcast(this);
|
NameAndAgeBuilder builder = with();
|
||||||
NameAndAgeBuilder builder = NameAndAgeBuilder.builder(r);
|
|
||||||
consumer.accept(builder);
|
consumer.accept(builder);
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,15 +134,13 @@ class InternalRecordBuilderProcessor
|
|||||||
Adds a method that returns a pre-filled copy builder similar to:
|
Adds a method that returns a pre-filled copy builder similar to:
|
||||||
|
|
||||||
default MyRecord with(Consumer<MyRecordBuilder> consumer) {
|
default MyRecord with(Consumer<MyRecordBuilder> consumer) {
|
||||||
MyRecord r = (MyRecord)(Object)this;
|
MyRecordBuilder builder = with();
|
||||||
MyRecordBuilder builder MyRecordBuilder.builder(r);
|
|
||||||
consumer.accept(builder);
|
consumer.accept(builder);
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
var codeBlockBuilder = CodeBlock.builder()
|
var codeBlockBuilder = CodeBlock.builder()
|
||||||
.add("$T $L = $L(this);\n", recordClassType.typeName(), uniqueVarName, metaData.downCastMethodName())
|
.add("$T builder = with();\n", builderClassType.typeName())
|
||||||
.add("$T builder = $L.$L($L);\n", builderClassType.typeName(), builderClassType.name(), metaData.copyMethodName(), uniqueVarName)
|
|
||||||
.add("consumer.accept(builder);\n")
|
.add("consumer.accept(builder);\n")
|
||||||
.add("return builder.build();\n");
|
.add("return builder.build();\n");
|
||||||
var consumerType = ParameterizedTypeName.get(ClassName.get(Consumer.class), builderClassType.typeName());
|
var consumerType = ParameterizedTypeName.get(ClassName.get(Consumer.class), builderClassType.typeName());
|
||||||
@@ -164,7 +162,7 @@ class InternalRecordBuilderProcessor
|
|||||||
Adds a method that returns a pre-filled copy builder similar to:
|
Adds a method that returns a pre-filled copy builder similar to:
|
||||||
|
|
||||||
default MyRecordBuilder with() {
|
default MyRecordBuilder with() {
|
||||||
MyRecord r = (MyRecord)(Object)this;
|
MyRecord r = _downcast(this);
|
||||||
return MyRecordBuilder.builder(r);
|
return MyRecordBuilder.builder(r);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
@@ -201,7 +199,7 @@ class InternalRecordBuilderProcessor
|
|||||||
Adds a with method for the component similar to:
|
Adds a with method for the component similar to:
|
||||||
|
|
||||||
default MyRecord withName(String name) {
|
default MyRecord withName(String name) {
|
||||||
MyRecord r = (MyRecord)(Object)this;
|
MyRecord r = _downcast(this);
|
||||||
return new MyRecord(name, r.age());
|
return new MyRecord(name, r.age());
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
@@ -529,7 +527,7 @@ class InternalRecordBuilderProcessor
|
|||||||
.add("}\n")
|
.add("}\n")
|
||||||
.add("catch (ClassCastException dummy) {\n")
|
.add("catch (ClassCastException dummy) {\n")
|
||||||
.indent()
|
.indent()
|
||||||
.add("throw new RuntimeException($S);\n", builderClassType.name() + "." + metaData.withClassName() + " can only be implemented for " + recordClassType.name())
|
.add("throw new RuntimeException($S);\n", builderClassType.name() + "." + metaData.withClassName() + " can only be implemented by " + recordClassType.name())
|
||||||
.unindent()
|
.unindent()
|
||||||
.add("}");
|
.add("}");
|
||||||
var methodSpec = MethodSpec.methodBuilder(metaData.downCastMethodName())
|
var methodSpec = MethodSpec.methodBuilder(metaData.downCastMethodName())
|
||||||
|
|||||||
Reference in New Issue
Block a user