2121import io .scalecube .services .routing .Router ;
2222import io .scalecube .services .routing .Routers ;
2323import io .scalecube .services .transport .api .ClientTransport ;
24+ import java .lang .reflect .Array ;
2425import java .lang .reflect .Method ;
2526import java .lang .reflect .Proxy ;
2627import java .lang .reflect .Type ;
28+ import java .util .Collection ;
2729import java .util .Collections ;
2830import java .util .HashMap ;
2931import java .util .Map ;
3032import java .util .Objects ;
3133import java .util .Optional ;
3234import java .util .function .Function ;
3335import org .reactivestreams .Publisher ;
34- import org .slf4j .Logger ;
35- import org .slf4j .LoggerFactory ;
3636import reactor .core .Exceptions ;
3737import reactor .core .publisher .Flux ;
3838import reactor .core .publisher .Mono ;
@@ -46,7 +46,8 @@ public class ServiceCall implements AutoCloseable {
4646 private ServiceClientErrorMapper errorMapper = DefaultErrorMapper .INSTANCE ;
4747 private Map <String , String > credentials = Collections .emptyMap ();
4848 private String contentType = ServiceMessage .DEFAULT_DATA_FORMAT ;
49- private Logger logger ;
49+
50+ // private Logger logger;
5051
5152 public ServiceCall () {}
5253
@@ -57,7 +58,6 @@ private ServiceCall(ServiceCall other) {
5758 this .errorMapper = other .errorMapper ;
5859 this .contentType = other .contentType ;
5960 this .credentials = Collections .unmodifiableMap (new HashMap <>(other .credentials ));
60- this .logger = other .logger ;
6161 }
6262
6363 /**
@@ -144,42 +144,6 @@ public ServiceCall contentType(String contentType) {
144144 return target ;
145145 }
146146
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-
183147 /**
184148 * Invokes fire-and-forget request.
185149 *
@@ -209,50 +173,37 @@ public Mono<ServiceMessage> requestOne(ServiceMessage request) {
209173 */
210174 public Mono <ServiceMessage > requestOne (ServiceMessage request , Type responseType ) {
211175 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+ });
256207 }
257208
258209 /**
@@ -274,55 +225,37 @@ public Flux<ServiceMessage> requestMany(ServiceMessage request) {
274225 */
275226 public Flux <ServiceMessage > requestMany (ServiceMessage request , Type responseType ) {
276227 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+ });
326259 }
327260
328261 /**
@@ -513,6 +446,29 @@ private static MethodInfo getMethodInfo(Class<?> serviceInterface, Method method
513446 Collections .emptyList ());
514447 }
515448
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+
516472 @ Override
517473 public void close () {
518474 if (transport != null ) {
0 commit comments