Improve toString for reactive ScheduledTask
Prior to this commit, the reactive Scheduled tasks would be wrapped as a `SubscribingRunnable` which does not implement a custom `toString`. This would result in task metadata using the default Java `toString` representation for those. This commit ensures that the bean class name and method name are used for this `toString`. Closes gh-34010
This commit is contained in:
parent
15dcc449a2
commit
d990449b0d
|
@ -123,8 +123,9 @@ abstract class ScheduledAnnotationReactiveSupport {
|
|||
Publisher<?> publisher = getPublisherFor(method, targetBean);
|
||||
Supplier<ScheduledTaskObservationContext> contextSupplier =
|
||||
() -> new ScheduledTaskObservationContext(targetBean, method);
|
||||
String displayName = targetBean.getClass().getName() + "." + method.getName();
|
||||
return new SubscribingRunnable(publisher, shouldBlock, scheduled.scheduler(),
|
||||
subscriptionTrackerRegistry, observationRegistrySupplier, contextSupplier);
|
||||
subscriptionTrackerRegistry, displayName, observationRegistrySupplier, contextSupplier);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -192,6 +193,8 @@ abstract class ScheduledAnnotationReactiveSupport {
|
|||
|
||||
final boolean shouldBlock;
|
||||
|
||||
final String displayName;
|
||||
|
||||
@Nullable
|
||||
private final String qualifier;
|
||||
|
||||
|
@ -202,12 +205,13 @@ abstract class ScheduledAnnotationReactiveSupport {
|
|||
final Supplier<ScheduledTaskObservationContext> contextSupplier;
|
||||
|
||||
SubscribingRunnable(Publisher<?> publisher, boolean shouldBlock,
|
||||
@Nullable String qualifier, List<Runnable> subscriptionTrackerRegistry,
|
||||
Supplier<ObservationRegistry> observationRegistrySupplier,
|
||||
Supplier<ScheduledTaskObservationContext> contextSupplier) {
|
||||
@Nullable String qualifier, List<Runnable> subscriptionTrackerRegistry,
|
||||
String displayName, Supplier<ObservationRegistry> observationRegistrySupplier,
|
||||
Supplier<ScheduledTaskObservationContext> contextSupplier) {
|
||||
|
||||
this.publisher = publisher;
|
||||
this.shouldBlock = shouldBlock;
|
||||
this.displayName = displayName;
|
||||
this.qualifier = qualifier;
|
||||
this.subscriptionTrackerRegistry = subscriptionTrackerRegistry;
|
||||
this.observationRegistrySupplier = observationRegistrySupplier;
|
||||
|
@ -253,6 +257,11 @@ abstract class ScheduledAnnotationReactiveSupport {
|
|||
this.publisher.subscribe(subscriber);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.displayName;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2023 the original author or authors.
|
||||
* Copyright 2002-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -173,6 +173,17 @@ class ScheduledAnnotationReactiveSupportTests {
|
|||
assertThat(p).hasToString("checkpoint(\"@Scheduled 'mono()' in 'org.springframework.scheduling.annotation.ScheduledAnnotationReactiveSupportTests$ReactiveMethods'\")");
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldProvideToString() {
|
||||
ReactiveMethods target = new ReactiveMethods();
|
||||
Method m = ReflectionUtils.findMethod(ReactiveMethods.class, "mono");
|
||||
Scheduled cron = AnnotationUtils.synthesizeAnnotation(Map.of("cron", "-"), Scheduled.class, null);
|
||||
List<Runnable> tracker = new ArrayList<>();
|
||||
|
||||
assertThat(createSubscriptionRunnable(m, target, cron, () -> ObservationRegistry.NOOP, tracker))
|
||||
.hasToString("org.springframework.scheduling.annotation.ScheduledAnnotationReactiveSupportTests$ReactiveMethods.mono");
|
||||
}
|
||||
|
||||
|
||||
static class ReactiveMethods {
|
||||
|
||||
|
|
Loading…
Reference in New Issue