@@ -32,7 +32,13 @@ public class DbClientContext implements DbContext {
32
32
private final DbStatements statements ;
33
33
private final String dbType ;
34
34
35
- private DbClientContext (Builder builder ) {
35
+ /**
36
+ * Create an instance of client context.
37
+ *
38
+ * @param builder Builder for {@link DbClientContext}
39
+ */
40
+ protected DbClientContext (
41
+ BuilderBase <? extends BuilderBase <?, ? extends DbClientContext >, ? extends DbClientContext > builder ) {
36
42
this .dbMapperManager = builder .dbMapperManager ;
37
43
this .mapperManager = builder .mapperManager ;
38
44
this .clientServices = builder .clientServices ;
@@ -81,20 +87,27 @@ public static Builder builder() {
81
87
/**
82
88
* Builder for {@link DbClientContext}.
83
89
*/
84
- public static class Builder implements io .helidon .common .Builder <Builder , DbClientContext > {
90
+ public static final class Builder extends BuilderBase <Builder , DbClientContext > {
91
+
92
+ @ Override
93
+ public DbClientContext build () {
94
+ return new DbClientContext (this );
95
+ }
96
+
97
+ }
98
+
99
+ /**
100
+ * Base builder for {@link DbClientContext}.
101
+ */
102
+ public static abstract class BuilderBase <B extends BuilderBase <B , T >, T extends DbClientContext > implements io .helidon .common .Builder <B , T > {
85
103
86
104
private DbMapperManager dbMapperManager ;
87
105
private MapperManager mapperManager ;
88
106
private List <DbClientService > clientServices = List .of ();
89
107
private DbStatements statements ;
90
108
private String dbType ;
91
109
92
- private Builder () {
93
- }
94
-
95
- @ Override
96
- public DbClientContext build () {
97
- return new DbClientContext (this );
110
+ public BuilderBase () {
98
111
}
99
112
100
113
/**
@@ -103,9 +116,9 @@ public DbClientContext build() {
103
116
* @param dbMapperManager DB mapper manager
104
117
* @return updated builder instance
105
118
*/
106
- public Builder dbMapperManager (DbMapperManager dbMapperManager ) {
119
+ public B dbMapperManager (DbMapperManager dbMapperManager ) {
107
120
this .dbMapperManager = dbMapperManager ;
108
- return this ;
121
+ return identity () ;
109
122
}
110
123
111
124
/**
@@ -114,9 +127,9 @@ public Builder dbMapperManager(DbMapperManager dbMapperManager) {
114
127
* @param mapperManager mapper manager
115
128
* @return updated builder instance
116
129
*/
117
- public Builder mapperManager (MapperManager mapperManager ) {
130
+ public B mapperManager (MapperManager mapperManager ) {
118
131
this .mapperManager = mapperManager ;
119
- return this ;
132
+ return identity () ;
120
133
}
121
134
122
135
/**
@@ -125,9 +138,9 @@ public Builder mapperManager(MapperManager mapperManager) {
125
138
* @param clientServices client service list
126
139
* @return updated builder instance
127
140
*/
128
- public Builder clientServices (List <DbClientService > clientServices ) {
141
+ public B clientServices (List <DbClientService > clientServices ) {
129
142
this .clientServices = clientServices ;
130
- return this ;
143
+ return identity () ;
131
144
}
132
145
133
146
/**
@@ -136,9 +149,9 @@ public Builder clientServices(List<DbClientService> clientServices) {
136
149
* @param statements statements
137
150
* @return updated builder instance
138
151
*/
139
- public Builder statements (DbStatements statements ) {
152
+ public B statements (DbStatements statements ) {
140
153
this .statements = statements ;
141
- return this ;
154
+ return identity () ;
142
155
}
143
156
144
157
/**
@@ -147,9 +160,9 @@ public Builder statements(DbStatements statements) {
147
160
* @param dbType database provider type
148
161
* @return updated builder instance
149
162
*/
150
- public Builder dbType (String dbType ) {
163
+ public B dbType (String dbType ) {
151
164
this .dbType = dbType ;
152
- return this ;
165
+ return identity () ;
153
166
}
154
167
}
155
168
}
0 commit comments