Replace remaining use of block operator
This commit is contained in:
@@ -20,9 +20,9 @@ import java.net.URI;
|
|||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
import reactor.test.StepVerifier;
|
||||||
|
|
||||||
import org.springframework.core.io.ClassPathResource;
|
import org.springframework.core.io.ClassPathResource;
|
||||||
import org.springframework.core.io.buffer.DataBuffer;
|
|
||||||
import org.springframework.core.io.buffer.DataBufferUtils;
|
import org.springframework.core.io.buffer.DataBufferUtils;
|
||||||
import org.springframework.http.HttpEntity;
|
import org.springframework.http.HttpEntity;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
@@ -103,12 +103,15 @@ public class MultipartIntegrationTests extends AbstractHttpHandlerIntegrationTes
|
|||||||
assertEquals("fooPart", part.name());
|
assertEquals("fooPart", part.name());
|
||||||
assertTrue(part instanceof FilePart);
|
assertTrue(part instanceof FilePart);
|
||||||
assertEquals("foo.txt", ((FilePart) part).filename());
|
assertEquals("foo.txt", ((FilePart) part).filename());
|
||||||
DataBufferUtils.join(part.content()).subscribe(buffer -> {
|
|
||||||
assertEquals(12, buffer.readableByteCount());
|
StepVerifier.create(DataBufferUtils.join(part.content()))
|
||||||
byte[] byteContent = new byte[12];
|
.consumeNextWith(buffer -> {
|
||||||
buffer.read(byteContent);
|
assertEquals(12, buffer.readableByteCount());
|
||||||
assertEquals("Lorem Ipsum.", new String(byteContent));
|
byte[] byteContent = new byte[12];
|
||||||
});
|
buffer.read(byteContent);
|
||||||
|
assertEquals("Lorem Ipsum.", new String(byteContent));
|
||||||
|
})
|
||||||
|
.verifyComplete();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertBarPart(Part part) {
|
private void assertBarPart(Part part) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2017 the original author or authors.
|
* Copyright 2002-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -21,6 +21,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import reactor.core.publisher.MonoProcessor;
|
||||||
|
|
||||||
import org.springframework.core.DefaultParameterNameDiscoverer;
|
import org.springframework.core.DefaultParameterNameDiscoverer;
|
||||||
import org.springframework.core.ParameterNameDiscoverer;
|
import org.springframework.core.ParameterNameDiscoverer;
|
||||||
import org.springframework.lang.Nullable;
|
import org.springframework.lang.Nullable;
|
||||||
@@ -98,8 +100,21 @@ public class SyncInvocableHandlerMethod extends HandlerMethod {
|
|||||||
public HandlerResult invokeForHandlerResult(ServerWebExchange exchange,
|
public HandlerResult invokeForHandlerResult(ServerWebExchange exchange,
|
||||||
BindingContext bindingContext, Object... providedArgs) {
|
BindingContext bindingContext, Object... providedArgs) {
|
||||||
|
|
||||||
// This will not block with only sync resolvers allowed
|
MonoProcessor<HandlerResult> processor = MonoProcessor.create();
|
||||||
return this.delegate.invoke(exchange, bindingContext, providedArgs).block();
|
this.delegate.invoke(exchange, bindingContext, providedArgs).subscribeWith(processor);
|
||||||
|
|
||||||
|
if (processor.isTerminated()) {
|
||||||
|
Throwable error = processor.getError();
|
||||||
|
if (error != null) {
|
||||||
|
throw (RuntimeException) error;
|
||||||
|
}
|
||||||
|
return processor.peek();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Should never happen...
|
||||||
|
throw new IllegalStateException(
|
||||||
|
"SyncInvocableHandlerMethod should have completed synchronously.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2017 the original author or authors.
|
* Copyright 2002-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -52,7 +52,7 @@ import org.springframework.web.reactive.function.client.ClientResponse;
|
|||||||
import org.springframework.web.reactive.function.client.WebClient;
|
import org.springframework.web.reactive.function.client.WebClient;
|
||||||
import org.springframework.web.server.adapter.WebHttpHandlerBuilder;
|
import org.springframework.web.server.adapter.WebHttpHandlerBuilder;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
public class MultipartIntegrationTests extends AbstractHttpHandlerIntegrationTests {
|
public class MultipartIntegrationTests extends AbstractHttpHandlerIntegrationTests {
|
||||||
|
|
||||||
@@ -170,10 +170,19 @@ public class MultipartIntegrationTests extends AbstractHttpHandlerIntegrationTes
|
|||||||
|
|
||||||
assertEquals("fieldValue", fieldPart.value());
|
assertEquals("fieldValue", fieldPart.value());
|
||||||
assertEquals("fileParts:foo.txt", partDescription(fileParts));
|
assertEquals("fileParts:foo.txt", partDescription(fileParts));
|
||||||
assertEquals("fileParts:foo.txt", partDescription(filePartsMono.block()));
|
|
||||||
assertEquals("[fileParts:foo.txt,fileParts:logo.png]", partFluxDescription(filePartsFlux).block());
|
|
||||||
assertEquals("Jason", person.getName());
|
assertEquals("Jason", person.getName());
|
||||||
assertEquals("Jason", personMono.block().getName());
|
|
||||||
|
StepVerifier.create(partFluxDescription(filePartsFlux))
|
||||||
|
.consumeNextWith(content -> assertEquals("[fileParts:foo.txt,fileParts:logo.png]", content))
|
||||||
|
.verifyComplete();
|
||||||
|
|
||||||
|
StepVerifier.create(filePartsMono)
|
||||||
|
.consumeNextWith(filePart -> assertEquals("fileParts:foo.txt", partDescription(filePart)))
|
||||||
|
.verifyComplete();
|
||||||
|
|
||||||
|
StepVerifier.create(personMono)
|
||||||
|
.consumeNextWith(p -> assertEquals("Jason", p.getName()))
|
||||||
|
.verifyComplete();
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/requestBodyMap")
|
@PostMapping("/requestBodyMap")
|
||||||
|
|||||||
Reference in New Issue
Block a user