Skip to content

Commit 41ab268

Browse files
committed
Polishing contribution
See gh-27331
1 parent 1dc1283 commit 41ab268

File tree

2 files changed

+33
-28
lines changed

2 files changed

+33
-28
lines changed

spring-core/src/main/java/org/springframework/core/ReactiveAdapterRegistry.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@
2424
import java.util.concurrent.CompletionStage;
2525
import java.util.function.Function;
2626

27-
import io.smallrye.mutiny.Multi;
28-
import io.smallrye.mutiny.Uni;
2927
import kotlinx.coroutines.CompletableDeferredKt;
3028
import kotlinx.coroutines.Deferred;
3129
import org.reactivestreams.Publisher;
@@ -85,7 +83,7 @@ public class ReactiveAdapterRegistry {
8583
rxjava3Present = ClassUtils.isPresent("io.reactivex.rxjava3.core.Flowable", classLoader);
8684
flowPublisherPresent = ClassUtils.isPresent("java.util.concurrent.Flow.Publisher", classLoader);
8785
kotlinCoroutinesPresent = ClassUtils.isPresent("kotlinx.coroutines.reactor.MonoKt", classLoader);
88-
mutinyPresent = ClassUtils.isPresent("io.smallrye.mutiny.Uni", classLoader);
86+
mutinyPresent = ClassUtils.isPresent("io.smallrye.mutiny.Multi", classLoader);
8987
}
9088

9189
private final List<ReactiveAdapter> adapters = new ArrayList<>();
@@ -427,19 +425,24 @@ void registerAdapters(ReactiveAdapterRegistry registry) {
427425
}
428426
}
429427

428+
430429
private static class MutinyRegistrar {
431430

432431
void registerAdapters(ReactiveAdapterRegistry registry) {
433432
registry.registerReactiveType(
434-
ReactiveTypeDescriptor.singleOptionalValue(Uni.class, ()-> Uni.createFrom().nothing()),
435-
uni ->((Uni<?>)uni).convert().toPublisher(),
436-
publisher -> Uni.createFrom().publisher(publisher)
433+
ReactiveTypeDescriptor.singleOptionalValue(
434+
io.smallrye.mutiny.Uni.class,
435+
() -> io.smallrye.mutiny.Uni.createFrom().nothing()),
436+
uni -> ((io.smallrye.mutiny.Uni<?>) uni).convert().toPublisher(),
437+
publisher -> io.smallrye.mutiny.Uni.createFrom().publisher(publisher)
437438
);
438439

439440
registry.registerReactiveType(
440-
ReactiveTypeDescriptor.multiValue(Multi.class, ()-> Multi.createFrom().empty()),
441-
multi -> (Multi<?>) multi,
442-
publisher-> Multi.createFrom().publisher(publisher)
441+
ReactiveTypeDescriptor.multiValue(
442+
io.smallrye.mutiny.Multi.class,
443+
() -> io.smallrye.mutiny.Multi.createFrom().empty()),
444+
multi -> (io.smallrye.mutiny.Multi<?>) multi,
445+
publisher -> io.smallrye.mutiny.Multi.createFrom().publisher(publisher)
443446
);
444447
}
445448
}

spring-core/src/test/java/org/springframework/core/ReactiveAdapterRegistryTests.java

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
@SuppressWarnings("unchecked")
4141
class ReactiveAdapterRegistryTests {
4242

43+
private static final Duration ONE_SECOND = Duration.ofSeconds(1);
44+
45+
4346
private final ReactiveAdapterRegistry registry = ReactiveAdapterRegistry.getSharedInstance();
4447

4548

@@ -85,15 +88,15 @@ void toFlux() {
8588
Publisher<Integer> source = io.reactivex.rxjava3.core.Flowable.fromIterable(sequence);
8689
Object target = getAdapter(Flux.class).fromPublisher(source);
8790
assertThat(target instanceof Flux).isTrue();
88-
assertThat(((Flux<Integer>) target).collectList().block(Duration.ofMillis(1000))).isEqualTo(sequence);
91+
assertThat(((Flux<Integer>) target).collectList().block(ONE_SECOND)).isEqualTo(sequence);
8992
}
9093

9194
@Test
9295
void toMono() {
9396
Publisher<Integer> source = io.reactivex.rxjava3.core.Flowable.fromArray(1, 2, 3);
9497
Object target = getAdapter(Mono.class).fromPublisher(source);
9598
assertThat(target instanceof Mono).isTrue();
96-
assertThat(((Mono<Integer>) target).block(Duration.ofMillis(1000))).isEqualTo(Integer.valueOf(1));
99+
assertThat(((Mono<Integer>) target).block(ONE_SECOND)).isEqualTo(Integer.valueOf(1));
97100
}
98101

99102
@Test
@@ -110,7 +113,7 @@ void fromCompletableFuture() {
110113
future.complete(1);
111114
Object target = getAdapter(CompletableFuture.class).toPublisher(future);
112115
assertThat(target instanceof Mono).as("Expected Mono Publisher: " + target.getClass().getName()).isTrue();
113-
assertThat(((Mono<Integer>) target).block(Duration.ofMillis(1000))).isEqualTo(Integer.valueOf(1));
116+
assertThat(((Mono<Integer>) target).block(ONE_SECOND)).isEqualTo(Integer.valueOf(1));
114117
}
115118
}
116119

@@ -155,23 +158,23 @@ void fromObservable() {
155158
Object source = rx.Observable.from(sequence);
156159
Object target = getAdapter(rx.Observable.class).toPublisher(source);
157160
assertThat(target instanceof Flux).as("Expected Flux Publisher: " + target.getClass().getName()).isTrue();
158-
assertThat(((Flux<Integer>) target).collectList().block(Duration.ofMillis(1000))).isEqualTo(sequence);
161+
assertThat(((Flux<Integer>) target).collectList().block(ONE_SECOND)).isEqualTo(sequence);
159162
}
160163

161164
@Test
162165
void fromSingle() {
163166
Object source = rx.Single.just(1);
164167
Object target = getAdapter(rx.Single.class).toPublisher(source);
165168
assertThat(target instanceof Mono).as("Expected Mono Publisher: " + target.getClass().getName()).isTrue();
166-
assertThat(((Mono<Integer>) target).block(Duration.ofMillis(1000))).isEqualTo(Integer.valueOf(1));
169+
assertThat(((Mono<Integer>) target).block(ONE_SECOND)).isEqualTo(Integer.valueOf(1));
167170
}
168171

169172
@Test
170173
void fromCompletable() {
171174
Object source = rx.Completable.complete();
172175
Object target = getAdapter(rx.Completable.class).toPublisher(source);
173176
assertThat(target instanceof Mono).as("Expected Mono Publisher: " + target.getClass().getName()).isTrue();
174-
((Mono<Void>) target).block(Duration.ofMillis(1000));
177+
((Mono<Void>) target).block(ONE_SECOND);
175178
}
176179
}
177180

@@ -229,7 +232,7 @@ void fromFlowable() {
229232
Object source = io.reactivex.Flowable.fromIterable(sequence);
230233
Object target = getAdapter(io.reactivex.Flowable.class).toPublisher(source);
231234
assertThat(target instanceof Flux).as("Expected Flux Publisher: " + target.getClass().getName()).isTrue();
232-
assertThat(((Flux<Integer>) target).collectList().block(Duration.ofMillis(1000))).isEqualTo(sequence);
235+
assertThat(((Flux<Integer>) target).collectList().block(ONE_SECOND)).isEqualTo(sequence);
233236
}
234237

235238
@Test
@@ -238,23 +241,23 @@ void fromObservable() {
238241
Object source = io.reactivex.Observable.fromIterable(sequence);
239242
Object target = getAdapter(io.reactivex.Observable.class).toPublisher(source);
240243
assertThat(target instanceof Flux).as("Expected Flux Publisher: " + target.getClass().getName()).isTrue();
241-
assertThat(((Flux<Integer>) target).collectList().block(Duration.ofMillis(1000))).isEqualTo(sequence);
244+
assertThat(((Flux<Integer>) target).collectList().block(ONE_SECOND)).isEqualTo(sequence);
242245
}
243246

244247
@Test
245248
void fromSingle() {
246249
Object source = io.reactivex.Single.just(1);
247250
Object target = getAdapter(io.reactivex.Single.class).toPublisher(source);
248251
assertThat(target instanceof Mono).as("Expected Mono Publisher: " + target.getClass().getName()).isTrue();
249-
assertThat(((Mono<Integer>) target).block(Duration.ofMillis(1000))).isEqualTo(Integer.valueOf(1));
252+
assertThat(((Mono<Integer>) target).block(ONE_SECOND)).isEqualTo(Integer.valueOf(1));
250253
}
251254

252255
@Test
253256
void fromCompletable() {
254257
Object source = io.reactivex.Completable.complete();
255258
Object target = getAdapter(io.reactivex.Completable.class).toPublisher(source);
256259
assertThat(target instanceof Mono).as("Expected Mono Publisher: " + target.getClass().getName()).isTrue();
257-
((Mono<Void>) target).block(Duration.ofMillis(1000));
260+
((Mono<Void>) target).block(ONE_SECOND);
258261
}
259262
}
260263

@@ -312,7 +315,7 @@ void fromFlowable() {
312315
Object source = io.reactivex.rxjava3.core.Flowable.fromIterable(sequence);
313316
Object target = getAdapter(io.reactivex.rxjava3.core.Flowable.class).toPublisher(source);
314317
assertThat(target instanceof Flux).as("Expected Flux Publisher: " + target.getClass().getName()).isTrue();
315-
assertThat(((Flux<Integer>) target).collectList().block(Duration.ofMillis(1000))).isEqualTo(sequence);
318+
assertThat(((Flux<Integer>) target).collectList().block(ONE_SECOND)).isEqualTo(sequence);
316319
}
317320

318321
@Test
@@ -321,23 +324,23 @@ void fromObservable() {
321324
Object source = io.reactivex.rxjava3.core.Observable.fromIterable(sequence);
322325
Object target = getAdapter(io.reactivex.rxjava3.core.Observable.class).toPublisher(source);
323326
assertThat(target instanceof Flux).as("Expected Flux Publisher: " + target.getClass().getName()).isTrue();
324-
assertThat(((Flux<Integer>) target).collectList().block(Duration.ofMillis(1000))).isEqualTo(sequence);
327+
assertThat(((Flux<Integer>) target).collectList().block(ONE_SECOND)).isEqualTo(sequence);
325328
}
326329

327330
@Test
328331
void fromSingle() {
329332
Object source = io.reactivex.rxjava3.core.Single.just(1);
330333
Object target = getAdapter(io.reactivex.rxjava3.core.Single.class).toPublisher(source);
331334
assertThat(target instanceof Mono).as("Expected Mono Publisher: " + target.getClass().getName()).isTrue();
332-
assertThat(((Mono<Integer>) target).block(Duration.ofMillis(1000))).isEqualTo(Integer.valueOf(1));
335+
assertThat(((Mono<Integer>) target).block(ONE_SECOND)).isEqualTo(Integer.valueOf(1));
333336
}
334337

335338
@Test
336339
void fromCompletable() {
337340
Object source = io.reactivex.rxjava3.core.Completable.complete();
338341
Object target = getAdapter(io.reactivex.rxjava3.core.Completable.class).toPublisher(source);
339342
assertThat(target instanceof Mono).as("Expected Mono Publisher: " + target.getClass().getName()).isTrue();
340-
((Mono<Void>) target).block(Duration.ofMillis(1000));
343+
((Mono<Void>) target).block(ONE_SECOND);
341344
}
342345
}
343346

@@ -359,7 +362,6 @@ void deferred() {
359362
}
360363
}
361364

362-
// SmallRye Mutiny
363365
@Nested
364366
class Mutiny {
365367

@@ -374,15 +376,15 @@ void toUni() {
374376
Publisher<Integer> source = Mono.just(1);
375377
Object target = getAdapter(Uni.class).fromPublisher(source);
376378
assertThat(target).isInstanceOf(Uni.class);
377-
assertThat(((Uni<Integer>) target).await().atMost(Duration.ofMillis(1000))).isEqualTo(Integer.valueOf(1));
379+
assertThat(((Uni<Integer>) target).await().atMost(ONE_SECOND)).isEqualTo(Integer.valueOf(1));
378380
}
379381

380382
@Test
381383
void fromUni() {
382384
Uni<Integer> source = Uni.createFrom().item(1);
383385
Object target = getAdapter(Uni.class).toPublisher(source);
384386
assertThat(target).isInstanceOf(Mono.class);
385-
assertThat(((Mono<Integer>) target).block(Duration.ofMillis(1000))).isEqualTo(Integer.valueOf(1));
387+
assertThat(((Mono<Integer>) target).block(ONE_SECOND)).isEqualTo(Integer.valueOf(1));
386388
}
387389

388390
@Test
@@ -391,7 +393,7 @@ void toMulti() {
391393
Publisher<Integer> source = Flux.fromIterable(sequence);
392394
Object target = getAdapter(Multi.class).fromPublisher(source);
393395
assertThat(target).isInstanceOf(Multi.class);
394-
assertThat(((Multi<Integer>) target).collect().asList().await().atMost(Duration.ofMillis(1000))).isEqualTo(sequence);
396+
assertThat(((Multi<Integer>) target).collect().asList().await().atMost(ONE_SECOND)).isEqualTo(sequence);
395397
}
396398

397399
@Test
@@ -400,7 +402,7 @@ void fromMulti() {
400402
Multi<Integer> source = Multi.createFrom().iterable(sequence);
401403
Object target = getAdapter(Multi.class).toPublisher(source);
402404
assertThat(target).isInstanceOf(Flux.class);
403-
assertThat(((Flux<Integer>) target).blockLast(Duration.ofMillis(1000))).isEqualTo(Integer.valueOf(3));
405+
assertThat(((Flux<Integer>) target).blockLast(ONE_SECOND)).isEqualTo(Integer.valueOf(3));
404406
}
405407

406408
}

0 commit comments

Comments
 (0)