|
|
|
@ -39,6 +39,7 @@ import static org.assertj.core.api.Assertions.assertThat; |
|
|
|
* Unit tests for {@link ReactiveAdapterRegistry}. |
|
|
|
* Unit tests for {@link ReactiveAdapterRegistry}. |
|
|
|
* |
|
|
|
* |
|
|
|
* @author Rossen Stoyanchev |
|
|
|
* @author Rossen Stoyanchev |
|
|
|
|
|
|
|
* @author Juergen Hoeller |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
class ReactiveAdapterRegistryTests { |
|
|
|
class ReactiveAdapterRegistryTests { |
|
|
|
@ -54,14 +55,40 @@ class ReactiveAdapterRegistryTests { |
|
|
|
ReactiveAdapter adapter2 = getAdapter(ExtendedFlux.class); |
|
|
|
ReactiveAdapter adapter2 = getAdapter(ExtendedFlux.class); |
|
|
|
assertThat(adapter2).isSameAs(adapter1); |
|
|
|
assertThat(adapter2).isSameAs(adapter1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Register regular reactive type (after existing adapters)
|
|
|
|
this.registry.registerReactiveType( |
|
|
|
this.registry.registerReactiveType( |
|
|
|
ReactiveTypeDescriptor.multiValue(ExtendedFlux.class, ExtendedFlux::empty), |
|
|
|
ReactiveTypeDescriptor.multiValue(ExtendedFlux.class, ExtendedFlux::empty), |
|
|
|
o -> (ExtendedFlux<?>) o, |
|
|
|
o -> (ExtendedFlux<?>) o, |
|
|
|
ExtendedFlux::from); |
|
|
|
ExtendedFlux::from); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Matches for ExtendedFlux itself
|
|
|
|
ReactiveAdapter adapter3 = getAdapter(ExtendedFlux.class); |
|
|
|
ReactiveAdapter adapter3 = getAdapter(ExtendedFlux.class); |
|
|
|
assertThat(adapter3).isNotNull(); |
|
|
|
assertThat(adapter3).isNotNull(); |
|
|
|
assertThat(adapter3).isNotSameAs(adapter1); |
|
|
|
assertThat(adapter3).isNotSameAs(adapter1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Does not match for ExtendedFlux subclass since the default Flux adapter
|
|
|
|
|
|
|
|
// is being assignability-checked first when no specific match was found
|
|
|
|
|
|
|
|
ReactiveAdapter adapter4 = getAdapter(ExtendedExtendedFlux.class); |
|
|
|
|
|
|
|
assertThat(adapter4).isSameAs(adapter1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Register reactive type override (before existing adapters)
|
|
|
|
|
|
|
|
this.registry.registerReactiveTypeOverride( |
|
|
|
|
|
|
|
ReactiveTypeDescriptor.multiValue(Flux.class, ExtendedFlux::empty), |
|
|
|
|
|
|
|
o -> (ExtendedFlux<?>) o, |
|
|
|
|
|
|
|
ExtendedFlux::from); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Override match for Flux
|
|
|
|
|
|
|
|
ReactiveAdapter adapter5 = getAdapter(Flux.class); |
|
|
|
|
|
|
|
assertThat(adapter5).isNotNull(); |
|
|
|
|
|
|
|
assertThat(adapter5).isNotSameAs(adapter1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Initially registered adapter specifically matches for ExtendedFlux
|
|
|
|
|
|
|
|
ReactiveAdapter adapter6 = getAdapter(ExtendedFlux.class); |
|
|
|
|
|
|
|
assertThat(adapter6).isSameAs(adapter3); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Override match for ExtendedFlux subclass
|
|
|
|
|
|
|
|
ReactiveAdapter adapter7 = getAdapter(ExtendedExtendedFlux.class); |
|
|
|
|
|
|
|
assertThat(adapter7).isSameAs(adapter5); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -81,6 +108,10 @@ class ReactiveAdapterRegistryTests { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static class ExtendedExtendedFlux<T> extends ExtendedFlux<T> { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Nested |
|
|
|
@Nested |
|
|
|
class Reactor { |
|
|
|
class Reactor { |
|
|
|
|
|
|
|
|
|
|
|
|