21
21
import io .scalecube .services .routing .Router ;
22
22
import io .scalecube .services .routing .Routers ;
23
23
import io .scalecube .services .transport .api .ClientTransport ;
24
+ import java .lang .reflect .Array ;
24
25
import java .lang .reflect .Method ;
25
26
import java .lang .reflect .Proxy ;
26
27
import java .lang .reflect .Type ;
28
+ import java .util .Collection ;
27
29
import java .util .Collections ;
28
30
import java .util .HashMap ;
29
31
import java .util .Map ;
30
32
import java .util .Objects ;
31
33
import java .util .Optional ;
32
34
import java .util .function .Function ;
33
35
import org .reactivestreams .Publisher ;
34
- import org .slf4j .Logger ;
35
- import org .slf4j .LoggerFactory ;
36
36
import reactor .core .Exceptions ;
37
37
import reactor .core .publisher .Flux ;
38
38
import reactor .core .publisher .Mono ;
@@ -46,7 +46,8 @@ public class ServiceCall implements AutoCloseable {
46
46
private ServiceClientErrorMapper errorMapper = DefaultErrorMapper .INSTANCE ;
47
47
private Map <String , String > credentials = Collections .emptyMap ();
48
48
private String contentType = ServiceMessage .DEFAULT_DATA_FORMAT ;
49
- private Logger logger ;
49
+
50
+ // private Logger logger;
50
51
51
52
public ServiceCall () {}
52
53
@@ -57,7 +58,6 @@ private ServiceCall(ServiceCall other) {
57
58
this .errorMapper = other .errorMapper ;
58
59
this .contentType = other .contentType ;
59
60
this .credentials = Collections .unmodifiableMap (new HashMap <>(other .credentials ));
60
- this .logger = other .logger ;
61
61
}
62
62
63
63
/**
@@ -144,42 +144,6 @@ public ServiceCall contentType(String contentType) {
144
144
return target ;
145
145
}
146
146
147
- /**
148
- * Setter for {@link ServiceCall} {@code logger}.
149
- *
150
- * @param name logger name (optional)
151
- * @return new {@link ServiceCall} instance.
152
- */
153
- public ServiceCall logger (String name ) {
154
- ServiceCall target = new ServiceCall (this );
155
- target .logger = name != null ? LoggerFactory .getLogger (name ) : null ;
156
- return target ;
157
- }
158
-
159
- /**
160
- * Setter for {@link ServiceCall} {@code logger}.
161
- *
162
- * @param clazz logger name (optional)
163
- * @return new {@link ServiceCall} instance.
164
- */
165
- public ServiceCall logger (Class <?> clazz ) {
166
- ServiceCall target = new ServiceCall (this );
167
- target .logger = clazz != null ? LoggerFactory .getLogger (clazz ) : null ;
168
- return target ;
169
- }
170
-
171
- /**
172
- * Setter for {@link ServiceCall} {@code logger}.
173
- *
174
- * @param logger logger (optional)
175
- * @return new {@link ServiceCall} instance.
176
- */
177
- public ServiceCall logger (Logger logger ) {
178
- ServiceCall target = new ServiceCall (this );
179
- target .logger = logger ;
180
- return target ;
181
- }
182
-
183
147
/**
184
148
* Invokes fire-and-forget request.
185
149
*
@@ -209,50 +173,37 @@ public Mono<ServiceMessage> requestOne(ServiceMessage request) {
209
173
*/
210
174
public Mono <ServiceMessage > requestOne (ServiceMessage request , Type responseType ) {
211
175
return Mono .defer (
212
- () -> {
213
- ServiceMethodInvoker methodInvoker ;
214
- if (serviceRegistry != null
215
- && (methodInvoker = serviceRegistry .lookupInvoker (request )) != null ) {
216
- // local service
217
- return methodInvoker
218
- .invokeOne (request )
219
- .map (this ::throwIfError )
220
- .contextWrite (
221
- context -> {
222
- if (context .hasKey (RequestContext .class )) {
223
- return context ;
224
- } else {
225
- return new RequestContext (context )
226
- .headers (request .headers ())
227
- .request (request )
228
- .principal (NULL_PRINCIPAL );
229
- }
230
- });
231
- } else {
232
- // remote service
233
- Objects .requireNonNull (transport , "[requestOne] transport" );
234
- return Mono .fromCallable (() -> serviceLookup (request ))
235
- .flatMap (
236
- serviceReference ->
237
- transport
238
- .create (serviceReference )
239
- .requestResponse (request , responseType )
240
- .map (this ::throwIfError ));
241
- }
242
- })
243
- .doOnSuccess (
244
- response -> {
245
- if (logger != null && logger .isDebugEnabled ()) {
246
- logger .debug (
247
- "[{}] request: {}, response: {}" , request .qualifier (), request , response );
248
- }
249
- })
250
- .doOnError (
251
- ex -> {
252
- if (logger != null ) {
253
- logger .error ("[{}][error] request: {}" , request .qualifier (), request , ex );
254
- }
255
- });
176
+ () -> {
177
+ ServiceMethodInvoker methodInvoker ;
178
+ if (serviceRegistry != null
179
+ && (methodInvoker = serviceRegistry .lookupInvoker (request )) != null ) {
180
+ // local service
181
+ return methodInvoker
182
+ .invokeOne (request )
183
+ .map (this ::throwIfError )
184
+ .contextWrite (
185
+ context -> {
186
+ if (context .hasKey (RequestContext .class )) {
187
+ return context ;
188
+ } else {
189
+ return new RequestContext (context )
190
+ .headers (request .headers ())
191
+ .request (request )
192
+ .principal (NULL_PRINCIPAL );
193
+ }
194
+ });
195
+ } else {
196
+ // remote service
197
+ Objects .requireNonNull (transport , "[requestOne] transport" );
198
+ return Mono .fromCallable (() -> serviceLookup (request ))
199
+ .flatMap (
200
+ serviceReference ->
201
+ transport
202
+ .create (serviceReference )
203
+ .requestResponse (request , responseType )
204
+ .map (this ::throwIfError ));
205
+ }
206
+ });
256
207
}
257
208
258
209
/**
@@ -274,55 +225,37 @@ public Flux<ServiceMessage> requestMany(ServiceMessage request) {
274
225
*/
275
226
public Flux <ServiceMessage > requestMany (ServiceMessage request , Type responseType ) {
276
227
return Flux .defer (
277
- () -> {
278
- ServiceMethodInvoker methodInvoker ;
279
- if (serviceRegistry != null
280
- && (methodInvoker = serviceRegistry .lookupInvoker (request )) != null ) {
281
- // local service
282
- return methodInvoker
283
- .invokeMany (request )
284
- .map (this ::throwIfError )
285
- .contextWrite (
286
- context -> {
287
- if (context .hasKey (RequestContext .class )) {
288
- return context ;
289
- } else {
290
- return new RequestContext (context )
291
- .headers (request .headers ())
292
- .request (request )
293
- .principal (NULL_PRINCIPAL );
294
- }
295
- });
296
- } else {
297
- // remote service
298
- Objects .requireNonNull (transport , "[requestMany] transport" );
299
- return Mono .fromCallable (() -> serviceLookup (request ))
300
- .flatMapMany (
301
- serviceReference ->
302
- transport
303
- .create (serviceReference )
304
- .requestStream (request , responseType )
305
- .map (this ::throwIfError ));
306
- }
307
- })
308
- .doOnSubscribe (
309
- s -> {
310
- if (logger != null && logger .isDebugEnabled ()) {
311
- logger .debug ("[{}][subscribe] request: {}" , request .qualifier (), request );
312
- }
313
- })
314
- .doOnComplete (
315
- () -> {
316
- if (logger != null && logger .isDebugEnabled ()) {
317
- logger .debug ("[{}][complete] request: {}" , request .qualifier (), request );
318
- }
319
- })
320
- .doOnError (
321
- ex -> {
322
- if (logger != null ) {
323
- logger .error ("[{}][error] request: {}" , request .qualifier (), request , ex );
324
- }
325
- });
228
+ () -> {
229
+ ServiceMethodInvoker methodInvoker ;
230
+ if (serviceRegistry != null
231
+ && (methodInvoker = serviceRegistry .lookupInvoker (request )) != null ) {
232
+ // local service
233
+ return methodInvoker
234
+ .invokeMany (request )
235
+ .map (this ::throwIfError )
236
+ .contextWrite (
237
+ context -> {
238
+ if (context .hasKey (RequestContext .class )) {
239
+ return context ;
240
+ } else {
241
+ return new RequestContext (context )
242
+ .headers (request .headers ())
243
+ .request (request )
244
+ .principal (NULL_PRINCIPAL );
245
+ }
246
+ });
247
+ } else {
248
+ // remote service
249
+ Objects .requireNonNull (transport , "[requestMany] transport" );
250
+ return Mono .fromCallable (() -> serviceLookup (request ))
251
+ .flatMapMany (
252
+ serviceReference ->
253
+ transport
254
+ .create (serviceReference )
255
+ .requestStream (request , responseType )
256
+ .map (this ::throwIfError ));
257
+ }
258
+ });
326
259
}
327
260
328
261
/**
@@ -513,6 +446,29 @@ private static MethodInfo getMethodInfo(Class<?> serviceInterface, Method method
513
446
Collections .emptyList ());
514
447
}
515
448
449
+ private static String toString (Object request ) {
450
+ if (request == null ) {
451
+ return "null" ;
452
+ }
453
+ // Handle arrays
454
+ if (request .getClass ().isArray ()) {
455
+ return request .getClass ().getComponentType ().getSimpleName ()
456
+ + "["
457
+ + Array .getLength (request )
458
+ + "]" ;
459
+ }
460
+ // Handle collections
461
+ if (request instanceof Collection <?> collection ) {
462
+ return collection .getClass ().getSimpleName () + "[" + collection .size () + "]" ;
463
+ }
464
+ // Handle maps
465
+ if (request instanceof Map <?, ?> map ) {
466
+ return map .getClass ().getSimpleName () + "[" + map .size () + "]" ;
467
+ }
468
+ // Fallback
469
+ return String .valueOf (request );
470
+ }
471
+
516
472
@ Override
517
473
public void close () {
518
474
if (transport != null ) {
0 commit comments