Browse Source

Switch to Reactor 3 snapshots and Netty 4.1.3

pull/1114/head
Rossen Stoyanchev 10 years ago
parent
commit
028be2a298
  1. 6
      build.gradle
  2. 16
      spring-core/src/main/java/org/springframework/core/convert/support/ReactorToRxJava1Converter.java
  3. 6
      spring-core/src/main/java/org/springframework/core/io/buffer/support/DataBufferUtils.java
  4. 2
      spring-core/src/test/java/org/springframework/core/codec/ByteBufferDecoderTests.java
  5. 2
      spring-core/src/test/java/org/springframework/core/codec/ByteBufferEncoderTests.java
  6. 2
      spring-core/src/test/java/org/springframework/core/codec/ResourceDecoderTests.java
  7. 2
      spring-core/src/test/java/org/springframework/core/codec/ResourceEncoderTests.java
  8. 2
      spring-core/src/test/java/org/springframework/core/codec/StringDecoderTests.java
  9. 2
      spring-core/src/test/java/org/springframework/core/codec/StringEncoderTests.java
  10. 2
      spring-core/src/test/java/org/springframework/core/io/buffer/support/DataBufferUtilsTests.java
  11. 9
      spring-web-reactive/src/main/java/org/springframework/web/reactive/config/WebReactiveConfiguration.java
  12. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/DispatcherHandlerErrorTests.java
  13. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/ResponseStatusExceptionHandlerTests.java
  14. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/HandlerMethodMappingTests.java
  15. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/InvocableHandlerMethodTests.java
  16. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMappingTests.java
  17. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/CookieValueMethodArgumentResolverTests.java
  18. 9
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/HttpEntityArgumentResolverTests.java
  19. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/MessageConverterArgumentResolverTests.java
  20. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/MessageConverterResultHandlerTests.java
  21. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/PathVariableMethodArgumentResolverTests.java
  22. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestAttributeMethodArgumentResolverTests.java
  23. 13
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestBodyArgumentResolverTests.java
  24. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestHeaderMethodArgumentResolverTests.java
  25. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestParamMethodArgumentResolverTests.java
  26. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/ResponseEntityResultHandlerTests.java
  27. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/SessionAttributeMethodArgumentResolverTests.java
  28. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/SseIntegrationTests.java
  29. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/view/HttpMessageConverterViewTests.java
  30. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/view/ViewResolutionResultHandlerTests.java
  31. 2
      spring-web-reactive/src/test/java/org/springframework/web/reactive/result/view/freemarker/FreeMarkerViewTests.java
  32. 12
      spring-web/src/main/java/org/springframework/http/server/reactive/AbstractRequestBodyPublisher.java
  33. 8
      spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java
  34. 4
      spring-web/src/main/java/org/springframework/http/server/reactive/ResponseBodyWriteResultPublisher.java
  35. 4
      spring-web/src/main/java/org/springframework/http/server/reactive/RxNettyHttpHandlerAdapter.java
  36. 4
      spring-web/src/main/java/org/springframework/http/server/reactive/RxNettyServerHttpRequest.java
  37. 12
      spring-web/src/main/java/org/springframework/http/server/reactive/RxNettyServerHttpResponse.java
  38. 7
      spring-web/src/main/java/org/springframework/web/client/reactive/support/RxJava1ClientWebRequestBuilder.java
  39. 31
      spring-web/src/main/java/org/springframework/web/client/reactive/support/RxJava1ResponseExtractors.java
  40. 2
      spring-web/src/test/java/org/springframework/http/codec/SseEventEncoderTests.java
  41. 2
      spring-web/src/test/java/org/springframework/http/codec/json/JacksonJsonDecoderTests.java
  42. 2
      spring-web/src/test/java/org/springframework/http/codec/json/JacksonJsonEncoderTests.java
  43. 2
      spring-web/src/test/java/org/springframework/http/codec/json/JsonObjectDecoderTests.java
  44. 2
      spring-web/src/test/java/org/springframework/http/codec/xml/Jaxb2DecoderTests.java
  45. 2
      spring-web/src/test/java/org/springframework/http/codec/xml/Jaxb2EncoderTests.java
  46. 2
      spring-web/src/test/java/org/springframework/http/codec/xml/XmlEventDecoderTests.java
  47. 9
      spring-web/src/test/java/org/springframework/http/server/reactive/ChannelSendOperatorTests.java
  48. 2
      spring-web/src/test/java/org/springframework/http/server/reactive/FlushingIntegrationTests.java
  49. 18
      spring-web/src/test/java/org/springframework/http/server/reactive/bootstrap/ReactorHttpServer.java
  50. 2
      spring-web/src/test/java/org/springframework/web/client/reactive/WebClientIntegrationTests.java

6
build.gradle

@ -61,13 +61,13 @@ configure(allprojects) { project ->
ext.junitJupiterVersion = '5.0.0-M1' ext.junitJupiterVersion = '5.0.0-M1'
ext.junitPlatformVersion = '1.0.0-M1' ext.junitPlatformVersion = '1.0.0-M1'
ext.log4jVersion = '2.6.1' ext.log4jVersion = '2.6.1'
ext.nettyVersion = "4.1.1.Final" ext.nettyVersion = "4.1.3.Final"
ext.okhttpVersion = "2.7.5" ext.okhttpVersion = "2.7.5"
ext.okhttp3Version = "3.3.1" ext.okhttp3Version = "3.3.1"
ext.poiVersion = "3.14" ext.poiVersion = "3.14"
ext.reactorVersion = "2.0.8.RELEASE" ext.reactorVersion = "2.0.8.RELEASE"
ext.reactorCoreVersion = '2.5.0.BUILD-SNAPSHOT' ext.reactorCoreVersion = '3.0.0.BUILD-SNAPSHOT'
ext.reactorNettyVersion = '2.5.0.BUILD-SNAPSHOT' ext.reactorNettyVersion = '0.5.0.BUILD-SNAPSHOT'
ext.rxJavaVersion = '1.1.6' ext.rxJavaVersion = '1.1.6'
ext.romeVersion = "1.6.0" ext.romeVersion = "1.6.0"
ext.servletVersion = "3.1.0" ext.servletVersion = "3.1.0"

16
spring-core/src/main/java/org/springframework/core/convert/support/ReactorToRxJava1Converter.java

@ -20,9 +20,7 @@ import java.util.LinkedHashSet;
import java.util.Set; import java.util.Set;
import org.reactivestreams.Publisher; import org.reactivestreams.Publisher;
import reactor.core.converter.RxJava1CompletableConverter; import reactor.adapter.RxJava1Adapter;
import reactor.core.converter.RxJava1ObservableConverter;
import reactor.core.converter.RxJava1SingleConverter;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import rx.Completable; import rx.Completable;
@ -57,22 +55,22 @@ public final class ReactorToRxJava1Converter implements GenericConverter {
return null; return null;
} }
if (Observable.class.isAssignableFrom(sourceType.getType())) { if (Observable.class.isAssignableFrom(sourceType.getType())) {
return RxJava1ObservableConverter.toPublisher((Observable<?>) source); return RxJava1Adapter.observableToFlux((Observable<?>) source);
} }
else if (Observable.class.isAssignableFrom(targetType.getType())) { else if (Observable.class.isAssignableFrom(targetType.getType())) {
return RxJava1ObservableConverter.fromPublisher((Publisher<?>) source); return RxJava1Adapter.publisherToObservable((Publisher<?>) source);
} }
else if (Single.class.isAssignableFrom(sourceType.getType())) { else if (Single.class.isAssignableFrom(sourceType.getType())) {
return RxJava1SingleConverter.toPublisher((Single<?>) source); return RxJava1Adapter.singleToMono((Single<?>) source);
} }
else if (Single.class.isAssignableFrom(targetType.getType())) { else if (Single.class.isAssignableFrom(targetType.getType())) {
return RxJava1SingleConverter.fromPublisher((Publisher<?>) source); return RxJava1Adapter.publisherToSingle((Publisher<?>) source);
} }
else if (Completable.class.isAssignableFrom(sourceType.getType())) { else if (Completable.class.isAssignableFrom(sourceType.getType())) {
return RxJava1CompletableConverter.toPublisher((Completable) source); return RxJava1Adapter.completableToMono((Completable) source);
} }
else if (Completable.class.isAssignableFrom(targetType.getType())) { else if (Completable.class.isAssignableFrom(targetType.getType())) {
return RxJava1CompletableConverter.fromPublisher((Publisher<?>) source); return RxJava1Adapter.publisherToCompletable((Publisher<?>) source);
} }
return null; return null;
} }

6
spring-core/src/main/java/org/springframework/core/io/buffer/support/DataBufferUtils.java

@ -27,7 +27,7 @@ import java.util.function.Consumer;
import org.reactivestreams.Publisher; import org.reactivestreams.Publisher;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.subscriber.SignalEmitter; import reactor.core.publisher.SynchronousSink;
import org.springframework.core.io.buffer.DataBuffer; import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.DataBufferFactory; import org.springframework.core.io.buffer.DataBufferFactory;
@ -149,7 +149,7 @@ public abstract class DataBufferUtils {
} }
private static class ReadableByteChannelGenerator private static class ReadableByteChannelGenerator
implements BiFunction<ReadableByteChannel, SignalEmitter<DataBuffer>, implements BiFunction<ReadableByteChannel, SynchronousSink<DataBuffer>,
ReadableByteChannel> { ReadableByteChannel> {
private final DataBufferFactory dataBufferFactory; private final DataBufferFactory dataBufferFactory;
@ -164,7 +164,7 @@ public abstract class DataBufferUtils {
@Override @Override
public ReadableByteChannel apply(ReadableByteChannel public ReadableByteChannel apply(ReadableByteChannel
channel, SignalEmitter<DataBuffer> sub) { channel, SynchronousSink<DataBuffer> sub) {
try { try {
ByteBuffer byteBuffer = ByteBuffer.allocate(chunkSize); ByteBuffer byteBuffer = ByteBuffer.allocate(chunkSize);
int read; int read;

2
spring-core/src/test/java/org/springframework/core/codec/ByteBufferDecoderTests.java

@ -21,7 +21,7 @@ import java.nio.ByteBuffer;
import org.junit.Test; import org.junit.Test;
import org.reactivestreams.Publisher; import org.reactivestreams.Publisher;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase; import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;

2
spring-core/src/test/java/org/springframework/core/codec/ByteBufferEncoderTests.java

@ -23,7 +23,7 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.reactivestreams.Publisher; import org.reactivestreams.Publisher;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase; import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;

2
spring-core/src/test/java/org/springframework/core/codec/ResourceDecoderTests.java

@ -20,7 +20,7 @@ import java.io.IOException;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.ByteArrayResource;

2
spring-core/src/test/java/org/springframework/core/codec/ResourceEncoderTests.java

@ -21,7 +21,7 @@ import java.nio.charset.StandardCharsets;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.ByteArrayResource;

2
spring-core/src/test/java/org/springframework/core/codec/StringDecoderTests.java

@ -19,7 +19,7 @@ package org.springframework.core.codec;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase; import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;

2
spring-core/src/test/java/org/springframework/core/codec/StringEncoderTests.java

@ -23,7 +23,7 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.junit.runners.Parameterized; import org.junit.runners.Parameterized;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase; import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;

2
spring-core/src/test/java/org/springframework/core/io/buffer/support/DataBufferUtilsTests.java

@ -24,7 +24,7 @@ import java.nio.file.StandardOpenOption;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase; import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;
import org.springframework.core.io.buffer.DataBuffer; import org.springframework.core.io.buffer.DataBuffer;

9
spring-web-reactive/src/main/java/org/springframework/web/reactive/config/WebReactiveConfiguration.java

@ -20,8 +20,6 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import reactor.core.converter.Converters;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.BeanInitializationException; import org.springframework.beans.factory.BeanInitializationException;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
@ -82,8 +80,9 @@ public class WebReactiveConfiguration implements ApplicationContextAware {
ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) &&
ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader); ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader);
private static final boolean jaxb2Present = private static final boolean jaxb2Present = ClassUtils.isPresent("javax.xml.bind.Binder", classLoader);
ClassUtils.isPresent("javax.xml.bind.Binder", classLoader);
private static final boolean rxJava1Present = ClassUtils.isPresent("rx.Observable", classLoader);
private PathMatchConfigurer pathMatchConfigurer; private PathMatchConfigurer pathMatchConfigurer;
@ -289,7 +288,7 @@ public class WebReactiveConfiguration implements ApplicationContextAware {
*/ */
protected void addFormatters(FormatterRegistry registry) { protected void addFormatters(FormatterRegistry registry) {
registry.addConverter(new MonoToCompletableFutureConverter()); registry.addConverter(new MonoToCompletableFutureConverter());
if (Converters.hasRxJava1()) { if (rxJava1Present) {
registry.addConverter(new ReactorToRxJava1Converter()); registry.addConverter(new ReactorToRxJava1Converter());
} }
} }

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/DispatcherHandlerErrorTests.java

@ -24,7 +24,7 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.reactivestreams.Publisher; import org.reactivestreams.Publisher;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/ResponseStatusExceptionHandlerTests.java

@ -21,7 +21,7 @@ import java.time.Duration;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/HandlerMethodMappingTests.java

@ -27,7 +27,7 @@ import java.util.Set;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
import org.springframework.http.server.reactive.MockServerHttpRequest; import org.springframework.http.server.reactive.MockServerHttpRequest;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/InvocableHandlerMethodTests.java

@ -22,7 +22,7 @@ import java.util.Optional;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
import org.springframework.http.server.reactive.MockServerHttpRequest; import org.springframework.http.server.reactive.MockServerHttpRequest;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMappingTests.java

@ -30,7 +30,7 @@ import java.util.function.Consumer;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.core.annotation.AnnotatedElementUtils;
import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.annotation.AnnotationUtils;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/CookieValueMethodArgumentResolverTests.java

@ -22,7 +22,7 @@ import java.net.URI;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.core.MethodParameter; import org.springframework.core.MethodParameter;

9
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/HttpEntityArgumentResolverTests.java

@ -25,11 +25,10 @@ import java.util.concurrent.CompletableFuture;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.converter.RxJava1ObservableConverter; import reactor.adapter.RxJava1Adapter;
import reactor.core.converter.RxJava1SingleConverter;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import rx.Observable; import rx.Observable;
import rx.Single; import rx.Single;
@ -156,7 +155,7 @@ public class HttpEntityArgumentResolverTests {
ResolvableType type = httpEntityType(forClassWithGenerics(Single.class, String.class)); ResolvableType type = httpEntityType(forClassWithGenerics(Single.class, String.class));
HttpEntity<Single<String>> entity = resolveValueWithEmptyBody(type); HttpEntity<Single<String>> entity = resolveValueWithEmptyBody(type);
TestSubscriber.subscribe(RxJava1SingleConverter.toPublisher(entity.getBody())) TestSubscriber.subscribe(RxJava1Adapter.singleToMono(entity.getBody()))
.assertNoValues() .assertNoValues()
.assertError(ServerWebInputException.class); .assertError(ServerWebInputException.class);
} }
@ -166,7 +165,7 @@ public class HttpEntityArgumentResolverTests {
ResolvableType type = httpEntityType(forClassWithGenerics(Observable.class, String.class)); ResolvableType type = httpEntityType(forClassWithGenerics(Observable.class, String.class));
HttpEntity<Observable<String>> entity = resolveValueWithEmptyBody(type); HttpEntity<Observable<String>> entity = resolveValueWithEmptyBody(type);
TestSubscriber.subscribe(RxJava1ObservableConverter.toPublisher(entity.getBody())) TestSubscriber.subscribe(RxJava1Adapter.observableToFlux(entity.getBody()))
.assertNoError() .assertNoError()
.assertComplete() .assertComplete()
.assertNoValues(); .assertNoValues();

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/MessageConverterArgumentResolverTests.java

@ -34,7 +34,7 @@ import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import rx.Observable; import rx.Observable;
import rx.Single; import rx.Single;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/MessageConverterResultHandlerTests.java

@ -33,7 +33,7 @@ import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import rx.Observable; import rx.Observable;
import org.springframework.core.MethodParameter; import org.springframework.core.MethodParameter;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/PathVariableMethodArgumentResolverTests.java

@ -24,7 +24,7 @@ import java.util.Map;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.MethodParameter; import org.springframework.core.MethodParameter;
import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.ConversionService;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestAttributeMethodArgumentResolverTests.java

@ -22,7 +22,7 @@ import java.util.Optional;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.core.DefaultParameterNameDiscoverer; import org.springframework.core.DefaultParameterNameDiscoverer;

13
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestBodyArgumentResolverTests.java

@ -27,11 +27,10 @@ import java.util.function.Predicate;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.converter.RxJava1ObservableConverter; import reactor.adapter.RxJava1Adapter;
import reactor.core.converter.RxJava1SingleConverter;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import rx.Observable; import rx.Observable;
import rx.Single; import rx.Single;
@ -166,12 +165,12 @@ public class RequestBodyArgumentResolverTests {
ResolvableType type = forClassWithGenerics(Single.class, String.class); ResolvableType type = forClassWithGenerics(Single.class, String.class);
Single<String> single = resolveValueWithEmptyBody(type, true); Single<String> single = resolveValueWithEmptyBody(type, true);
TestSubscriber.subscribe(RxJava1SingleConverter.toPublisher(single)) TestSubscriber.subscribe(RxJava1Adapter.singleToMono(single))
.assertNoValues() .assertNoValues()
.assertError(ServerWebInputException.class); .assertError(ServerWebInputException.class);
single = resolveValueWithEmptyBody(type, false); single = resolveValueWithEmptyBody(type, false);
TestSubscriber.subscribe(RxJava1SingleConverter.toPublisher(single)) TestSubscriber.subscribe(RxJava1Adapter.singleToMono(single))
.assertNoValues() .assertNoValues()
.assertError(ServerWebInputException.class); .assertError(ServerWebInputException.class);
} }
@ -181,12 +180,12 @@ public class RequestBodyArgumentResolverTests {
ResolvableType type = forClassWithGenerics(Observable.class, String.class); ResolvableType type = forClassWithGenerics(Observable.class, String.class);
Observable<String> observable = resolveValueWithEmptyBody(type, true); Observable<String> observable = resolveValueWithEmptyBody(type, true);
TestSubscriber.subscribe(RxJava1ObservableConverter.toPublisher(observable)) TestSubscriber.subscribe(RxJava1Adapter.observableToFlux(observable))
.assertNoValues() .assertNoValues()
.assertError(ServerWebInputException.class); .assertError(ServerWebInputException.class);
observable = resolveValueWithEmptyBody(type, false); observable = resolveValueWithEmptyBody(type, false);
TestSubscriber.subscribe(RxJava1ObservableConverter.toPublisher(observable)) TestSubscriber.subscribe(RxJava1Adapter.observableToFlux(observable))
.assertNoValues() .assertNoValues()
.assertComplete(); .assertComplete();
} }

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestHeaderMethodArgumentResolverTests.java

@ -27,7 +27,7 @@ import java.util.Map;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.core.MethodParameter; import org.springframework.core.MethodParameter;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestParamMethodArgumentResolverTests.java

@ -25,7 +25,7 @@ import java.util.Optional;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.LocalVariableTableParameterNameDiscoverer; import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
import org.springframework.core.MethodParameter; import org.springframework.core.MethodParameter;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/ResponseEntityResultHandlerTests.java

@ -26,7 +26,7 @@ import java.util.concurrent.CompletableFuture;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import rx.Single; import rx.Single;
import org.springframework.core.MethodParameter; import org.springframework.core.MethodParameter;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/SessionAttributeMethodArgumentResolverTests.java

@ -22,7 +22,7 @@ import java.util.Optional;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.core.DefaultParameterNameDiscoverer; import org.springframework.core.DefaultParameterNameDiscoverer;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/SseIntegrationTests.java

@ -28,7 +28,7 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/view/HttpMessageConverterViewTests.java

@ -29,7 +29,7 @@ import java.util.Map;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.MethodParameter; import org.springframework.core.MethodParameter;
import org.springframework.core.codec.StringEncoder; import org.springframework.core.codec.StringEncoder;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/view/ViewResolutionResultHandlerTests.java

@ -32,7 +32,7 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import rx.Single; import rx.Single;
import org.springframework.core.MethodParameter; import org.springframework.core.MethodParameter;

2
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/view/freemarker/FreeMarkerViewTests.java

@ -25,7 +25,7 @@ import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.ExpectedException; import org.junit.rules.ExpectedException;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.context.ApplicationContextException; import org.springframework.context.ApplicationContextException;
import org.springframework.context.support.GenericApplicationContext; import org.springframework.context.support.GenericApplicationContext;

12
spring-web/src/main/java/org/springframework/http/server/reactive/AbstractRequestBodyPublisher.java

@ -28,7 +28,7 @@ import org.apache.commons.logging.LogFactory;
import org.reactivestreams.Publisher; import org.reactivestreams.Publisher;
import org.reactivestreams.Subscriber; import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription; import org.reactivestreams.Subscription;
import reactor.core.util.BackpressureUtils; import reactor.core.publisher.Operators;
import org.springframework.core.io.buffer.DataBuffer; import org.springframework.core.io.buffer.DataBuffer;
@ -106,7 +106,7 @@ abstract class AbstractRequestBodyPublisher implements Publisher<DataBuffer> {
while (hasDemand()) { while (hasDemand()) {
DataBuffer dataBuffer = read(); DataBuffer dataBuffer = read();
if (dataBuffer != null) { if (dataBuffer != null) {
BackpressureUtils.getAndSub(this.demand, 1L); Operators.getAndSub(this.demand, 1L);
this.subscriber.onNext(dataBuffer); this.subscriber.onNext(dataBuffer);
} }
else { else {
@ -214,8 +214,8 @@ abstract class AbstractRequestBodyPublisher implements Publisher<DataBuffer> {
NO_DEMAND { NO_DEMAND {
@Override @Override
void request(AbstractRequestBodyPublisher publisher, long n) { void request(AbstractRequestBodyPublisher publisher, long n) {
if (BackpressureUtils.checkRequest(n, publisher.subscriber)) { if (Operators.checkRequest(n, publisher.subscriber)) {
BackpressureUtils.addAndGet(publisher.demand, n); Operators.addAndGet(publisher.demand, n);
if (publisher.changeState(this, DEMAND)) { if (publisher.changeState(this, DEMAND)) {
publisher.checkOnDataAvailable(); publisher.checkOnDataAvailable();
} }
@ -249,8 +249,8 @@ abstract class AbstractRequestBodyPublisher implements Publisher<DataBuffer> {
READING { READING {
@Override @Override
void request(AbstractRequestBodyPublisher publisher, long n) { void request(AbstractRequestBodyPublisher publisher, long n) {
if (BackpressureUtils.checkRequest(n, publisher.subscriber)) { if (Operators.checkRequest(n, publisher.subscriber)) {
BackpressureUtils.addAndGet(publisher.demand, n); Operators.addAndGet(publisher.demand, n);
} }
} }
}, },

8
spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java

@ -21,8 +21,8 @@ import org.reactivestreams.Publisher;
import org.reactivestreams.Subscriber; import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription; import org.reactivestreams.Subscription;
import reactor.core.publisher.MonoSource; import reactor.core.publisher.MonoSource;
import reactor.core.subscriber.SubscriberBarrier; import reactor.core.publisher.OperatorAdapter;
import reactor.core.util.EmptySubscription; import reactor.core.publisher.Operators;
import org.springframework.util.Assert; import org.springframework.util.Assert;
@ -54,7 +54,7 @@ public class ChannelSendOperator<T> extends MonoSource<T, Void> {
source.subscribe(new WriteWithBarrier(s)); source.subscribe(new WriteWithBarrier(s));
} }
private class WriteWithBarrier extends SubscriberBarrier<T, Void> implements Publisher<T> { private class WriteWithBarrier extends OperatorAdapter<T, Void> implements Publisher<T> {
/** /**
* We've at at least one emission, we've called the write function, the write * We've at at least one emission, we've called the write function, the write
@ -161,7 +161,7 @@ public class ChannelSendOperator<T> extends MonoSource<T, Void> {
this.writeSubscriber = writeSubscriber; this.writeSubscriber = writeSubscriber;
if (this.error != null || this.completed) { if (this.error != null || this.completed) {
this.writeSubscriber.onSubscribe(EmptySubscription.INSTANCE); this.writeSubscriber.onSubscribe(Operators.emptySubscription());
emitCachedSignals(); emitCachedSignals();
} }
else { else {

4
spring-web/src/main/java/org/springframework/http/server/reactive/ResponseBodyWriteResultPublisher.java

@ -24,7 +24,7 @@ import org.apache.commons.logging.LogFactory;
import org.reactivestreams.Publisher; import org.reactivestreams.Publisher;
import org.reactivestreams.Subscriber; import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription; import org.reactivestreams.Subscription;
import reactor.core.util.BackpressureUtils; import reactor.core.publisher.Operators;
/** /**
* Publisher returned from {@link ServerHttpResponse#writeWith(Publisher)}. * Publisher returned from {@link ServerHttpResponse#writeWith(Publisher)}.
@ -145,7 +145,7 @@ class ResponseBodyWriteResultPublisher implements Publisher<Void> {
SUBSCRIBED { SUBSCRIBED {
@Override @Override
void request(ResponseBodyWriteResultPublisher publisher, long n) { void request(ResponseBodyWriteResultPublisher publisher, long n) {
BackpressureUtils.checkRequest(n, publisher.subscriber); Operators.checkRequest(n, publisher.subscriber);
} }
@Override @Override

4
spring-web/src/main/java/org/springframework/http/server/reactive/RxNettyHttpHandlerAdapter.java

@ -21,7 +21,7 @@ import io.reactivex.netty.protocol.http.server.HttpServerRequest;
import io.reactivex.netty.protocol.http.server.HttpServerResponse; import io.reactivex.netty.protocol.http.server.HttpServerResponse;
import io.reactivex.netty.protocol.http.server.RequestHandler; import io.reactivex.netty.protocol.http.server.RequestHandler;
import org.reactivestreams.Publisher; import org.reactivestreams.Publisher;
import reactor.core.converter.RxJava1ObservableConverter; import reactor.adapter.RxJava1Adapter;
import rx.Observable; import rx.Observable;
import org.springframework.core.io.buffer.NettyDataBufferFactory; import org.springframework.core.io.buffer.NettyDataBufferFactory;
@ -50,7 +50,7 @@ public class RxNettyHttpHandlerAdapter implements RequestHandler<ByteBuf, ByteBu
RxNettyServerHttpResponse adaptedResponse = RxNettyServerHttpResponse adaptedResponse =
new RxNettyServerHttpResponse(response, dataBufferFactory); new RxNettyServerHttpResponse(response, dataBufferFactory);
Publisher<Void> result = this.httpHandler.handle(adaptedRequest, adaptedResponse); Publisher<Void> result = this.httpHandler.handle(adaptedRequest, adaptedResponse);
return RxJava1ObservableConverter.fromPublisher(result); return RxJava1Adapter.publisherToObservable(result);
} }
} }

4
spring-web/src/main/java/org/springframework/http/server/reactive/RxNettyServerHttpRequest.java

@ -22,7 +22,7 @@ import java.net.URISyntaxException;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.handler.codec.http.cookie.Cookie; import io.netty.handler.codec.http.cookie.Cookie;
import io.reactivex.netty.protocol.http.server.HttpServerRequest; import io.reactivex.netty.protocol.http.server.HttpServerRequest;
import reactor.core.converter.RxJava1ObservableConverter; import reactor.adapter.RxJava1Adapter;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import rx.Observable; import rx.Observable;
@ -95,7 +95,7 @@ public class RxNettyServerHttpRequest extends AbstractServerHttpRequest {
@Override @Override
public Flux<DataBuffer> getBody() { public Flux<DataBuffer> getBody() {
Observable<DataBuffer> content = this.request.getContent().map(dataBufferFactory::wrap); Observable<DataBuffer> content = this.request.getContent().map(dataBufferFactory::wrap);
return RxJava1ObservableConverter.toPublisher(content); return RxJava1Adapter.observableToFlux(content);
} }
} }

12
spring-web/src/main/java/org/springframework/http/server/reactive/RxNettyServerHttpResponse.java

@ -23,8 +23,9 @@ import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.handler.codec.http.cookie.Cookie; import io.netty.handler.codec.http.cookie.Cookie;
import io.netty.handler.codec.http.cookie.DefaultCookie; import io.netty.handler.codec.http.cookie.DefaultCookie;
import io.reactivex.netty.protocol.http.server.HttpServerResponse; import io.reactivex.netty.protocol.http.server.HttpServerResponse;
import io.reactivex.netty.protocol.http.server.ResponseContentWriter;
import org.reactivestreams.Publisher; import org.reactivestreams.Publisher;
import reactor.core.converter.RxJava1ObservableConverter; import reactor.adapter.RxJava1Adapter;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import rx.Observable; import rx.Observable;
@ -72,12 +73,15 @@ public class RxNettyServerHttpResponse extends AbstractServerHttpResponse {
@Override @Override
protected Mono<Void> writeWithInternal(Publisher<DataBuffer> body) { protected Mono<Void> writeWithInternal(Publisher<DataBuffer> body) {
Observable<ByteBuf> content = RxJava1ObservableConverter.fromPublisher(body).map(this::toByteBuf); Observable<ByteBuf> content = RxJava1Adapter.publisherToObservable(body).map(this::toByteBuf);
return RxJava1ObservableConverter.toPublisher(this.response.write(content, bb -> bb instanceof FlushingByteBuf)).then(); ResponseContentWriter<ByteBuf> writer = this.response.write(content, bb -> bb instanceof FlushingByteBuf);
return RxJava1Adapter.observableToFlux(writer).then();
} }
private ByteBuf toByteBuf(DataBuffer buffer) { private ByteBuf toByteBuf(DataBuffer buffer) {
ByteBuf byteBuf = (buffer instanceof NettyDataBuffer ? ((NettyDataBuffer) buffer).getNativeBuffer() : Unpooled.wrappedBuffer(buffer.asByteBuffer())); ByteBuf byteBuf = (buffer instanceof NettyDataBuffer ?
((NettyDataBuffer) buffer).getNativeBuffer() :
Unpooled.wrappedBuffer(buffer.asByteBuffer()));
return (buffer instanceof FlushingDataBuffer ? new FlushingByteBuf(byteBuf) : byteBuf); return (buffer instanceof FlushingDataBuffer ? new FlushingByteBuf(byteBuf) : byteBuf);
} }

7
spring-web/src/main/java/org/springframework/web/client/reactive/support/RxJava1ClientWebRequestBuilder.java

@ -18,8 +18,7 @@ package org.springframework.web.client.reactive.support;
import java.net.URI; import java.net.URI;
import reactor.core.converter.RxJava1ObservableConverter; import reactor.adapter.RxJava1Adapter;
import reactor.core.converter.RxJava1SingleConverter;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import rx.Observable; import rx.Observable;
import rx.Single; import rx.Single;
@ -149,7 +148,7 @@ public class RxJava1ClientWebRequestBuilder implements ClientWebRequestBuilder {
* as type information for the element published by this reactive stream * as type information for the element published by this reactive stream
*/ */
public RxJava1ClientWebRequestBuilder body(Single<?> content, ResolvableType elementType) { public RxJava1ClientWebRequestBuilder body(Single<?> content, ResolvableType elementType) {
this.delegate.body(RxJava1SingleConverter.toPublisher(content), elementType); this.delegate.body(RxJava1Adapter.singleToMono(content), elementType);
return this; return this;
} }
@ -158,7 +157,7 @@ public class RxJava1ClientWebRequestBuilder implements ClientWebRequestBuilder {
* as type information for the elements published by this reactive stream * as type information for the elements published by this reactive stream
*/ */
public RxJava1ClientWebRequestBuilder body(Observable<?> content, ResolvableType elementType) { public RxJava1ClientWebRequestBuilder body(Observable<?> content, ResolvableType elementType) {
this.delegate.body(RxJava1ObservableConverter.toPublisher(content), elementType); this.delegate.body(RxJava1Adapter.observableToFlux(content), elementType);
return this; return this;
} }

31
spring-web/src/main/java/org/springframework/web/client/reactive/support/RxJava1ResponseExtractors.java

@ -19,6 +19,12 @@ package org.springframework.web.client.reactive.support;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import reactor.adapter.RxJava1Adapter;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import rx.Observable;
import rx.Single;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
@ -27,13 +33,6 @@ import org.springframework.http.client.reactive.ClientHttpResponse;
import org.springframework.http.converter.reactive.HttpMessageConverter; import org.springframework.http.converter.reactive.HttpMessageConverter;
import org.springframework.web.client.reactive.ResponseExtractor; import org.springframework.web.client.reactive.ResponseExtractor;
import reactor.core.converter.RxJava1ObservableConverter;
import reactor.core.converter.RxJava1SingleConverter;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import rx.Observable;
import rx.Single;
/** /**
* Static factory methods for {@link ResponseExtractor} * Static factory methods for {@link ResponseExtractor}
* based on the {@link Observable} and {@link Single} APIs. * based on the {@link Observable} and {@link Single} APIs.
@ -50,8 +49,8 @@ public class RxJava1ResponseExtractors {
public static <T> ResponseExtractor<Single<T>> body(Class<T> sourceClass) { public static <T> ResponseExtractor<Single<T>> body(Class<T> sourceClass) {
ResolvableType resolvableType = ResolvableType.forClass(sourceClass); ResolvableType resolvableType = ResolvableType.forClass(sourceClass);
return (clientResponse, messageConverters) -> (Single<T>) RxJava1SingleConverter return (clientResponse, messageConverters) -> (Single<T>) RxJava1Adapter
.fromPublisher(clientResponse .publisherToSingle(clientResponse
.flatMap(resp -> decodeResponseBody(resp, resolvableType, messageConverters)).next()); .flatMap(resp -> decodeResponseBody(resp, resolvableType, messageConverters)).next());
} }
@ -61,8 +60,8 @@ public class RxJava1ResponseExtractors {
public static <T> ResponseExtractor<Observable<T>> bodyStream(Class<T> sourceClass) { public static <T> ResponseExtractor<Observable<T>> bodyStream(Class<T> sourceClass) {
ResolvableType resolvableType = ResolvableType.forClass(sourceClass); ResolvableType resolvableType = ResolvableType.forClass(sourceClass);
return (clientResponse, messageConverters) -> RxJava1ObservableConverter return (clientResponse, messageConverters) -> RxJava1Adapter
.fromPublisher(clientResponse .publisherToObservable(clientResponse
.flatMap(resp -> decodeResponseBody(resp, resolvableType, messageConverters))); .flatMap(resp -> decodeResponseBody(resp, resolvableType, messageConverters)));
} }
@ -75,7 +74,7 @@ public class RxJava1ResponseExtractors {
ResolvableType resolvableType = ResolvableType.forClass(sourceClass); ResolvableType resolvableType = ResolvableType.forClass(sourceClass);
return (clientResponse, messageConverters) -> return (clientResponse, messageConverters) ->
RxJava1SingleConverter.fromPublisher(clientResponse RxJava1Adapter.publisherToSingle(clientResponse
.then(response -> .then(response ->
Mono.when( Mono.when(
decodeResponseBody(response, resolvableType, messageConverters).next(), decodeResponseBody(response, resolvableType, messageConverters).next(),
@ -91,9 +90,9 @@ public class RxJava1ResponseExtractors {
*/ */
public static <T> ResponseExtractor<Single<ResponseEntity<Observable<T>>>> responseStream(Class<T> sourceClass) { public static <T> ResponseExtractor<Single<ResponseEntity<Observable<T>>>> responseStream(Class<T> sourceClass) {
ResolvableType resolvableType = ResolvableType.forClass(sourceClass); ResolvableType resolvableType = ResolvableType.forClass(sourceClass);
return (clientResponse, messageConverters) -> RxJava1SingleConverter.fromPublisher( return (clientResponse, messageConverters) -> RxJava1Adapter.publisherToSingle(
clientResponse.map(response -> new ResponseEntity<>( clientResponse.map(response -> new ResponseEntity<>(
RxJava1ObservableConverter.fromPublisher( RxJava1Adapter.publisherToObservable(
RxJava1ResponseExtractors.<T> decodeResponseBody(response, resolvableType, messageConverters)), RxJava1ResponseExtractors.<T> decodeResponseBody(response, resolvableType, messageConverters)),
response.getHeaders(), response.getHeaders(),
response.getStatusCode()))); response.getStatusCode())));
@ -103,8 +102,8 @@ public class RxJava1ResponseExtractors {
* Extract the response headers as an {@code HttpHeaders} instance. * Extract the response headers as an {@code HttpHeaders} instance.
*/ */
public static ResponseExtractor<Single<HttpHeaders>> headers() { public static ResponseExtractor<Single<HttpHeaders>> headers() {
return (clientResponse, messageConverters) -> RxJava1SingleConverter return (clientResponse, messageConverters) -> RxJava1Adapter
.fromPublisher(clientResponse.map(resp -> resp.getHeaders())); .publisherToSingle(clientResponse.map(resp -> resp.getHeaders()));
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")

2
spring-web/src/test/java/org/springframework/http/codec/SseEventEncoderTests.java

@ -22,7 +22,7 @@ import static org.junit.Assert.*;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase; import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;

2
spring-web/src/test/java/org/springframework/http/codec/json/JacksonJsonDecoderTests.java

@ -23,7 +23,7 @@ import java.util.List;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase; import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;

2
spring-web/src/test/java/org/springframework/http/codec/json/JacksonJsonEncoderTests.java

@ -21,7 +21,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase; import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;

2
spring-web/src/test/java/org/springframework/http/codec/json/JsonObjectDecoderTests.java

@ -20,7 +20,7 @@ import java.nio.charset.StandardCharsets;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase; import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;
import org.springframework.core.io.buffer.DataBuffer; import org.springframework.core.io.buffer.DataBuffer;

2
spring-web/src/test/java/org/springframework/http/codec/xml/Jaxb2DecoderTests.java

@ -22,7 +22,7 @@ import javax.xml.stream.events.XMLEvent;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase; import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;

2
spring-web/src/test/java/org/springframework/http/codec/xml/Jaxb2EncoderTests.java

@ -23,7 +23,7 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase; import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;

2
spring-web/src/test/java/org/springframework/http/codec/xml/XmlEventDecoderTests.java

@ -20,7 +20,7 @@ import javax.xml.stream.events.XMLEvent;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase; import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;

9
spring-web/src/test/java/org/springframework/http/server/reactive/ChannelSendOperatorTests.java

@ -29,10 +29,13 @@ import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription; import org.reactivestreams.Subscription;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.publisher.OperatorAdapter;
import reactor.core.publisher.Signal; import reactor.core.publisher.Signal;
import reactor.core.subscriber.SubscriberBarrier;
import static org.junit.Assert.*; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
/** /**
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
@ -145,7 +148,7 @@ public class ChannelSendOperatorTests {
}; };
} }
private class WriteSubscriber extends SubscriberBarrier<String, Void> { private class WriteSubscriber extends OperatorAdapter<String, Void> {
public WriteSubscriber(Subscriber<? super Void> subscriber) { public WriteSubscriber(Subscriber<? super Void> subscriber) {
super(subscriber); super(subscriber);

2
spring-web/src/test/java/org/springframework/http/server/reactive/FlushingIntegrationTests.java

@ -21,7 +21,7 @@ import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.core.io.buffer.DataBuffer; import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.FlushingDataBuffer; import org.springframework.core.io.buffer.FlushingDataBuffer;

18
spring-web/src/test/java/org/springframework/http/server/reactive/bootstrap/ReactorHttpServer.java

@ -16,8 +16,7 @@
package org.springframework.http.server.reactive.bootstrap; package org.springframework.http.server.reactive.bootstrap;
import reactor.core.flow.Loopback; import reactor.core.Loopback;
import reactor.core.state.Completable;
import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter;
import org.springframework.util.Assert; import org.springframework.util.Assert;
@ -25,8 +24,7 @@ import org.springframework.util.Assert;
/** /**
* @author Stephane Maldini * @author Stephane Maldini
*/ */
public class ReactorHttpServer extends HttpServerSupport public class ReactorHttpServer extends HttpServerSupport implements HttpServer, Loopback {
implements HttpServer, Loopback, Completable {
private ReactorHttpHandlerAdapter reactorHandler; private ReactorHttpHandlerAdapter reactorHandler;
@ -34,6 +32,7 @@ public class ReactorHttpServer extends HttpServerSupport
private boolean running; private boolean running;
@Override @Override
public void afterPropertiesSet() throws Exception { public void afterPropertiesSet() throws Exception {
@ -42,6 +41,7 @@ public class ReactorHttpServer extends HttpServerSupport
this.reactorServer = reactor.io.netty.http.HttpServer.create(getHost(), getPort()); this.reactorServer = reactor.io.netty.http.HttpServer.create(getHost(), getPort());
} }
@Override @Override
public boolean isRunning() { public boolean isRunning() {
return this.running; return this.running;
@ -57,16 +57,6 @@ public class ReactorHttpServer extends HttpServerSupport
return reactorServer; return reactorServer;
} }
@Override
public boolean isStarted() {
return running;
}
@Override
public boolean isTerminated() {
return !running;
}
@Override @Override
public void start() { public void start() {
if (!this.running) { if (!this.running) {

2
spring-web/src/test/java/org/springframework/web/client/reactive/WebClientIntegrationTests.java

@ -33,7 +33,7 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.test.TestSubscriber; import reactor.test.TestSubscriber;
import org.springframework.http.codec.Pojo; import org.springframework.http.codec.Pojo;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;

Loading…
Cancel
Save