From 3f9bd25edcdfde325bcbf4ad4df9089ce838d68c Mon Sep 17 00:00:00 2001
From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Date: Sun, 11 Oct 2026 23:45:30 +0000
Subject: [PATCH 1/2] feat!: rename setterSuffix option to setterPrefix (#342)
The option was applied as a prefix (setterSuffix + capitalize(field)),
never a suffix. Hard rename across the annotation element,
BuilderConfiguration, the -Asimplebuilder.setterPrefix compiler arg and
docs, with no compatibility alias.
---
.../core/annotations/SimpleBuilder.java | 18 +++++++-------
.../annotations/SimpleMinimalBuilder.java | 2 +-
docs/CONFIGURATION.md | 10 ++++----
.../builder/JacksonAnnotationEnhancer.java | 2 +-
.../field/AddToCollectionGenerator.java | 2 +-
.../generators/util/MethodGeneratorUtil.java | 6 ++---
.../model/core/BuilderConfiguration.java | 22 ++++++++---------
.../processing/CompilerArgumentsEnum.java | 4 ++--
.../processor/AddToCollectionTest.java | 8 +++----
.../BuilderConfigurationReaderTest.java | 14 +++++------
.../CompilerArgumentsReaderTest.java | 10 ++++----
.../ConfigurationProcessingTest.java | 24 +++++++++----------
.../processor/JacksonSupportTest.java | 2 +-
.../testing/MyBuliderForTestAnnotation.java | 2 +-
14 files changed, 63 insertions(+), 63 deletions(-)
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 d8e8cea9..bfb7932e 100644
--- a/docs/CONFIGURATION.md
+++ b/docs/CONFIGURATION.md
@@ -1154,15 +1154,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;
}
@@ -1698,7 +1698,7 @@ methodAccess = AccessModifier.PRIVATE
# Naming
-Asimplebuilder.builderSuffix=CustomSuffix
--Asimplebuilder.setterSuffix=customPrefix
+-Asimplebuilder.setterPrefix=customPrefix
# Reliability
-Asimplebuilder.strict=ENABLED|DISABLED
@@ -1762,7 +1762,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/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/util/MethodGeneratorUtil.java b/processor/src/main/java/org/javahelpers/simple/builders/processor/generators/util/MethodGeneratorUtil.java
index fa190c46..4517f58e 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,11 +85,11 @@ private MethodGeneratorUtil() {
* @return the method name with prefix applied
*/
public static String generateBuilderMethodName(String fieldName, ProcessingContext context) {
- String suffix = context.getConfiguration().getSetterSuffix();
- if (suffix == null || suffix.isEmpty()) {
+ String prefix = context.getConfiguration().getSetterPrefix();
+ if (prefix == null || prefix.isEmpty()) {
return fieldName;
}
- return suffix + StringUtils.capitalize(fieldName);
+ return prefix + StringUtils.capitalize(fieldName);
}
/**
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 6fa81777..34923e8d 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
@@ -172,8 +172,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 212e7fce..300347ef 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
@@ -214,7 +214,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");
@@ -238,7 +238,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();
@@ -257,7 +257,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());
}
@@ -294,7 +294,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);
@@ -304,6 +304,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/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 {}
From e1095e6254613acc607c6eaf1d7f164c3cb4879f Mon Sep 17 00:00:00 2001
From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Date: Sun, 11 Oct 2026 23:48:20 +0000
Subject: [PATCH 2/2] docs: drop stale suffix wording in BasicSetterGenerator
javadoc (#342)
---
.../processor/generators/field/BasicSetterGenerator.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
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
*