This is an automated email from the ASF dual-hosted git repository.

veithen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-axiom.git


The following commit(s) were added to refs/heads/master by this push:
     new 949be5c2d Refactor fluent builder design doc into ADR-0002
949be5c2d is described below

commit 949be5c2d6c6e3136c5bde2907f2f43b7e9ef435
Author: Andreas Veithen-Knowles <[email protected]>
AuthorDate: Sat Feb 21 22:56:24 2026 +0000

    Refactor fluent builder design doc into ADR-0002
---
 .../0002-fluent-builder-conventions.md}            | 24 ++++++++++++++--------
 docs/design/README.md                              |  1 -
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/docs/design/fluent-builder.md 
b/docs/adr/0002-fluent-builder-conventions.md
similarity index 75%
rename from docs/design/fluent-builder.md
rename to docs/adr/0002-fluent-builder-conventions.md
index 8e911981e..2ff6a0105 100644
--- a/docs/design/fluent-builder.md
+++ b/docs/adr/0002-fluent-builder-conventions.md
@@ -20,16 +20,12 @@
 Fluent builder conventions
 ==========================
 
-Builders are mutable objects which create other (often immutable) objects.
-They are used as an alternative to public constructors in order to avoid
-constructors with long argument lists and classes with many different 
constructors.
-Builders generally use the fluent pattern so that method calls to the setters
-of the builder can be chained.
+## Decision
 
 Axiom uses the following coding conventions for builders:
 
 *   A builder type is implemented as a public static final inner class of the 
class
-    to be built. The name of the class is `Builder` and it's constructor must 
not be public.
+    to be built. The name of the class is `Builder` and its constructor must 
not be public.
 
 *   A builder instance is created using a static method named `builder` 
defined on the
     type being built.
@@ -46,7 +42,19 @@ Axiom uses the following coding conventions for builders:
     be used to create a new instance similar to an existing one, and the 
expectation is that
     `someInstance.toBuilder().build()` would produce an instance that is equal 
(in the
     relevant sense) to `someInstance`.
-    
-    If the build type has a `toBuilder` method, then the builder type may need 
additional
+
+    If the built type has a `toBuilder` method, then the builder type may need 
additional
     methods allowing the caller to unset properties. In certain cases it may 
also be pertinent
     to add getter methods to support complex state transitions.
+
+## Rationale
+
+*   Builders are mutable objects which create other (often immutable) objects. 
They are used
+    as an alternative to public constructors in order to avoid constructors 
with long argument
+    lists and classes with many different constructors.
+
+*   Builders generally use the fluent pattern so that method calls to the 
setters of the
+    builder can be chained, improving readability.
+
+*   Having consistent conventions across the codebase makes the API 
predictable and easier
+    to use.
diff --git a/docs/design/README.md b/docs/design/README.md
index ef4681fe2..4308e0f3c 100644
--- a/docs/design/README.md
+++ b/docs/design/README.md
@@ -23,4 +23,3 @@ Design documents
 | Title/link | Status |
 | ---------- | ------ |
 | [OSGi integration and separation between API and 
implementation](osgi-integration.md) | Implemented |
-| [Fluent builders](fluent-builder.md) | Implemented |

Reply via email to