Docs: how peer builder features are already solved the Simple Builders way - #226
Merged
AndreasIgel merged 4 commits intoAug 1, 2026
Merged
Conversation
Co-Authored-By: Andreas Igel <andreas.igel@computacenter.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Co-Authored-By: Andreas Igel <andreas.igel@computacenter.com>
AndreasIgel
commented
Aug 1, 2026
Co-Authored-By: Andreas Igel <andreas.igel@computacenter.com>
5 tasks
AndreasIgel
commented
Aug 1, 2026
Co-Authored-By: Andreas Igel <andreas.igel@computacenter.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Documentation: how peer builder features are already solved the Simple Builders way
Closes #225.
Why
A feature comparison against Lombok, Immutables, AutoValue, FreeBuilder and RecordBuilder found that several capabilities those libraries advertise are already supported by Simple Builders — but implemented in an SB-specific way that follows its design paradigm (augment the types you already have; never redefine their semantics). Because the "SB way" of each wasn't documented, a fresh comparison (human or AI) mistakes them for missing features. This PR is documentation only — no source or behavior changes — so those "gaps" aren't re-raised.
What changed (README only)
"How Simple Builders compares" → new subsection "Doing what other builders advertise — the Simple Builders way", with one concise entry per capability, each linking to the relevant Usage section:
with/toBuilder(theWithinterface)add2X, collection builders, varargs)(Default values are intentionally not listed — SB has no first-class default mechanism; that missing feature is tracked in #227.)
Plus an explicit note that generating value semantics (
equals/hashCode/toString) and brand-new immutable value types are deliberate out-of-scope paradigm choices, not missing features.Usage section — two new subsections documenting inherent behavior (placed here, not in CONFIGURATION.md, because these are behaviors, not configurable options):
NotNull/NonNull-named annotation (any package, matched by simple name).build()then enforces: constructor fields must be set and non-null; setter fields, if set, must be non-null — violations throwIllegalStateException. Includes a record example.List.copyOf(...)example.TOC updated for all three new subsections.
docs/CONFIGURATION.mdis unchanged.Verification
git diff --checkcleanmvn -N validatepasses