'Mono.and ()' no se puede llamar con los parameters proporcionados
Estoy tratando de ejecutar el proyecto de muestra que se encuentra aquí . Sin embargo, estoy viendo un
Error:(38, 22) Kotlin: None of the following functions can be called with the arguments supplied: public final fun and(p0: ((Subscriber<in Any!>!) -> Unit)!): Mono<Void!>! defined in reactor.core.publisher.Mono public final fun and(p0: Publisher<*>!): Mono<Void!>! defined in reactor.core.publisher.Mono
- ¿Cómo usar "Definición funcional de frijoles Kotlin DSL" con Spring Boot y Spring WebFlux?
- ¿Hay alguna manera de implementar la pagination en spring webflux y spring datos reactivos
- Spring Boot + error (s) de anotación de Kotlin
- ¿Cómo verificar si Mono está vacío?
- ¿Cuál es la causa más probable de que las excepciones escapen misteriosamente de un bloque try-catch en este caso?
en la class ApiHandler.kt
en la function buildResponse
:
internal class ApiHandler(val geoLocationService: GeoLocationService, val sunriseSunsetService: SunriseSunsetService, val errorHandler: ErrorHandler) { private companion object { const val ADDRESS = "address" } internal fun getLocation(request: ServerRequest) = request.pathVariable(ADDRESS).toMono() .transform(this::buildResponse) .transform(this::serverResponse) .onErrorResume(errorHandler::throwableError)!! internal fun postLocation(request: ServerRequest) = request.extract<LocationRequest>() .map(LocationRequest::address) .transform(this::buildResponse) .transform(this::serverResponse) .onErrorResume(errorHandler::throwableError)!! internal fun buildResponse(address: Mono<String>) = address.transform(geoLocationService::fromAddress) .and(this::sunriseSunset, ::LocationResponse) internal fun sunriseSunset(geographicCoordinates: GeographicCoordinates) = geographicCoordinates.toMono().transform(sunriseSunsetService::fromGeographicCoordinates) internal fun serverResponse(locationResponseMono: Mono<LocationResponse>): Mono<ServerResponse> = locationResponseMono.flatMap { ok() withBody it } }
Supongo que la API de Spring ha cambiado desde que se escribió este código, pero no puedo averiguar a qué cambiar el .and(...)
to.
- Decode ByteArray con Spring 5 WebFlux framework
- Spring WebFlux y Kotlin Support: ¿Cómo hacer testings de integración?
- Cómo registrar los cuerpos de request y respuesta en Spring WebFlux
- Cómo crear una class de datos implementa Spring Secuirty userDetails específico
- Kotlin coroutines y Spring Framework 5 types reactivos
- Configure Jackson para usar SNAKE_CASE "globalmente" en Spring Boot 2.0.0.M1
- Escriba un problema de interferencia con WebFlux WebTestClient y Kotlin
- La ruta funcional Spring Web Flux (reactiva) no funciona como se esperaba con Kotlin
Creo que esto está relacionado con un cambio de Reactor Core API en 3.1.0.
Mono.and()
ya no es un operador que devuelve Tuples, pero ahora solo le interesan las señales de finalización ( Mono<Void>
). Debe replace ese operador and()
con un operador zip
o zipWith
, como se sugiere en las notas de la versión de Reactor .