Compare commits

...

3 Commits

6 changed files with 5 additions and 40 deletions

View File

@@ -50,13 +50,6 @@ public class NameAndAgeBuilder {
return new NameAndAgeBuilder(); return new NameAndAgeBuilder();
} }
/**
* Return a new builder with all fields set to the given values
*/
public static NameAndAgeBuilder builder(String name, int age) {
return new NameAndAgeBuilder(name, age);
}
/** /**
* Return a new builder with all fields set to the values taken from the given record instance * Return a new builder with all fields set to the values taken from the given record instance
*/ */

View File

@@ -5,7 +5,7 @@
<groupId>io.soabase.record-builder</groupId> <groupId>io.soabase.record-builder</groupId>
<artifactId>record-builder</artifactId> <artifactId>record-builder</artifactId>
<packaging>pom</packaging> <packaging>pom</packaging>
<version>1.0.ea</version> <version>1.1.ea</version>
<modules> <modules>
<module>record-builder-core</module> <module>record-builder-core</module>
@@ -70,7 +70,7 @@
<url>https://github.com/randgalt/record-builder</url> <url>https://github.com/randgalt/record-builder</url>
<connection>scm:git:https://github.com/randgalt/record-builder.git</connection> <connection>scm:git:https://github.com/randgalt/record-builder.git</connection>
<developerConnection>scm:git:git@github.com:randgalt/record-builder.git</developerConnection> <developerConnection>scm:git:git@github.com:randgalt/record-builder.git</developerConnection>
<tag>record-builder-1.0.ea</tag> <tag>record-builder-1.1.ea</tag>
</scm> </scm>
<issueManagement> <issueManagement>

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>io.soabase.record-builder</groupId> <groupId>io.soabase.record-builder</groupId>
<artifactId>record-builder</artifactId> <artifactId>record-builder</artifactId>
<version>1.0.ea</version> <version>1.1.ea</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>io.soabase.record-builder</groupId> <groupId>io.soabase.record-builder</groupId>
<artifactId>record-builder</artifactId> <artifactId>record-builder</artifactId>
<version>1.0.ea</version> <version>1.1.ea</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -65,7 +65,6 @@ public class RecordBuilderProcessor extends AbstractProcessor {
addDefaultConstructor(builder); addDefaultConstructor(builder);
addAllArgsConstructor(builder, recordComponents); addAllArgsConstructor(builder, recordComponents);
addStaticDefaultBuilderMethod(builder, builderClassType, typeVariables, metaData); addStaticDefaultBuilderMethod(builder, builderClassType, typeVariables, metaData);
addStaticAllArgsBuilderMethod(builder, builderClassType, recordComponents, typeVariables, metaData);
addStaticCopyMethod(builder, builderClassType, recordClassType, recordComponents, typeVariables, metaData); addStaticCopyMethod(builder, builderClassType, recordClassType, recordComponents, typeVariables, metaData);
addBuildMethod(builder, recordClassType, recordComponents, metaData); addBuildMethod(builder, recordClassType, recordComponents, metaData);
recordComponents.forEach(component -> { recordComponents.forEach(component -> {
@@ -174,33 +173,6 @@ public class RecordBuilderProcessor extends AbstractProcessor {
builder.addMethod(methodSpec); builder.addMethod(methodSpec);
} }
private void addStaticAllArgsBuilderMethod(TypeSpec.Builder builder, ClassType builderClassType, List<ClassType> recordComponents, List<TypeVariableName> typeVariables, RecordBuilderMetaData metaData) {
/*
Adds an all-args builder method that pre-fills the builder with values similar to:
public static MyRecordBuilder builder(int p1, T p2, ...) {
return new MyRecordBuilder(p1, p2, ...);
}
*/
var methodSpecBuilder = MethodSpec.methodBuilder(metaData.builderMethodName())
.addJavadoc("Return a new builder with all fields set to the given values\n")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.addTypeVariables(typeVariables)
.returns(builderClassType.typeName());
var codeBuilder = CodeBlock.builder().add("return new $T(", builderClassType.typeName());
IntStream.range(0, recordComponents.size()).forEach(index -> {
ClassType component = recordComponents.get(index);
methodSpecBuilder.addParameter(component.typeName(), component.name());
if (index > 0) {
codeBuilder.add(", ");
}
codeBuilder.add("$L", component.name());
});
codeBuilder.add(")");
methodSpecBuilder.addStatement(codeBuilder.build());
builder.addMethod(methodSpecBuilder.build());
}
private void addStaticDefaultBuilderMethod(TypeSpec.Builder builder, ClassType builderClassType, List<TypeVariableName> typeVariables, RecordBuilderMetaData metaData) { private void addStaticDefaultBuilderMethod(TypeSpec.Builder builder, ClassType builderClassType, List<TypeVariableName> typeVariables, RecordBuilderMetaData metaData) {
/* /*
Adds a the default builder method similar to: Adds a the default builder method similar to:

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>io.soabase.record-builder</groupId> <groupId>io.soabase.record-builder</groupId>
<artifactId>record-builder</artifactId> <artifactId>record-builder</artifactId>
<version>1.0.ea</version> <version>1.1.ea</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>