Use constant fields for Reactive Wrapper Converters guards.

Enables reachability analysis. Previously, the presence checks were using method invocations and the AOT processing isn't following the methods.

Original Pull Request: #2624
This commit is contained in:
Mark Paluch
2022-06-30 15:35:18 +02:00
committed by Christoph Strobl
parent e71f7c2bd6
commit 2d16692f51

View File

@@ -64,9 +64,15 @@ public abstract class ReactiveWrapperConverters {
private static final List<ReactiveTypeWrapper<?>> REACTIVE_WRAPPERS = new ArrayList<>();
private static final GenericConversionService GENERIC_CONVERSION_SERVICE = new GenericConversionService();
private static final boolean RXJAVA3_PRESENT = ReactiveWrappers.isAvailable(ReactiveLibrary.RXJAVA3);
private static final boolean REACTOR_PRESENT = ReactiveWrappers.isAvailable(ReactiveLibrary.PROJECT_REACTOR);
private static final boolean KOTLIN_COROUTNES_PRESENT = ReactiveWrappers
.isAvailable(ReactiveLibrary.KOTLIN_COROUTINES);
private static final boolean MUTINY_PRESENT = ReactiveWrappers.isAvailable(ReactiveLibrary.MUTINY);
static {
if (ReactiveWrappers.isAvailable(ReactiveLibrary.RXJAVA3)) {
if (RXJAVA3_PRESENT) {
REACTIVE_WRAPPERS.add(RxJava3SingleWrapper.INSTANCE);
REACTIVE_WRAPPERS.add(RxJava3MaybeWrapper.INSTANCE);
@@ -74,18 +80,18 @@ public abstract class ReactiveWrapperConverters {
REACTIVE_WRAPPERS.add(RxJava3FlowableWrapper.INSTANCE);
}
if (ReactiveWrappers.isAvailable(ReactiveLibrary.PROJECT_REACTOR)) {
if (REACTOR_PRESENT) {
REACTIVE_WRAPPERS.add(FluxWrapper.INSTANCE);
REACTIVE_WRAPPERS.add(MonoWrapper.INSTANCE);
REACTIVE_WRAPPERS.add(PublisherWrapper.INSTANCE);
}
if (ReactiveWrappers.isAvailable(ReactiveLibrary.KOTLIN_COROUTINES)) {
if (KOTLIN_COROUTNES_PRESENT) {
REACTIVE_WRAPPERS.add(FlowWrapper.INSTANCE);
}
if (ReactiveWrappers.isAvailable(ReactiveLibrary.MUTINY)) {
if (MUTINY_PRESENT) {
REACTIVE_WRAPPERS.add(UniWrapper.INSTANCE);
REACTIVE_WRAPPERS.add(MultiWrapper.INSTANCE);
}
@@ -104,12 +110,12 @@ public abstract class ReactiveWrapperConverters {
Assert.notNull(conversionService, "ConversionService must not be null");
if (ReactiveWrappers.isAvailable(ReactiveLibrary.PROJECT_REACTOR)) {
if (REACTOR_PRESENT) {
conversionService.addConverter(PublisherToMonoConverter.INSTANCE);
conversionService.addConverter(PublisherToFluxConverter.INSTANCE);
if (ReactiveWrappers.isAvailable(ReactiveLibrary.KOTLIN_COROUTINES)) {
if (KOTLIN_COROUTNES_PRESENT) {
conversionService.addConverter(PublisherToFlowConverter.INSTANCE);
}
@@ -439,7 +445,6 @@ public abstract class ReactiveWrapperConverters {
}
}
// -------------------------------------------------------------------------
// ReactiveStreams converters
// -------------------------------------------------------------------------