4
4
import io .scalecube .services .auth .PrincipalMapper ;
5
5
import io .scalecube .services .exceptions .ServiceProviderErrorMapper ;
6
6
import io .scalecube .services .transport .api .ServiceMessageDataDecoder ;
7
+ import java .lang .System .Logger ;
8
+ import java .lang .System .Logger .Level ;
7
9
import java .util .Collections ;
8
10
import java .util .HashMap ;
9
11
import java .util .Map ;
@@ -18,6 +20,8 @@ public class ServiceInfo {
18
20
private final ServiceMessageDataDecoder dataDecoder ;
19
21
private final Authenticator <Object > authenticator ;
20
22
private final PrincipalMapper <Object , Object > principalMapper ;
23
+ private final Logger logger ;
24
+ private final Level level ;
21
25
22
26
private ServiceInfo (Builder builder ) {
23
27
this .serviceInstance = builder .serviceInstance ;
@@ -26,6 +30,8 @@ private ServiceInfo(Builder builder) {
26
30
this .dataDecoder = builder .dataDecoder ;
27
31
this .authenticator = builder .authenticator ;
28
32
this .principalMapper = builder .principalMapper ;
33
+ this .logger = builder .logger ;
34
+ this .level = builder .level ;
29
35
}
30
36
31
37
public static Builder from (ServiceInfo serviceInfo ) {
@@ -60,15 +66,25 @@ public PrincipalMapper<Object, Object> principalMapper() {
60
66
return principalMapper ;
61
67
}
62
68
69
+ public Logger logger () {
70
+ return logger ;
71
+ }
72
+
73
+ public Level level () {
74
+ return level ;
75
+ }
76
+
63
77
@ Override
64
78
public String toString () {
65
79
return new StringJoiner (", " , ServiceInfo .class .getSimpleName () + "[" , "]" )
66
80
.add ("serviceInstance=" + serviceInstance )
67
- .add ("tags( " + tags . size () + ")" )
81
+ .add ("tags= " + tags )
68
82
.add ("errorMapper=" + errorMapper )
69
83
.add ("dataDecoder=" + dataDecoder )
70
84
.add ("authenticator=" + authenticator )
71
85
.add ("principalMapper=" + principalMapper )
86
+ .add ("logger=" + logger )
87
+ .add ("level=" + level )
72
88
.toString ();
73
89
}
74
90
@@ -80,6 +96,8 @@ public static class Builder {
80
96
private ServiceMessageDataDecoder dataDecoder ;
81
97
private Authenticator <Object > authenticator ;
82
98
private PrincipalMapper <Object , Object > principalMapper ;
99
+ private Logger logger ;
100
+ private Level level ;
83
101
84
102
private Builder (ServiceInfo serviceInfo ) {
85
103
this .serviceInstance = serviceInfo .serviceInstance ;
@@ -88,6 +106,8 @@ private Builder(ServiceInfo serviceInfo) {
88
106
this .dataDecoder = serviceInfo .dataDecoder ;
89
107
this .authenticator = serviceInfo .authenticator ;
90
108
this .principalMapper = serviceInfo .principalMapper ;
109
+ this .logger = serviceInfo .logger ;
110
+ this .level = serviceInfo .level ;
91
111
}
92
112
93
113
private Builder (Object serviceInstance ) {
@@ -98,8 +118,8 @@ private Builder(Object serviceInstance) {
98
118
* Setter for {@code tags}. Merges this {@code tags} with {@code Microservices.tags}. If keys
99
119
* are clashing this {@code tags} shall override {@code Microservices.tags}.
100
120
*
101
- * @param key tag key; not null
102
- * @param value tag value; not null
121
+ * @param key tag key
122
+ * @param value tag value
103
123
* @return this builder
104
124
*/
105
125
public Builder tag (String key , String value ) {
@@ -112,18 +132,41 @@ public Builder tag(String key, String value) {
112
132
/**
113
133
* Setter for {@code errorMapper}. Overrides default {@code Microservices.errorMapper}.
114
134
*
115
- * @param errorMapper error mapper; not null
135
+ * @param errorMapper error mapper
116
136
* @return this buidler
117
137
*/
118
138
public Builder errorMapper (ServiceProviderErrorMapper errorMapper ) {
119
139
this .errorMapper = Objects .requireNonNull (errorMapper , "errorMapper" );
120
140
return this ;
121
141
}
122
142
143
+ /**
144
+ * Setter for {@code logger}. Overrides default {@code Microservices.logger}.
145
+ *
146
+ * @param name logger name (optional)
147
+ * @param level logger level (optional)
148
+ * @return this buidler
149
+ */
150
+ public Builder logger (String name , Level level ) {
151
+ this .logger = name != null ? System .getLogger (name ) : null ;
152
+ this .level = level ;
153
+ return this ;
154
+ }
155
+
156
+ /**
157
+ * Setter for {@code logger}. Overrides default {@code Microservices.logger}.
158
+ *
159
+ * @param name logger name (optional)
160
+ * @return this buidler
161
+ */
162
+ public Builder logger (String name ) {
163
+ return logger (name , Level .DEBUG );
164
+ }
165
+
123
166
/**
124
167
* Setter for {@code dataDecoder}. Overrides default {@code Microservices.dataDecoder}.
125
168
*
126
- * @param dataDecoder data decoder; not null
169
+ * @param dataDecoder data decoder
127
170
* @return this builder
128
171
*/
129
172
public Builder dataDecoder (ServiceMessageDataDecoder dataDecoder ) {
@@ -134,7 +177,7 @@ public Builder dataDecoder(ServiceMessageDataDecoder dataDecoder) {
134
177
/**
135
178
* Setter for {@code authenticator}. Overrides default {@code Microservices.authenticator}.
136
179
*
137
- * @param authenticator authenticator; optional
180
+ * @param authenticator authenticator ( optional)
138
181
* @param <T> type of auth data returned by authenticator
139
182
* @return this builder
140
183
*/
@@ -147,7 +190,7 @@ public <T> Builder authenticator(Authenticator<? extends T> authenticator) {
147
190
/**
148
191
* Setter for {@code principalMapper}. Overrides default {@code Microservices.principalMapper}.
149
192
*
150
- * @param principalMapper principalMapper; optional
193
+ * @param principalMapper principalMapper ( optional)
151
194
* @param <T> auth data type
152
195
* @param <R> principal type
153
196
* @return this builder
@@ -160,28 +203,35 @@ public <T, R> Builder principalMapper(PrincipalMapper<? super T, ? extends R> pr
160
203
161
204
Builder errorMapperIfAbsent (ServiceProviderErrorMapper errorMapper ) {
162
205
if (this .errorMapper == null ) {
163
- this . errorMapper = errorMapper ;
206
+ return errorMapper ( errorMapper ) ;
164
207
}
165
208
return this ;
166
209
}
167
210
168
211
Builder dataDecoderIfAbsent (ServiceMessageDataDecoder dataDecoder ) {
169
212
if (this .dataDecoder == null ) {
170
- this . dataDecoder = dataDecoder ;
213
+ return dataDecoder ( dataDecoder ) ;
171
214
}
172
215
return this ;
173
216
}
174
217
175
218
Builder authenticatorIfAbsent (Authenticator <Object > authenticator ) {
176
219
if (this .authenticator == null ) {
177
- this . authenticator = authenticator ;
220
+ return authenticator ( authenticator ) ;
178
221
}
179
222
return this ;
180
223
}
181
224
182
225
Builder principalMapperIfAbsent (PrincipalMapper <Object , Object > principalMapper ) {
183
226
if (this .principalMapper == null ) {
184
- this .principalMapper = principalMapper ;
227
+ return principalMapper (principalMapper );
228
+ }
229
+ return this ;
230
+ }
231
+
232
+ Builder loggerIfAbsent (String name , Level level ) {
233
+ if (this .logger == null ) {
234
+ return logger (name , level );
185
235
}
186
236
return this ;
187
237
}
0 commit comments