With interface shouldn't use prefix option (#132)
This commit is contained in:
@@ -63,7 +63,7 @@ public @interface RecordBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
@Target({ElementType.TYPE, ElementType.PACKAGE})
|
@Target({ ElementType.TYPE, ElementType.PACKAGE })
|
||||||
@Inherited
|
@Inherited
|
||||||
@interface Options {
|
@interface Options {
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -173,8 +173,7 @@ class InternalRecordBuilderProcessor {
|
|||||||
if (metaData.addClassRetainedGenerated()) {
|
if (metaData.addClassRetainedGenerated()) {
|
||||||
classBuilder.addAnnotation(recordBuilderGeneratedAnnotation);
|
classBuilder.addAnnotation(recordBuilderGeneratedAnnotation);
|
||||||
}
|
}
|
||||||
recordComponents
|
recordComponents.forEach(component -> addNestedGetterMethod(classBuilder, component, component.name()));
|
||||||
.forEach(component -> addNestedGetterMethod(classBuilder, component, prefixedName(component, true)));
|
|
||||||
addWithBuilderMethod(classBuilder);
|
addWithBuilderMethod(classBuilder);
|
||||||
addWithSuppliedBuilderMethod(classBuilder);
|
addWithSuppliedBuilderMethod(classBuilder);
|
||||||
IntStream.range(0, recordComponents.size())
|
IntStream.range(0, recordComponents.size())
|
||||||
@@ -235,7 +234,7 @@ class InternalRecordBuilderProcessor {
|
|||||||
*/
|
*/
|
||||||
var codeBlockBuilder = CodeBlock.builder().add("return new $L$L(", builderClassType.name(),
|
var codeBlockBuilder = CodeBlock.builder().add("return new $L$L(", builderClassType.name(),
|
||||||
typeVariables.isEmpty() ? "" : "<>");
|
typeVariables.isEmpty() ? "" : "<>");
|
||||||
addComponentCallsAsArguments(-1, codeBlockBuilder);
|
addComponentCallsAsArguments(-1, codeBlockBuilder, false);
|
||||||
codeBlockBuilder.add(");");
|
codeBlockBuilder.add(");");
|
||||||
var methodSpec = MethodSpec.methodBuilder(metaData.withClassMethodPrefix())
|
var methodSpec = MethodSpec.methodBuilder(metaData.withClassMethodPrefix())
|
||||||
.addAnnotation(generatedRecordBuilderAnnotation)
|
.addAnnotation(generatedRecordBuilderAnnotation)
|
||||||
@@ -268,7 +267,7 @@ class InternalRecordBuilderProcessor {
|
|||||||
codeBlockBuilder.add("$T.validate(", validatorTypeName);
|
codeBlockBuilder.add("$T.validate(", validatorTypeName);
|
||||||
}
|
}
|
||||||
codeBlockBuilder.add("new $T(", recordClassType.typeName());
|
codeBlockBuilder.add("new $T(", recordClassType.typeName());
|
||||||
addComponentCallsAsArguments(index, codeBlockBuilder);
|
addComponentCallsAsArguments(index, codeBlockBuilder, false);
|
||||||
codeBlockBuilder.add(")");
|
codeBlockBuilder.add(")");
|
||||||
if (metaData.useValidationApi()) {
|
if (metaData.useValidationApi()) {
|
||||||
codeBlockBuilder.add(")");
|
codeBlockBuilder.add(")");
|
||||||
@@ -303,7 +302,7 @@ class InternalRecordBuilderProcessor {
|
|||||||
classBuilder.addMethod(methodSpec);
|
classBuilder.addMethod(methodSpec);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addComponentCallsAsArguments(int index, CodeBlock.Builder codeBlockBuilder) {
|
private void addComponentCallsAsArguments(int index, CodeBlock.Builder codeBlockBuilder, boolean usePrefixedName) {
|
||||||
IntStream.range(0, recordComponents.size()).forEach(parameterIndex -> {
|
IntStream.range(0, recordComponents.size()).forEach(parameterIndex -> {
|
||||||
if (parameterIndex > 0) {
|
if (parameterIndex > 0) {
|
||||||
codeBlockBuilder.add(", ");
|
codeBlockBuilder.add(", ");
|
||||||
@@ -312,7 +311,8 @@ class InternalRecordBuilderProcessor {
|
|||||||
if (parameterIndex == index) {
|
if (parameterIndex == index) {
|
||||||
collectionBuilderUtils.addShimCall(codeBlockBuilder, parameterComponent);
|
collectionBuilderUtils.addShimCall(codeBlockBuilder, parameterComponent);
|
||||||
} else {
|
} else {
|
||||||
codeBlockBuilder.add("$L()", prefixedName(parameterComponent, true));
|
codeBlockBuilder.add("$L()",
|
||||||
|
usePrefixedName ? prefixedName(parameterComponent, true) : parameterComponent.name());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -546,8 +546,8 @@ class InternalRecordBuilderProcessor {
|
|||||||
|
|
||||||
IntStream.range(0, recordComponents.size()).forEach(index -> {
|
IntStream.range(0, recordComponents.size()).forEach(index -> {
|
||||||
var component = recordComponents.get(index);
|
var component = recordComponents.get(index);
|
||||||
MethodSpec methodSpec = MethodSpec.methodBuilder(prefixedName(component, true))
|
MethodSpec methodSpec = MethodSpec.methodBuilder(component.name()).returns(component.typeName())
|
||||||
.returns(component.typeName()).addAnnotation(Override.class).addModifiers(Modifier.PUBLIC)
|
.addAnnotation(Override.class).addModifiers(Modifier.PUBLIC)
|
||||||
.addStatement("return from.$L()", component.name()).addAnnotation(generatedRecordBuilderAnnotation)
|
.addStatement("return from.$L()", component.name()).addAnnotation(generatedRecordBuilderAnnotation)
|
||||||
.build();
|
.build();
|
||||||
fromWithClassBuilder.addMethod(methodSpec);
|
fromWithClassBuilder.addMethod(methodSpec);
|
||||||
@@ -914,7 +914,7 @@ class InternalRecordBuilderProcessor {
|
|||||||
methodBuilder.addJavadoc("Perform an operation on record components");
|
methodBuilder.addJavadoc("Perform an operation on record components");
|
||||||
}
|
}
|
||||||
codeBlockBuilder.add("proc.apply(");
|
codeBlockBuilder.add("proc.apply(");
|
||||||
addComponentCallsAsArguments(-1, codeBlockBuilder);
|
addComponentCallsAsArguments(-1, codeBlockBuilder, true);
|
||||||
codeBlockBuilder.add(");");
|
codeBlockBuilder.add(");");
|
||||||
methodBuilder.addCode(codeBlockBuilder.build());
|
methodBuilder.addCode(codeBlockBuilder.build());
|
||||||
return methodBuilder.build();
|
return methodBuilder.build();
|
||||||
|
|||||||
@@ -16,10 +16,13 @@
|
|||||||
package io.soabase.recordbuilder.test;
|
package io.soabase.recordbuilder.test;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import io.soabase.recordbuilder.core.RecordBuilder;
|
import io.soabase.recordbuilder.core.RecordBuilder;
|
||||||
import io.soabase.recordbuilder.test.CustomMethodNamesBuilder.Bean;
|
import io.soabase.recordbuilder.test.CustomMethodNamesBuilder.Bean;
|
||||||
|
|
||||||
@RecordBuilder
|
@RecordBuilder
|
||||||
@RecordBuilder.Options(setterPrefix = "set", getterPrefix = "get", booleanPrefix = "is", beanClassName = "Bean")
|
@RecordBuilder.Options(setterPrefix = "set", getterPrefix = "get", booleanPrefix = "is", beanClassName = "Bean")
|
||||||
public record CustomMethodNames(int theValue, List<Integer> theList, boolean theBoolean) implements Bean {
|
public record CustomMethodNames<K, V>(Map<K, V> kvMap, int theValue, List<Integer> theList, boolean theBoolean)
|
||||||
|
implements Bean, CustomMethodNamesBuilder.With {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ import org.junit.jupiter.api.Test;
|
|||||||
class TestOptionsOnPackage {
|
class TestOptionsOnPackage {
|
||||||
@Test
|
@Test
|
||||||
void testOptionsOnInclude() throws IOException {
|
void testOptionsOnInclude() throws IOException {
|
||||||
String text= Files.readString(Path.of("target/generated-sources/annotations/io/soabase/recordbuilder/test/foo/PairBuilder.java"));
|
String text = Files.readString(
|
||||||
Assertions.assertTrue(text.contains("// MyLicense - Auto generated"));
|
Path.of("target/generated-sources/annotations/io/soabase/recordbuilder/test/foo/PairBuilder.java"));
|
||||||
|
Assertions.assertTrue(text.contains("// MyLicense - Auto generated"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ package io.soabase.recordbuilder.test;
|
|||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
@@ -26,25 +27,26 @@ public class TestVariousOptions {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void builderGetsCustomSetterAndGetterNames() {
|
public void builderGetsCustomSetterAndGetterNames() {
|
||||||
var obj = CustomMethodNamesBuilder.builder().setTheValue(1).setTheList(List.of(2)).setTheBoolean(true);
|
var obj = CustomMethodNamesBuilder.builder().setKvMap(Map.of(1, "one")).setTheValue(1).setTheList(List.of(2))
|
||||||
|
.setTheBoolean(true);
|
||||||
assertEquals(1, obj.getTheValue());
|
assertEquals(1, obj.getTheValue());
|
||||||
assertEquals(List.of(2), obj.getTheList());
|
assertEquals(List.of(2), obj.getTheList());
|
||||||
assertTrue(obj.isTheBoolean());
|
assertTrue(obj.isTheBoolean());
|
||||||
assertEquals(new CustomMethodNames(1, List.of(2), true), obj.build());
|
assertEquals(new CustomMethodNames<>(Map.of(1, "one"), 1, List.of(2), true), obj.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void withBuilderGetsCustomSetterAndGetterNames() {
|
public void withBuilderGetsCustomSetterAndGetterNames() {
|
||||||
var obj = CustomMethodNamesBuilder.from(
|
var obj = CustomMethodNamesBuilder.from(
|
||||||
CustomMethodNamesBuilder.builder().setTheValue(1).setTheList(List.of(2)).setTheBoolean(true).build());
|
CustomMethodNamesBuilder.builder().setTheValue(1).setTheList(List.of(2)).setTheBoolean(true).build());
|
||||||
assertEquals(1, obj.getTheValue());
|
assertEquals(1, obj.theValue());
|
||||||
assertEquals(List.of(2), obj.getTheList());
|
assertEquals(List.of(2), obj.theList());
|
||||||
assertTrue(obj.isTheBoolean());
|
assertTrue(obj.theBoolean());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void recordHasPrefixedGetters() {
|
public void recordHasPrefixedGetters() {
|
||||||
var obj = new CustomMethodNames(1, List.of(2), true);
|
var obj = new CustomMethodNames<>(Map.of(1, "one"), 1, List.of(2), true);
|
||||||
assertEquals(1, obj.getTheValue());
|
assertEquals(1, obj.getTheValue());
|
||||||
assertEquals(List.of(2), obj.getTheList());
|
assertEquals(List.of(2), obj.getTheList());
|
||||||
assertTrue(obj.isTheBoolean());
|
assertTrue(obj.isTheBoolean());
|
||||||
|
|||||||
Reference in New Issue
Block a user