|
1 | 1 | /* |
2 | | - * Copyright 2002-2020 the original author or authors. |
| 2 | + * Copyright 2002-2021 the original author or authors. |
3 | 3 | * |
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | 5 | * you may not use this file except in compliance with the License. |
|
19 | 19 | import java.time.Duration; |
20 | 20 | import java.util.concurrent.atomic.AtomicInteger; |
21 | 21 |
|
22 | | -import io.rsocket.Payload; |
23 | 22 | import io.rsocket.RSocket; |
24 | 23 | import io.rsocket.SocketAcceptor; |
25 | 24 | import io.rsocket.core.RSocketServer; |
|
43 | 42 | import org.springframework.messaging.handler.annotation.Header; |
44 | 43 | import org.springframework.messaging.handler.annotation.MessageExceptionHandler; |
45 | 44 | import org.springframework.messaging.handler.annotation.MessageMapping; |
| 45 | +import org.springframework.messaging.handler.annotation.Payload; |
46 | 46 | import org.springframework.messaging.rsocket.annotation.ConnectMapping; |
47 | 47 | import org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler; |
48 | 48 | import org.springframework.stereotype.Controller; |
@@ -164,6 +164,12 @@ public void echoChannel() { |
164 | 164 | .verify(Duration.ofSeconds(5)); |
165 | 165 | } |
166 | 166 |
|
| 167 | + @Test // gh-26344 |
| 168 | + public void echoChannelWithEmptyInput() { |
| 169 | + Flux<String> result = requester.route("echo-channel-empty").data(Flux.empty()).retrieveFlux(String.class); |
| 170 | + StepVerifier.create(result).verifyComplete(); |
| 171 | + } |
| 172 | + |
167 | 173 | @Test |
168 | 174 | public void metadataPush() { |
169 | 175 | Flux.just("bar", "baz") |
@@ -254,6 +260,11 @@ Flux<String> echoChannel(Flux<String> payloads) { |
254 | 260 | return payloads.delayElements(Duration.ofMillis(10)).map(payload -> payload + " async"); |
255 | 261 | } |
256 | 262 |
|
| 263 | + @MessageMapping("echo-channel-empty") |
| 264 | + Flux<String> echoChannelEmpty(@Payload(required = false) Flux<String> payloads) { |
| 265 | + return payloads.map(payload -> payload + " echoed"); |
| 266 | + } |
| 267 | + |
257 | 268 | @MessageMapping("thrown-exception") |
258 | 269 | Mono<String> handleAndThrow(String payload) { |
259 | 270 | throw new IllegalArgumentException("Invalid input error"); |
@@ -338,29 +349,29 @@ public RSocket apply(RSocket rsocket) { |
338 | 349 | } |
339 | 350 |
|
340 | 351 | @Override |
341 | | - public Mono<Void> fireAndForget(Payload payload) { |
| 352 | + public Mono<Void> fireAndForget(io.rsocket.Payload payload) { |
342 | 353 | return this.delegate.fireAndForget(payload) |
343 | 354 | .doOnSuccess(aVoid -> this.fireAndForgetCount.incrementAndGet()); |
344 | 355 | } |
345 | 356 |
|
346 | 357 | @Override |
347 | | - public Mono<Void> metadataPush(Payload payload) { |
| 358 | + public Mono<Void> metadataPush(io.rsocket.Payload payload) { |
348 | 359 | return this.delegate.metadataPush(payload) |
349 | 360 | .doOnSuccess(aVoid -> this.metadataPushCount.incrementAndGet()); |
350 | 361 | } |
351 | 362 |
|
352 | 363 | @Override |
353 | | - public Mono<Payload> requestResponse(Payload payload) { |
| 364 | + public Mono<io.rsocket.Payload> requestResponse(io.rsocket.Payload payload) { |
354 | 365 | return this.delegate.requestResponse(payload); |
355 | 366 | } |
356 | 367 |
|
357 | 368 | @Override |
358 | | - public Flux<Payload> requestStream(Payload payload) { |
| 369 | + public Flux<io.rsocket.Payload> requestStream(io.rsocket.Payload payload) { |
359 | 370 | return this.delegate.requestStream(payload); |
360 | 371 | } |
361 | 372 |
|
362 | 373 | @Override |
363 | | - public Flux<Payload> requestChannel(Publisher<Payload> payloads) { |
| 374 | + public Flux<io.rsocket.Payload> requestChannel(Publisher<io.rsocket.Payload> payloads) { |
364 | 375 | return this.delegate.requestChannel(payloads); |
365 | 376 | } |
366 | 377 | } |
|
0 commit comments