diff --git a/README.md b/README.md
index 88cf9437..e8bcc0cc 100644
--- a/README.md
+++ b/README.md
@@ -493,7 +493,7 @@ A runnable example demonstrating package-scoped builder generation and usage:
### MapStruct Example
-A runnable example of the MapStruct `BuilderProvider` integration - no configuration needed beyond putting mapstruct-processor on the same annotation processor path. A bundled `AccessorNamingStrategy` marks the generated helper methods (`add2*`, `*Update`, `Supplier`/`Consumer`/`format` overloads, `conditional(...)`) as non-setters, honoring per-bean naming configuration like `setterSuffix`, so only direct property setters participate in bean mapping - no phantom "unmapped target property" warnings.
+A runnable example of the MapStruct `BuilderProvider` integration - no configuration needed beyond putting mapstruct-processor on the same annotation processor path. A bundled `AccessorNamingStrategy` marks the generated helper methods (`add2*`, `*Update`, `Supplier`/`Consumer`/`format` overloads, `conditional(...)`) as non-setters, honoring per-bean naming configuration like `setterPrefix`, so only direct property setters participate in bean mapping - no phantom "unmapped target property" warnings.
- **Mapper**: [`PersonDtoMapper.java`](example/src/main/java/org/javahelpers/simple/builders/example/PersonDtoMapper.java) - Plain `@Mapper` interface; MapStruct resolves `PersonDtoBuilder` automatically
- **Generated implementation**: [`PersonDtoMapperImpl.java`](example/generated-example-builder/org/javahelpers/simple/builders/example/PersonDtoMapperImpl.java) - Uses `PersonDtoBuilder.create()`, the plain setter overloads, and `build()`
diff --git a/core/src/main/java/org/javahelpers/simple/builders/core/annotations/SimpleBuilder.java b/core/src/main/java/org/javahelpers/simple/builders/core/annotations/SimpleBuilder.java
index a25aa35d..0ff272c3 100644
--- a/core/src/main/java/org/javahelpers/simple/builders/core/annotations/SimpleBuilder.java
+++ b/core/src/main/java/org/javahelpers/simple/builders/core/annotations/SimpleBuilder.java
@@ -637,7 +637,7 @@
/**
* Add Jackson annotations to the generated builder class.
* Adds {@code @JsonPOJOBuilder(withPrefix = "...")} to the builder class. The prefix matches
- * the configured {@link #setterSuffix()}.
+ * the configured {@link #setterPrefix()}.
*
*
Example:
*
@@ -858,15 +858,15 @@
String builderUsageSuffix() default "";
/**
- * Suffix to append to setter method names in the generated builder.
- * For example, with suffix "with", a field named "name" will generate "withName()".
- * When a suffix is set, the field name is capitalized after the suffix.
+ * Prefix to prepend to setter method names in the generated builder.
+ * For example, with prefix "with", a field named "name" will generate "withName()".
+ * When a prefix is set, the field name is capitalized after the prefix.
*
*
Example:
*
*
{@code
* @SimpleBuilder(options = @SimpleBuilder.Options(
- * setterSuffix = "with"
+ * setterPrefix = "with"
* ))
* public class PersonDto {
* // Generates: withName(String) instead of name(String)
@@ -878,12 +878,12 @@
* .build();
* }
*
- * Default: "" (empty - no suffix)
- * Compiler option: -Asimplebuilder.setterSuffix
+ * Default: "" (empty - no prefix)
+ * Compiler option: -Asimplebuilder.setterPrefix
*
- * @return the suffix for setter method names
+ * @return the prefix for setter method names
*/
- String setterSuffix() default "";
+ String setterPrefix() default "";
/**
* Formatting mode for the generated source code.
diff --git a/core/src/main/java/org/javahelpers/simple/builders/core/annotations/SimpleMinimalBuilder.java b/core/src/main/java/org/javahelpers/simple/builders/core/annotations/SimpleMinimalBuilder.java
index 937900bb..9f8ba2b6 100644
--- a/core/src/main/java/org/javahelpers/simple/builders/core/annotations/SimpleMinimalBuilder.java
+++ b/core/src/main/java/org/javahelpers/simple/builders/core/annotations/SimpleMinimalBuilder.java
@@ -97,7 +97,7 @@
usingExistingBuilders = OptionState.DISABLED,
usingFieldFunctionPrefill = OptionState.DISABLED,
builderSuffix = "Builder",
- setterSuffix = "",
+ setterPrefix = "",
formattingMode = "lightweight"))
@Retention(RetentionPolicy.CLASS)
@Target(ElementType.TYPE)
diff --git a/docs/CONFIGURATION.md b/docs/CONFIGURATION.md
index e89ae3bb..dc187388 100644
--- a/docs/CONFIGURATION.md
+++ b/docs/CONFIGURATION.md
@@ -1175,15 +1175,15 @@ public class ExternalBuilders { }
---
-#### `setterSuffix`
+#### `setterPrefix`
-**Default**: `""` (empty) | **Compiler Option**: `-Asimplebuilder.setterSuffix=customPrefix`
+**Default**: `""` (empty) | **Compiler Option**: `-Asimplebuilder.setterPrefix=customPrefix`
Adds a prefix to all setter method names.
**Example**:
```java
-@SimpleBuilder.Options(setterSuffix = "with")
+@SimpleBuilder.Options(setterPrefix = "with")
public class PersonDto {
private String name;
}
@@ -1720,7 +1720,7 @@ methodAccess = AccessModifier.PRIVATE
# Naming
-Asimplebuilder.builderSuffix=CustomSuffix
--Asimplebuilder.setterSuffix=customPrefix
+-Asimplebuilder.setterPrefix=customPrefix
# Reliability
-Asimplebuilder.strict=ENABLED|DISABLED
@@ -1784,7 +1784,7 @@ methodAccess = AccessModifier.PRIVATE
// Naming
builderSuffix = "Builder",
- setterSuffix = ""
+ setterPrefix = ""
)
public class ExampleDto {
private String name;
diff --git a/processor/src/main/java/org/javahelpers/simple/builders/processor/BuilderProcessor.java b/processor/src/main/java/org/javahelpers/simple/builders/processor/BuilderProcessor.java
index d0117fb8..24718188 100644
--- a/processor/src/main/java/org/javahelpers/simple/builders/processor/BuilderProcessor.java
+++ b/processor/src/main/java/org/javahelpers/simple/builders/processor/BuilderProcessor.java
@@ -550,7 +550,7 @@ private void registerGeneratedTypes(List elementsToGenerate)
.ifPresent(
resolvedBuilder ->
SimpleBuildersSpiIntegration.registerBuilder(
- beanType, resolvedBuilder, elementToGenerate.config().getSetterSuffix()));
+ beanType, resolvedBuilder, elementToGenerate.config().getSetterPrefix()));
}
}
diff --git a/processor/src/main/java/org/javahelpers/simple/builders/processor/SimpleBuildersSpiIntegration.java b/processor/src/main/java/org/javahelpers/simple/builders/processor/SimpleBuildersSpiIntegration.java
index e27ca206..86730706 100644
--- a/processor/src/main/java/org/javahelpers/simple/builders/processor/SimpleBuildersSpiIntegration.java
+++ b/processor/src/main/java/org/javahelpers/simple/builders/processor/SimpleBuildersSpiIntegration.java
@@ -36,7 +36,7 @@
* The builders {@link BuilderProcessor} generates, published to SPI adapters of other frameworks
* sharing the annotation processor path (and therefore the classloader). Each entry carries the
* resolved builder's type, creation and build method names plus the bean's configured {@code
- * setterSuffix}, so adapters do not scan candidates or read annotation configuration themselves.
+ * setterPrefix}, so adapters do not scan candidates or read annotation configuration themselves.
*
* The lifecycle reports where {@link BuilderProcessor}'s builder generation stands and is
* transitioned by that processor alone — SPI adapters only ever read this holder, they never
@@ -74,7 +74,7 @@ public enum State {
/**
* One bean-to-builder pair resolved at registration time: the type this processor emits for
- * {@code beanType} plus its creation/build method names and the bean's {@code setterSuffix}
+ * {@code beanType} plus its creation/build method names and the bean's {@code setterPrefix}
* naming option — flattened to names so SPI adapters never touch the resolution model.
*/
public record PublishedBuilder(
@@ -82,7 +82,7 @@ public record PublishedBuilder(
TypeName builderType,
String creationMethodName,
String buildMethodName,
- String setterSuffix) {}
+ String setterPrefix) {}
private static volatile State state = State.INIT;
@@ -151,7 +151,7 @@ public static boolean isSimpleBuildersFinishedForIntegration(Elements observed)
* Publishes the builder {@link BuilderProcessor} resolved for {@code beanType} in this
* compilation — generated builders always create via a static factory.
*/
- static void registerBuilder(TypeName beanType, ResolvedBuilder builder, String setterSuffix) {
+ static void registerBuilder(TypeName beanType, ResolvedBuilder builder, String setterPrefix) {
if (!(builder.funcForEmptyBuilder() instanceof StaticFactoryCall factory)) {
return;
}
@@ -161,7 +161,7 @@ static void registerBuilder(TypeName beanType, ResolvedBuilder builder, String s
builder.typeName(),
factory.methodName(),
builder.buildMethodName(),
- setterSuffix);
+ setterPrefix);
BY_BEAN.put(publishedBuilder.beanType().getFullQualifiedName(), publishedBuilder);
BY_BUILDER.put(publishedBuilder.builderType().getFullQualifiedName(), publishedBuilder);
}
diff --git a/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/builder/JacksonAnnotationEnhancer.java b/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/builder/JacksonAnnotationEnhancer.java
index e38948b5..f15f3dae 100644
--- a/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/builder/JacksonAnnotationEnhancer.java
+++ b/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/builder/JacksonAnnotationEnhancer.java
@@ -118,7 +118,7 @@ private AnnotationDto createJsonPOJOBuilderAnnotation(BuilderDefinitionDto build
new TypeName("com.fasterxml.jackson.databind.annotation", "JsonPOJOBuilder"));
// Add withPrefix member with the setter prefix from configuration
- String setterPrefix = builderDto.getConfiguration().getSetterSuffix();
+ String setterPrefix = builderDto.getConfiguration().getSetterPrefix();
if (setterPrefix != null) {
annotation.addMember("withPrefix", "\"" + setterPrefix + "\"");
} else {
diff --git a/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/field/AddToCollectionGenerator.java b/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/field/AddToCollectionGenerator.java
index 8407de81..fc1ff40d 100644
--- a/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/field/AddToCollectionGenerator.java
+++ b/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/field/AddToCollectionGenerator.java
@@ -47,7 +47,7 @@
*
*
This generator creates methods that add single elements to collection fields, supporting both
* List and Set types. The generated methods follow the pattern "add2{#FieldName}" and always use
- * this naming convention regardless of setter suffix configuration.
+ * this naming convention regardless of setter prefix configuration.
*
*
Important behavior: The generated methods preserve immutability by creating a new
* collection instance. If the field already has a value, the method creates a copy of the existing
diff --git a/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/field/BasicSetterGenerator.java b/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/field/BasicSetterGenerator.java
index 9f66352f..a5545cb7 100644
--- a/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/field/BasicSetterGenerator.java
+++ b/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/field/BasicSetterGenerator.java
@@ -37,8 +37,8 @@
* Generates basic setter methods for all fields of the builder.
*
*
This generator creates the primary setter method for each field, which accepts the field type
- * directly and stores it in the builder. The method name follows the configured setter
- * prefix/suffix pattern (default is field name without prefix).
+ * directly and stores it in the builder. The method name follows the configured setter prefix
+ * pattern (default is field name without prefix).
*
*
Important behavior: The generated setter wraps the value using {@code changedValue()}
* to track that the field has been explicitly set. This allows distinguishing between fields that
@@ -48,7 +48,7 @@
* builder field must have.
*
*
This generator cannot be deactivated as it provides the core builder functionality. However,
- * the method naming can be configured using the setter prefix/suffix configuration options.
+ * the method naming can be configured using the setter prefix configuration option.
*
*
Example to demonstrate the generated methods
*
diff --git a/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/util/MethodGeneratorUtil.java b/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/util/MethodGeneratorUtil.java
index fc7607ed..a04afbe7 100644
--- a/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/util/MethodGeneratorUtil.java
+++ b/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/util/MethodGeneratorUtil.java
@@ -85,12 +85,12 @@ private MethodGeneratorUtil() {
* @return the method name with prefix applied
*/
public static String generateBuilderMethodName(String fieldName, ProcessingContext context) {
- return generateBuilderMethodName(fieldName, context.getConfiguration().getSetterSuffix());
+ return generateBuilderMethodName(fieldName, context.getConfiguration().getSetterPrefix());
}
/**
* Generates a builder method name by prepending the given setter prefix to the capitalized field
- * name — the same name derivation the context-based overload resolves from {@code setterSuffix},
+ * name — the same name derivation the context-based overload resolves from {@code setterPrefix},
* for callers without a {@link ProcessingContext} (e.g. SPI adapters).
*
* @param fieldName the field name
diff --git a/processor/src/main/java/org/javahelpers/simple/builders/processor/mapstruct/MapStructAccessorNamingStrategy.java b/processor/src/main/java/org/javahelpers/simple/builders/processor/mapstruct/MapStructAccessorNamingStrategy.java
index b4552f54..27073c86 100644
--- a/processor/src/main/java/org/javahelpers/simple/builders/processor/mapstruct/MapStructAccessorNamingStrategy.java
+++ b/processor/src/main/java/org/javahelpers/simple/builders/processor/mapstruct/MapStructAccessorNamingStrategy.java
@@ -55,9 +55,9 @@
* ({@code (Supplier)}, {@code (String, Object...)}, {@code (Consumer)})
* compete with the direct setter. For methods declared on a builder published by {@code
* BuilderProcessor} this strategy returns {@link MethodType#OTHER} for everything that is not the
- * direct property setter ({@code } — the option is applied as a prefix —
+ * direct property setter ({@code } — the option is applied as a prefix —
* taking a single argument of the field type). The property set is read off the builder's own
- * tracked fields and the setter suffix comes from the published {@link PublishedBuilder}
+ * tracked fields and the setter prefix comes from the published {@link PublishedBuilder}
* descriptors, so builders produced by earlier compilations and foreign types keep the {@link
* DefaultAccessorNamingStrategy} behaviour.
*/
@@ -136,12 +136,12 @@ private Map directSettersOf(TypeElement builderType) {
return Map.of();
}
Map directSetters = new HashMap<>();
- String setterSuffix = published.get().setterSuffix();
+ String setterPrefix = published.get().setterPrefix();
for (VariableElement field : ElementFilter.fieldsIn(builderType.getEnclosedElements())) {
if (!field.getModifiers().contains(Modifier.STATIC)) {
directSetters.put(
MethodGeneratorUtil.generateBuilderMethodName(
- field.getSimpleName().toString(), setterSuffix),
+ field.getSimpleName().toString(), setterPrefix),
trackedPropertyType(field.asType()));
}
}
diff --git a/processor/src/main/java/org/javahelpers/simple/builders/processor/mapstruct/MapStructBuilderProvider.java b/processor/src/main/java/org/javahelpers/simple/builders/processor/mapstruct/MapStructBuilderProvider.java
index fe32bf4c..518986db 100644
--- a/processor/src/main/java/org/javahelpers/simple/builders/processor/mapstruct/MapStructBuilderProvider.java
+++ b/processor/src/main/java/org/javahelpers/simple/builders/processor/mapstruct/MapStructBuilderProvider.java
@@ -56,7 +56,7 @@
* itself as builder-creation candidates. simple-builders keeps the factory on the generated builder
* class ({@code PersonDtoBuilder.create()}), so beans are paired with builders exclusively through
* the registry {@code BuilderProcessor} publishes — a constant-time lookup of already-resolved
- * {@link PublishedBuilder} descriptors (builder type, creation and build method, setter suffix),
+ * {@link PublishedBuilder} descriptors (builder type, creation and build method, setter prefix),
* covering custom packages and {@code @SimpleBuilderFor} targets. Builders produced by earlier
* compilations are not discovered: only the beans the processor plans in the current run get
* builder mapping.
diff --git a/processor/src/main/java/org/javahelpers/simple/builders/processor/model/core/BuilderConfiguration.java b/processor/src/main/java/org/javahelpers/simple/builders/processor/model/core/BuilderConfiguration.java
index 45edb180..75d1ee04 100644
--- a/processor/src/main/java/org/javahelpers/simple/builders/processor/model/core/BuilderConfiguration.java
+++ b/processor/src/main/java/org/javahelpers/simple/builders/processor/model/core/BuilderConfiguration.java
@@ -79,7 +79,7 @@
* @param builderSuffix Suffix for builder class name
* @param builderUsageSuffix Suffix for builder class name when referencing builders from the usage
* scope; null means fall back to {@code builderSuffix}
- * @param setterSuffix Suffix for setter method names
+ * @param setterPrefix Prefix for setter method names
* @param formattingMode Formatting mode for generated source code (null = inherit from compiler
* arg)
* @param strict Strict/fail-fast generation mode
@@ -118,7 +118,7 @@ public record BuilderConfiguration(
OptionState usingFieldFunctionPrefill,
String builderSuffix,
String builderUsageSuffix,
- String setterSuffix,
+ String setterPrefix,
String formattingMode,
OptionState strict) {
@@ -162,7 +162,7 @@ public record BuilderConfiguration(
.usingExistingBuilders(ENABLED)
.usingFieldFunctionPrefill(ENABLED)
.builderSuffix("Builder")
- .setterSuffix("")
+ .setterPrefix("")
.formattingMode(FormattingMode.JDT.getOptionValue())
.strict(DISABLED)
.build();
@@ -322,8 +322,8 @@ public String getBuilderUsageSuffix() {
return StringUtils.defaultIfBlank(builderUsageSuffix, builderSuffix);
}
- public String getSetterSuffix() {
- return setterSuffix;
+ public String getSetterPrefix() {
+ return setterPrefix;
}
public boolean isStrictModeEnabled() {
@@ -411,7 +411,7 @@ public BuilderConfiguration merge(BuilderConfiguration other) {
mergeOptionState(other.usingFieldFunctionPrefill, this.usingFieldFunctionPrefill))
.builderSuffix(mergeString(other.builderSuffix, this.builderSuffix))
.builderUsageSuffix(mergeString(other.builderUsageSuffix, this.builderUsageSuffix))
- .setterSuffix(mergeString(other.setterSuffix, this.setterSuffix))
+ .setterPrefix(mergeString(other.setterPrefix, this.setterPrefix))
.formattingMode(mergeString(other.formattingMode, this.formattingMode))
.strict(mergeOptionState(other.strict, this.strict))
.build();
@@ -502,7 +502,7 @@ public String toString() {
.appendValueIfSet("usingFieldFunctionPrefill", usingFieldFunctionPrefill)
.appendIfNotEmpty("builderSuffix", builderSuffix)
.appendIfNotEmpty("builderUsageSuffix", builderUsageSuffix)
- .appendIfNotEmpty("setterSuffix", setterSuffix)
+ .appendIfNotEmpty("setterPrefix", setterPrefix)
.appendIfNotEmpty("formattingMode", formattingMode)
.appendValueIfSet("strict", strict)
.toString();
@@ -587,7 +587,7 @@ public static class Builder {
// === Naming ===
private String builderSuffix = null;
private String builderUsageSuffix = null;
- private String setterSuffix = null;
+ private String setterPrefix = null;
// === Formatting ===
private String formattingMode = null;
@@ -912,8 +912,8 @@ public Builder builderUsageSuffix(String value) {
return this;
}
- public Builder setterSuffix(String value) {
- this.setterSuffix = value == null ? null : value.trim();
+ public Builder setterPrefix(String value) {
+ this.setterPrefix = value == null ? null : value.trim();
return this;
}
@@ -967,7 +967,7 @@ public BuilderConfiguration build() {
usingFieldFunctionPrefill,
builderSuffix,
builderUsageSuffix,
- setterSuffix,
+ setterPrefix,
formattingMode,
strict);
}
diff --git a/processor/src/main/java/org/javahelpers/simple/builders/processor/processing/CompilerArgumentsEnum.java b/processor/src/main/java/org/javahelpers/simple/builders/processor/processing/CompilerArgumentsEnum.java
index 8dfa6118..368c5bfc 100644
--- a/processor/src/main/java/org/javahelpers/simple/builders/processor/processing/CompilerArgumentsEnum.java
+++ b/processor/src/main/java/org/javahelpers/simple/builders/processor/processing/CompilerArgumentsEnum.java
@@ -179,8 +179,8 @@ public enum CompilerArgumentsEnum {
/** Option for builder class name suffix when referencing usage-scope builders. */
BUILDER_USAGE_SUFFIX("builderUsageSuffix", string(Builder::builderUsageSuffix)),
- /** Option for setter method name suffix. */
- SETTER_SUFFIX("setterSuffix", string(Builder::setterSuffix)),
+ /** Option for setter method name prefix. */
+ SETTER_PREFIX("setterPrefix", string(Builder::setterPrefix)),
// === Component Filtering ===
/**
diff --git a/processor/src/test/java/org/javahelpers/simple/builders/processor/AddToCollectionTest.java b/processor/src/test/java/org/javahelpers/simple/builders/processor/AddToCollectionTest.java
index b051593f..6f11ecf9 100644
--- a/processor/src/test/java/org/javahelpers/simple/builders/processor/AddToCollectionTest.java
+++ b/processor/src/test/java/org/javahelpers/simple/builders/processor/AddToCollectionTest.java
@@ -162,7 +162,7 @@ public java.util.List getTasks() {
}
@Test
- void add2Method_ignoresSetterSuffix() {
+ void add2Method_ignoresSetterPrefix() {
JavaFileObject dto =
com.google.testing.compile.JavaFileObjects.forSourceLines(
"test.PersonDto",
@@ -170,7 +170,7 @@ void add2Method_ignoresSetterSuffix() {
"import java.util.List;",
"@org.javahelpers.simple.builders.core.annotations.SimpleBuilder(",
" options = @org.javahelpers.simple.builders.core.annotations.SimpleBuilder.Options(",
- " setterSuffix = \"with\"",
+ " setterPrefix = \"with\"",
" )",
")",
"public class PersonDto {",
@@ -195,13 +195,13 @@ void add2Method_ignoresSetterSuffix() {
String generatedCode = loadGeneratedSource(compilation, "PersonDtoBuilder");
assertGenerationSucceeded(compilation, "PersonDtoBuilder", generatedCode);
- // Verify regular setter respects setterSuffix
+ // Verify regular setter respects setterPrefix
ProcessorAsserts.assertContaining(
generatedCode, "public PersonDtoBuilder withName(String name)");
ProcessorAsserts.assertContaining(
generatedCode, "public PersonDtoBuilder withNicknames(List nicknames)");
- // Verify add2 method does NOT respect setterSuffix - always uses add2FieldName pattern
+ // Verify add2 method does NOT respect setterPrefix - always uses add2FieldName pattern
ProcessorAsserts.assertContaining(
generatedCode, "public PersonDtoBuilder add2Nicknames(String element)");
diff --git a/processor/src/test/java/org/javahelpers/simple/builders/processor/BuilderConfigurationReaderTest.java b/processor/src/test/java/org/javahelpers/simple/builders/processor/BuilderConfigurationReaderTest.java
index e50451be..be8600e7 100644
--- a/processor/src/test/java/org/javahelpers/simple/builders/processor/BuilderConfigurationReaderTest.java
+++ b/processor/src/test/java/org/javahelpers/simple/builders/processor/BuilderConfigurationReaderTest.java
@@ -80,7 +80,7 @@ void readFromOptions_WithOptionsAnnotation_AppliesAllOptions() {
builderAccess = AccessModifier.PACKAGE_PRIVATE,
methodAccess = AccessModifier.PACKAGE_PRIVATE,
builderSuffix = "Factory",
- setterSuffix = "with"
+ setterPrefix = "with"
))
public class PersonDto {
private String name;
@@ -107,7 +107,7 @@ public class PersonDto {
// Verify class access is PACKAGE_PRIVATE
ProcessorAsserts.assertNotContaining(generatedCode, "public class PersonDtoFactory");
- // Verify setterSuffix="with"
+ // Verify setterPrefix="with"
ProcessorAsserts.assertContaining(generatedCode, "PersonDtoFactory withName(String name)");
ProcessorAsserts.assertContaining(generatedCode, "PersonDtoFactory withTags(");
@@ -211,7 +211,7 @@ void readFromTemplate_InlineTemplateDefinition_AppliesTemplateConfiguration() {
generateConditionalHelper = OptionState.DISABLED,
generateWithInterface = OptionState.DISABLED,
builderSuffix = "InlineBuilder",
- setterSuffix = "update"
+ setterPrefix = "update"
))
@Retention(RetentionPolicy.CLASS)
@Target(ElementType.TYPE)
@@ -268,7 +268,7 @@ void resolveConfiguration_OptionsOverridesTemplate_AppliesPriorityCorrectly() {
@MyBuliderForTestAnnotation
@SimpleBuilder(options = @SimpleBuilder.Options(
builderSuffix = "OptionsBuilder",
- setterSuffix = "set"
+ setterPrefix = "set"
))
public class PersonDto {
private String name;
@@ -329,7 +329,7 @@ public class PersonDto {
ProcessorTestUtils.createCompiler()
.withOptions(
"-Asimplebuilder.builderSuffix=CustomBuilder",
- "-Asimplebuilder.setterSuffix=set",
+ "-Asimplebuilder.setterPrefix=set",
"-Asimplebuilder.generateVarArgsHelpers=false")
.compile(source);
@@ -400,7 +400,7 @@ public class PersonDto {
* helpers, unboxed optional, collection builders, annotations
* (@Generated, @BuilderImplementation)
* Compiler args: Disable conditional helper, with interface, string format helpers
- * Inline options: Custom naming (builderSuffix, setterSuffix)
+ * Inline options: Custom naming (builderSuffix, setterPrefix)
* Template: Ignored (because @SimpleBuilder is present)
*
*/
@@ -429,7 +429,7 @@ void resolveConfiguration_AllLayersTogether_CompleteChain() {
usingBuilderImplementationAnnotation = OptionState.DISABLED,
usingJacksonDeserializerAnnotation = OptionState.DISABLED,
builderSuffix = "MinimalBuilder",
- setterSuffix = "with"
+ setterPrefix = "with"
))
public class PersonDto {
private String name;
diff --git a/processor/src/test/java/org/javahelpers/simple/builders/processor/CompilerArgumentsReaderTest.java b/processor/src/test/java/org/javahelpers/simple/builders/processor/CompilerArgumentsReaderTest.java
index c1928de6..7b931f3e 100644
--- a/processor/src/test/java/org/javahelpers/simple/builders/processor/CompilerArgumentsReaderTest.java
+++ b/processor/src/test/java/org/javahelpers/simple/builders/processor/CompilerArgumentsReaderTest.java
@@ -267,7 +267,7 @@ void readBuilderConfiguration_NoArguments_ReturnsDefaults() {
assertEquals(AccessModifier.DEFAULT, config.getBuilderConstructorAccess());
assertEquals(AccessModifier.DEFAULT, config.getMethodAccess());
assertNull(config.getBuilderSuffix(), "Builder suffix should be null when not set");
- assertNull(config.getSetterSuffix(), "Setter suffix should be null when not set");
+ assertNull(config.getSetterPrefix(), "Setter prefix should be null when not set");
assertTrue(
config.getBuilderGenerationPackagesSet().isEmpty(),
"Builder generation packages should be empty when not set");
@@ -291,7 +291,7 @@ void readBuilderConfiguration_AllOptionsSet_ReadsCorrectly() {
.put("simplebuilder.generateUpdateHelpers", "enabled")
.put("simplebuilder.copyTypeAnnotations", "enabled")
.put("simplebuilder.builderSuffix", "Factory")
- .put("simplebuilder.setterSuffix", "with")
+ .put("simplebuilder.setterPrefix", "with")
.put("simplebuilder.builderGenerationPackages", "a.b, c.d")
.put("simplebuilder.builderUsagePackages", "x.y")
.build();
@@ -310,7 +310,7 @@ void readBuilderConfiguration_AllOptionsSet_ReadsCorrectly() {
assertEquals(OptionState.ENABLED, config.generateUpdateHelpers());
assertEquals(OptionState.ENABLED, config.copyTypeAnnotations());
assertEquals("Factory", config.getBuilderSuffix());
- assertEquals("with", config.getSetterSuffix());
+ assertEquals("with", config.getSetterPrefix());
assertEquals(Set.of("a.b", "c.d"), config.getBuilderGenerationPackagesSet());
assertEquals(Set.of("x.y"), config.getBuilderUsagePackagesSet());
}
@@ -347,7 +347,7 @@ void readBuilderConfiguration_EmptyStringValues_HandlesGracefully() {
.put("simplebuilder.generateFieldSupplier", "")
.put("simplebuilder.builderAccess", "")
.put("simplebuilder.builderSuffix", "")
- .put("simplebuilder.setterSuffix", "")
+ .put("simplebuilder.setterPrefix", "")
.build();
CompilerArgumentsReader reader = new CompilerArgumentsReader(env);
@@ -357,6 +357,6 @@ void readBuilderConfiguration_EmptyStringValues_HandlesGracefully() {
assertEquals(OptionState.UNSET, config.generateFieldSupplier(), "Empty should be UNSET");
assertEquals(AccessModifier.DEFAULT, config.getBuilderAccess(), "Empty should be DEFAULT");
assertEquals("", config.getBuilderSuffix(), "Empty string should be preserved for suffix");
- assertEquals("", config.getSetterSuffix(), "Empty string should be preserved for suffix");
+ assertEquals("", config.getSetterPrefix(), "Empty string should be preserved for prefix");
}
}
diff --git a/processor/src/test/java/org/javahelpers/simple/builders/processor/ConfigurationProcessingTest.java b/processor/src/test/java/org/javahelpers/simple/builders/processor/ConfigurationProcessingTest.java
index 24801cb5..bc03df33 100644
--- a/processor/src/test/java/org/javahelpers/simple/builders/processor/ConfigurationProcessingTest.java
+++ b/processor/src/test/java/org/javahelpers/simple/builders/processor/ConfigurationProcessingTest.java
@@ -89,7 +89,7 @@ void allConfigurationOptions_AccessNamingAndFormatting_MustBeReadable() {
assertEquals(AccessModifier.PRIVATE, config.getBuilderConstructorAccess());
assertEquals(AccessModifier.PACKAGE_PRIVATE, config.getMethodAccess());
assertEquals("Builder", config.getBuilderSuffix());
- assertEquals("", config.getSetterSuffix());
+ assertEquals("", config.getSetterPrefix());
assertEquals("lightweight", config.formattingMode());
assertEquals(Set.of("a.b"), config.getBuilderGenerationPackagesSet());
assertEquals(Set.of("c.d"), config.getBuilderUsagePackagesSet());
@@ -158,7 +158,7 @@ private static BuilderConfiguration buildFullyConfigured() {
.generateJavaDoc(OptionState.ENABLED)
// Naming
.builderSuffix("Builder")
- .setterSuffix("")
+ .setterPrefix("")
// Formatting
.formattingMode("lightweight")
// Builder scoping
@@ -271,7 +271,7 @@ public Address() {}
"-Asimplebuilder.usingJacksonDeserializerAnnotation=false",
"-Asimplebuilder.generateJavaDoc=false",
"-Asimplebuilder.builderSuffix=CustomBuilder",
- "-Asimplebuilder.setterSuffix=with")
+ "-Asimplebuilder.setterPrefix=with")
.compile(nestedDto, addressDto, source);
// Then: Compilation should succeed
@@ -361,7 +361,7 @@ public Address() {}
ProcessorAsserts.assertNotContaining(
generatedCode, "public MinimalDtoCustomBuilder withName(String name)");
- // But package-private methods should exist - with setterSuffix="with", methods are prefixed
+ // But package-private methods should exist - with setterPrefix="with", methods are prefixed
ProcessorAsserts.assertContaining(
generatedCode,
"MinimalDtoCustomBuilder withName(String name)",
@@ -387,7 +387,7 @@ public Address() {}
"MinimalDtoCustomBuilder withProperties(Consumer> propertiesBuilderConsumer)");
// Still generates: basic setters and build method
- // With setterSuffix="with", all setter methods should be prefixed with "with" and capitalized
+ // With setterPrefix="with", all setter methods should be prefixed with "with" and capitalized
ProcessorAsserts.assertContaining(
generatedCode,
"class MinimalDtoCustomBuilder",
@@ -566,7 +566,7 @@ void configurationMerge_MustRespectPriority() {
.generateSupplier(OptionState.ENABLED)
.generateConsumer(OptionState.ENABLED)
.builderAccess(AccessModifier.PUBLIC)
- .setterSuffix("")
+ .setterPrefix("")
.builderGenerationPackages("base.pkg")
.builderUsagePackages("base.lib")
.build();
@@ -576,7 +576,7 @@ void configurationMerge_MustRespectPriority() {
BuilderConfiguration.builder()
.generateSupplier(OptionState.DISABLED) // Override
.generateBuilderConsumer(OptionState.DISABLED) // New value
- .setterSuffix("with") // Override setterSuffix
+ .setterPrefix("with") // Override setterPrefix
.builderGenerationPackages("override.pkg")
// generateConsumer not set, should keep base value
.build();
@@ -598,7 +598,7 @@ void configurationMerge_MustRespectPriority() {
AccessModifier.PUBLIC,
merged.getBuilderAccess(),
"Base value should be kept when override is DEFAULT");
- assertEquals("with", merged.getSetterSuffix(), "Override should win for setterSuffix");
+ assertEquals("with", merged.getSetterPrefix(), "Override should win for setterPrefix");
assertEquals(Set.of("override.pkg"), merged.getBuilderGenerationPackagesSet());
assertEquals(Set.of("base.lib"), merged.getBuilderUsagePackagesSet());
}
@@ -660,7 +660,7 @@ void configurationToString_MustBeHumanReadable() {
.generateConsumer(OptionState.ENABLED)
.builderAccess(AccessModifier.PRIVATE)
.methodAccess(AccessModifier.PACKAGE_PRIVATE)
- .setterSuffix("with")
+ .setterPrefix("with")
.build();
String configString = config.toString();
@@ -675,9 +675,9 @@ void configurationToString_MustBeHumanReadable() {
assertTrue(
configString.contains("PACKAGE_PRIVATE"), "toString should show AccessModifier values");
assertTrue(
- configString.contains("setterSuffix"),
- "toString should mention setterSuffix when non-default");
- assertTrue(configString.contains("with"), "toString should show setterSuffix value");
+ configString.contains("setterPrefix"),
+ "toString should mention setterPrefix when non-default");
+ assertTrue(configString.contains("with"), "toString should show setterPrefix value");
// Verify it's not just a hash code
assertTrue(configString.length() > 100, "toString should be detailed, not just class@hashcode");
diff --git a/processor/src/test/java/org/javahelpers/simple/builders/processor/JacksonSupportTest.java b/processor/src/test/java/org/javahelpers/simple/builders/processor/JacksonSupportTest.java
index e77850dc..3a6a604a 100644
--- a/processor/src/test/java/org/javahelpers/simple/builders/processor/JacksonSupportTest.java
+++ b/processor/src/test/java/org/javahelpers/simple/builders/processor/JacksonSupportTest.java
@@ -58,7 +58,7 @@ void usingJacksonDeserializerAnnotation_WhenEnabled_ShouldGenerateAnnotation() {
ProcessorTestUtils.createCompiler()
.withOptions(
"-Asimplebuilder.usingJacksonDeserializerAnnotation=true",
- "-Asimplebuilder.setterSuffix=with")
+ "-Asimplebuilder.setterPrefix=with")
.compile(source);
// Then
diff --git a/processor/src/test/java/org/javahelpers/simple/builders/processor/MapStructSpiProbeTest.java b/processor/src/test/java/org/javahelpers/simple/builders/processor/MapStructSpiProbeTest.java
index 2cc11a55..f7469f29 100644
--- a/processor/src/test/java/org/javahelpers/simple/builders/processor/MapStructSpiProbeTest.java
+++ b/processor/src/test/java/org/javahelpers/simple/builders/processor/MapStructSpiProbeTest.java
@@ -69,7 +69,7 @@ void probe_shouldDriveSpiAgainstEmittedElements() {
Compilation compilation =
Compiler.javac()
.withProcessors(new SpiProbeProcessor(), new BuilderProcessor())
- .compile(personDto(), foreignDto(), ignoredDto(), templateDto(), suffixDto());
+ .compile(personDto(), foreignDto(), ignoredDto(), templateDto(), prefixDto());
assertThat(compilation).succeeded();
ProbeResults results = ProbeResults.instance;
@@ -102,12 +102,12 @@ void probe_shouldDriveSpiAgainstEmittedElements() {
assertEquals(MethodType.OTHER, results.methodTypes.get("build"));
assertEquals(MethodType.OTHER, results.methodTypes.get("create"));
- // A configured setterSuffix is applied as a prefix: only the exact direct setter stays a
+ // A configured setterPrefix is applied as a prefix: only the exact direct setter stays a
// write accessor — every prefixed helper and lifecycle method resolves to OTHER.
- assertEquals(MethodType.SETTER, results.suffixMethodTypes.get("withName(java.lang.String)"));
+ assertEquals(MethodType.SETTER, results.prefixMethodTypes.get("withName(java.lang.String)"));
assertEquals(
1,
- results.suffixMethodTypes.values().stream()
+ results.prefixMethodTypes.values().stream()
.filter(type -> type == MethodType.SETTER)
.count());
@@ -139,7 +139,7 @@ private static final class ProbeResults {
static final ProbeResults instance = new ProbeResults();
final Map methodTypes = new LinkedHashMap<>();
- final Map suffixMethodTypes = new LinkedHashMap<>();
+ final Map prefixMethodTypes = new LinkedHashMap<>();
Throwable unregisteredDeferral;
Throwable templateDeferral;
Throwable skippedBeanDeferred;
@@ -158,7 +158,7 @@ private static final class ProbeResults {
void reset() {
methodTypes.clear();
- suffixMethodTypes.clear();
+ prefixMethodTypes.clear();
unregisteredDeferral = null;
templateDeferral = null;
skippedBeanDeferred = null;
@@ -290,11 +290,11 @@ public boolean process(Set extends TypeElement> annotations, RoundEnvironment
for (ExecutableElement method : ElementFilter.methodsIn(builder.getEnclosedElements())) {
results.methodTypes.put(method.getSimpleName().toString(), naming.getMethodType(method));
}
- TypeElement suffixBuilder = element("test.SuffixDtoBuilder");
- if (suffixBuilder != null) {
+ TypeElement prefixBuilder = element("test.PrefixDtoBuilder");
+ if (prefixBuilder != null) {
for (ExecutableElement method :
- ElementFilter.methodsIn(suffixBuilder.getEnclosedElements())) {
- results.suffixMethodTypes.put(signatureKey(method), naming.getMethodType(method));
+ ElementFilter.methodsIn(prefixBuilder.getEnclosedElements())) {
+ results.prefixMethodTypes.put(signatureKey(method), naming.getMethodType(method));
}
}
TypeElement foreignBean = element("test.ForeignDto");
@@ -401,15 +401,15 @@ public class ScopedDto {
""");
}
- private static JavaFileObject suffixDto() {
+ private static JavaFileObject prefixDto() {
return ProcessorTestUtils.forSource(
"""
package test;
import org.javahelpers.simple.builders.core.annotations.SimpleBuilder;
- @SimpleBuilder(options = @SimpleBuilder.Options(setterSuffix = "with"))
- public class SuffixDto {
+ @SimpleBuilder(options = @SimpleBuilder.Options(setterPrefix = "with"))
+ public class PrefixDto {
private String name;
public void setName(String name) {
diff --git a/processor/src/test/java/org/javahelpers/simple/builders/processor/SimpleBuildersSpiIntegrationTest.java b/processor/src/test/java/org/javahelpers/simple/builders/processor/SimpleBuildersSpiIntegrationTest.java
index ec15d772..bd6fbf50 100644
--- a/processor/src/test/java/org/javahelpers/simple/builders/processor/SimpleBuildersSpiIntegrationTest.java
+++ b/processor/src/test/java/org/javahelpers/simple/builders/processor/SimpleBuildersSpiIntegrationTest.java
@@ -122,7 +122,7 @@ void registry_publishesBothDirections() {
assertEquals("test.PersonDtoBuilder", PERSON.builderType().getFullQualifiedName());
assertEquals("create", PERSON.creationMethodName());
assertEquals("build", PERSON.buildMethodName());
- assertEquals("", PERSON.setterSuffix());
+ assertEquals("", PERSON.setterPrefix());
}
@Test
diff --git a/processor/src/test/java/org/javahelpers/simple/builders/processor/testing/MyBuliderForTestAnnotation.java b/processor/src/test/java/org/javahelpers/simple/builders/processor/testing/MyBuliderForTestAnnotation.java
index 94e82ec2..42ceb817 100644
--- a/processor/src/test/java/org/javahelpers/simple/builders/processor/testing/MyBuliderForTestAnnotation.java
+++ b/processor/src/test/java/org/javahelpers/simple/builders/processor/testing/MyBuliderForTestAnnotation.java
@@ -14,7 +14,7 @@
generateConditionalHelper = OptionState.DISABLED,
generateWithInterface = OptionState.DISABLED,
builderSuffix = "MiniBuilder",
- setterSuffix = "set"))
+ setterPrefix = "set"))
@Retention(RetentionPolicy.CLASS)
@Target(ElementType.TYPE)
public @interface MyBuliderForTestAnnotation {}