From 4a3c0bc3b615df84afd7deb18bc102f5d363076e Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Sun, 22 Nov 2015 15:02:18 -0500 Subject: [PATCH] Remove top-level org.springfamework.reactive package reactive.codec -> core.codec reactive.io -> util These may very well not be the final locations. For now they simply express that there are classes that belong somewhere in core, i.e. they are lower level dependencies than web. --- .../codec/CodecException.java | 2 +- .../codec/decoder => core/codec}/Decoder.java | 4 +- .../codec/encoder => core/codec}/Encoder.java | 3 +- .../codec/support}/AbstractDecoder.java | 3 +- .../codec/support}/AbstractEncoder.java | 3 +- .../codec/support}/ByteBufferDecoder.java | 2 +- .../codec/support}/ByteBufferEncoder.java | 2 +- .../codec/support}/JacksonJsonDecoder.java | 8 +-- .../codec/support}/JacksonJsonEncoder.java | 8 +-- .../codec/support}/Jaxb2Decoder.java | 11 ++- .../codec/support}/Jaxb2Encoder.java | 11 ++- .../codec/support}/JsonObjectDecoder.java | 3 +- .../codec/support}/JsonObjectEncoder.java | 3 +- .../codec/support}/StringDecoder.java | 3 +- .../codec/support}/StringEncoder.java | 3 +- .../servlet31/RequestBodyPublisher.java | 52 +++++++++++++- .../reactive/util/DemandCounter.java | 70 ------------------- .../io => util}/BufferOutputStream.java | 2 +- .../io => util}/ByteBufferInputStream.java | 2 +- .../ByteBufferPublisherInputStream.java | 4 +- .../RequestBodyArgumentResolver.java | 2 +- .../RequestMappingHandlerAdapter.java | 10 +-- .../annotation/ResponseBodyResultHandler.java | 2 +- .../http/server/XmlHandler.java | 4 +- .../codec/decoder/ByteBufferDecoderTests.java | 1 + .../decoder/JacksonJsonDecoderTests.java | 1 + .../codec/decoder/Jaxb2DecoderTests.java | 1 + .../codec/decoder/JsonObjectDecoderTests.java | 2 + .../codec/decoder/StringDecoderTests.java | 1 + .../codec/encoder/ByteBufferEncoderTests.java | 1 + .../encoder/JacksonJsonEncoderTests.java | 1 + .../codec/encoder/Jaxb2EncoderTests.java | 1 + .../codec/encoder/JsonObjectEncoderTests.java | 2 + .../codec/encoder/StringEncoderTests.java | 2 +- .../RequestMappingIntegrationTests.java | 8 +-- .../ResponseBodyResultHandlerTests.java | 3 +- 36 files changed, 112 insertions(+), 129 deletions(-) rename spring-web-reactive/src/main/java/org/springframework/{reactive => core}/codec/CodecException.java (95%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/codec/decoder => core/codec}/Decoder.java (94%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/codec/encoder => core/codec}/Encoder.java (94%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/codec/decoder => core/codec/support}/AbstractDecoder.java (93%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/codec/encoder => core/codec/support}/AbstractEncoder.java (93%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/codec/decoder => core/codec/support}/ByteBufferDecoder.java (96%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/codec/encoder => core/codec/support}/ByteBufferEncoder.java (96%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/codec/decoder => core/codec/support}/JacksonJsonDecoder.java (90%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/codec/encoder => core/codec/support}/JacksonJsonEncoder.java (90%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/codec/decoder => core/codec/support}/Jaxb2Decoder.java (92%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/codec/encoder => core/codec/support}/Jaxb2Encoder.java (90%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/codec/decoder => core/codec/support}/JsonObjectDecoder.java (98%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/codec/encoder => core/codec/support}/JsonObjectEncoder.java (96%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/codec/decoder => core/codec/support}/StringDecoder.java (94%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/codec/encoder => core/codec/support}/StringEncoder.java (94%) delete mode 100644 spring-web-reactive/src/main/java/org/springframework/reactive/util/DemandCounter.java rename spring-web-reactive/src/main/java/org/springframework/{reactive/io => util}/BufferOutputStream.java (96%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/io => util}/ByteBufferInputStream.java (97%) rename spring-web-reactive/src/main/java/org/springframework/{reactive/io => util}/ByteBufferPublisherInputStream.java (97%) diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/CodecException.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/CodecException.java similarity index 95% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/CodecException.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/CodecException.java index 3ed102ea04f..51718cddd02 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/CodecException.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/CodecException.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.codec; +package org.springframework.core.codec; import org.springframework.core.NestedRuntimeException; diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/Decoder.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/Decoder.java similarity index 94% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/Decoder.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/Decoder.java index dbb43b5227d..cd7e399044c 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/Decoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/Decoder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.codec.decoder; +package org.springframework.core.codec; import java.nio.ByteBuffer; import java.util.List; @@ -22,7 +22,7 @@ import java.util.List; import org.reactivestreams.Publisher; import org.springframework.core.ResolvableType; -import org.springframework.reactive.codec.encoder.Encoder; +import org.springframework.core.codec.Encoder; import org.springframework.util.MimeType; /** diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/Encoder.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/Encoder.java similarity index 94% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/Encoder.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/Encoder.java index 22240f93e5c..72e9a38f5de 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/Encoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/Encoder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.codec.encoder; +package org.springframework.core.codec; import java.nio.ByteBuffer; import java.util.List; @@ -22,7 +22,6 @@ import java.util.List; import org.reactivestreams.Publisher; import org.springframework.core.ResolvableType; -import org.springframework.reactive.codec.decoder.Decoder; import org.springframework.util.MimeType; /** diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/AbstractDecoder.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/AbstractDecoder.java similarity index 93% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/AbstractDecoder.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/support/AbstractDecoder.java index aa17856078f..9f4b8b5705e 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/AbstractDecoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/AbstractDecoder.java @@ -14,13 +14,14 @@ * limitations under the License. */ -package org.springframework.reactive.codec.decoder; +package org.springframework.core.codec.support; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.springframework.core.ResolvableType; +import org.springframework.core.codec.Decoder; import org.springframework.util.MimeType; /** diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/AbstractEncoder.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/AbstractEncoder.java similarity index 93% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/AbstractEncoder.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/support/AbstractEncoder.java index 08f504423b6..80100421581 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/AbstractEncoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/AbstractEncoder.java @@ -14,13 +14,14 @@ * limitations under the License. */ -package org.springframework.reactive.codec.encoder; +package org.springframework.core.codec.support; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.springframework.core.ResolvableType; +import org.springframework.core.codec.Encoder; import org.springframework.util.MimeType; /** diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/ByteBufferDecoder.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/ByteBufferDecoder.java similarity index 96% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/ByteBufferDecoder.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/support/ByteBufferDecoder.java index fd1ddaad9f1..54b78143eec 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/ByteBufferDecoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/ByteBufferDecoder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.codec.decoder; +package org.springframework.core.codec.support; import java.nio.ByteBuffer; diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/ByteBufferEncoder.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/ByteBufferEncoder.java similarity index 96% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/ByteBufferEncoder.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/support/ByteBufferEncoder.java index 11ca5ed4aba..fad1fc8d28a 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/ByteBufferEncoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/ByteBufferEncoder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.codec.encoder; +package org.springframework.core.codec.support; import java.nio.ByteBuffer; diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/JacksonJsonDecoder.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/JacksonJsonDecoder.java similarity index 90% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/JacksonJsonDecoder.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/support/JacksonJsonDecoder.java index 39a4133e8cf..3280831ee1d 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/JacksonJsonDecoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/JacksonJsonDecoder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.codec.decoder; +package org.springframework.core.codec.support; import java.io.IOException; import java.nio.ByteBuffer; @@ -26,9 +26,9 @@ import org.reactivestreams.Publisher; import reactor.Publishers; import org.springframework.core.ResolvableType; -import org.springframework.reactive.codec.CodecException; -import org.springframework.reactive.codec.encoder.JacksonJsonEncoder; -import org.springframework.reactive.io.ByteBufferInputStream; +import org.springframework.core.codec.CodecException; +import org.springframework.core.codec.Decoder; +import org.springframework.util.ByteBufferInputStream; import org.springframework.util.MimeType; diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/JacksonJsonEncoder.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/JacksonJsonEncoder.java similarity index 90% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/JacksonJsonEncoder.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/support/JacksonJsonEncoder.java index d12df127b79..5b656935f50 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/JacksonJsonEncoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/JacksonJsonEncoder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.codec.encoder; +package org.springframework.core.codec.support; import java.io.IOException; import java.nio.ByteBuffer; @@ -26,9 +26,9 @@ import reactor.Publishers; import reactor.io.buffer.Buffer; import org.springframework.core.ResolvableType; -import org.springframework.reactive.codec.CodecException; -import org.springframework.reactive.codec.decoder.JacksonJsonDecoder; -import org.springframework.reactive.io.BufferOutputStream; +import org.springframework.core.codec.CodecException; +import org.springframework.core.codec.Encoder; +import org.springframework.util.BufferOutputStream; import org.springframework.util.MimeType; /** diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/Jaxb2Decoder.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/Jaxb2Decoder.java similarity index 92% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/Jaxb2Decoder.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/support/Jaxb2Decoder.java index 63f0cbc3236..12c2973dd8f 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/Jaxb2Decoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/Jaxb2Decoder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.codec.decoder; +package org.springframework.core.codec.support; import java.nio.ByteBuffer; import java.util.concurrent.ConcurrentHashMap; @@ -37,12 +37,11 @@ import org.xml.sax.helpers.XMLReaderFactory; import reactor.Publishers; import org.springframework.core.ResolvableType; -import org.springframework.http.MediaType; -import org.springframework.reactive.codec.CodecException; -import org.springframework.reactive.codec.encoder.Jaxb2Encoder; -import org.springframework.reactive.io.ByteBufferPublisherInputStream; +import org.springframework.core.codec.CodecException; +import org.springframework.util.ByteBufferPublisherInputStream; import org.springframework.util.Assert; import org.springframework.util.MimeType; +import org.springframework.util.MimeTypeUtils; /** * Decode from a bytes stream of XML elements to a stream of {@code Object} (POJO). @@ -56,7 +55,7 @@ public class Jaxb2Decoder extends AbstractDecoder { public Jaxb2Decoder() { - super(MediaType.APPLICATION_XML, MediaType.TEXT_XML); + super(MimeTypeUtils.APPLICATION_XML, MimeTypeUtils.TEXT_XML); } diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/Jaxb2Encoder.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/Jaxb2Encoder.java similarity index 90% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/Jaxb2Encoder.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/support/Jaxb2Encoder.java index 1e8c6ff375f..a3a64e56aed 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/Jaxb2Encoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/Jaxb2Encoder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.codec.encoder; +package org.springframework.core.codec.support; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; @@ -30,13 +30,12 @@ import reactor.Publishers; import reactor.io.buffer.Buffer; import org.springframework.core.ResolvableType; -import org.springframework.http.MediaType; -import org.springframework.reactive.codec.CodecException; -import org.springframework.reactive.codec.decoder.Jaxb2Decoder; -import org.springframework.reactive.io.BufferOutputStream; +import org.springframework.core.codec.CodecException; +import org.springframework.util.BufferOutputStream; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.MimeType; +import org.springframework.util.MimeTypeUtils; /** * Encode from an {@code Object} stream to a byte stream of XML elements. @@ -50,7 +49,7 @@ public class Jaxb2Encoder extends AbstractEncoder { public Jaxb2Encoder() { - super(MediaType.APPLICATION_XML, MediaType.TEXT_XML); + super(MimeTypeUtils.APPLICATION_XML, MimeTypeUtils.TEXT_XML); } diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/JsonObjectDecoder.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/JsonObjectDecoder.java similarity index 98% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/JsonObjectDecoder.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/support/JsonObjectDecoder.java index 5267b82dac9..95889640b49 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/JsonObjectDecoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/JsonObjectDecoder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.codec.decoder; +package org.springframework.core.codec.support; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; @@ -29,7 +29,6 @@ import reactor.Publishers; import reactor.fn.Function; import org.springframework.core.ResolvableType; -import org.springframework.reactive.codec.encoder.JsonObjectEncoder; import org.springframework.util.MimeType; /** diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/JsonObjectEncoder.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/JsonObjectEncoder.java similarity index 96% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/JsonObjectEncoder.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/support/JsonObjectEncoder.java index 9b5b8775efe..d3079ebe2f8 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/JsonObjectEncoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/JsonObjectEncoder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.codec.encoder; +package org.springframework.core.codec.support; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; @@ -28,7 +28,6 @@ import reactor.core.support.BackpressureUtils; import reactor.io.buffer.Buffer; import org.springframework.core.ResolvableType; -import org.springframework.reactive.codec.decoder.JsonObjectDecoder; import org.springframework.util.MimeType; import static reactor.Publishers.lift; diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/StringDecoder.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/StringDecoder.java similarity index 94% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/StringDecoder.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/support/StringDecoder.java index de47a06fdad..c2b20fd8b48 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/decoder/StringDecoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/StringDecoder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.codec.decoder; +package org.springframework.core.codec.support; import java.nio.ByteBuffer; import java.nio.charset.Charset; @@ -25,7 +25,6 @@ import reactor.Publishers; import reactor.io.buffer.Buffer; import org.springframework.core.ResolvableType; -import org.springframework.reactive.codec.encoder.StringEncoder; import org.springframework.util.MimeType; /** diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/StringEncoder.java b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/StringEncoder.java similarity index 94% rename from spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/StringEncoder.java rename to spring-web-reactive/src/main/java/org/springframework/core/codec/support/StringEncoder.java index b87387773f2..756638198e8 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/codec/encoder/StringEncoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/codec/support/StringEncoder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.codec.encoder; +package org.springframework.core.codec.support; import java.nio.ByteBuffer; import java.nio.charset.Charset; @@ -24,7 +24,6 @@ import org.reactivestreams.Publisher; import reactor.Publishers; import org.springframework.core.ResolvableType; -import org.springframework.reactive.codec.decoder.StringDecoder; import org.springframework.util.MimeType; /** diff --git a/spring-web-reactive/src/main/java/org/springframework/http/server/servlet31/RequestBodyPublisher.java b/spring-web-reactive/src/main/java/org/springframework/http/server/servlet31/RequestBodyPublisher.java index f79d4d98767..956c00e900a 100644 --- a/spring-web-reactive/src/main/java/org/springframework/http/server/servlet31/RequestBodyPublisher.java +++ b/spring-web-reactive/src/main/java/org/springframework/http/server/servlet31/RequestBodyPublisher.java @@ -19,6 +19,7 @@ package org.springframework.http.server.servlet31; import java.io.IOException; import java.nio.ByteBuffer; import java.util.Arrays; +import java.util.concurrent.atomic.AtomicLong; import javax.servlet.ReadListener; import javax.servlet.ServletInputStream; @@ -28,7 +29,7 @@ import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; -import org.springframework.reactive.util.DemandCounter; +import org.springframework.util.Assert; /** * @author Arjen Poutsma @@ -165,4 +166,53 @@ public class RequestBodyPublisher implements ReadListener, Publisher demand.reset(); } } + + + /** + * Small utility class for keeping track of Reactive Streams demand. + */ + private static final class DemandCounter { + + private final AtomicLong demand = new AtomicLong(); + + /** + * Increases the demand by the given number + * @param n the positive number to increase demand by + * @return the increased demand + * @see org.reactivestreams.Subscription#request(long) + */ + public long increase(long n) { + Assert.isTrue(n > 0, "'n' must be higher than 0"); + return demand.updateAndGet(d -> d != Long.MAX_VALUE ? d + n : Long.MAX_VALUE); + } + + /** + * Decreases the demand by one. + * @return the decremented demand + */ + public long decrement() { + return demand.updateAndGet(d -> d != Long.MAX_VALUE ? d - 1 : Long.MAX_VALUE); + } + + /** + * Indicates whether this counter has demand, i.e. whether it is higher than 0. + * @return {@code true} if this counter has demand; {@code false} otherwise + */ + public boolean hasDemand() { + return this.demand.get() > 0; + } + + /** + * Resets this counter to 0. + * @see org.reactivestreams.Subscription#cancel() + */ + public void reset() { + this.demand.set(0); + } + + @Override + public String toString() { + return demand.toString(); + } + } } diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/util/DemandCounter.java b/spring-web-reactive/src/main/java/org/springframework/reactive/util/DemandCounter.java deleted file mode 100644 index cf8cf42c45b..00000000000 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/util/DemandCounter.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2002-2015 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.reactive.util; - -import java.util.concurrent.atomic.AtomicLong; - -import org.springframework.util.Assert; - -/** - * Small utility class for keeping track of Reactive Streams demand. - * @author Arjen Poutsma - */ -public final class DemandCounter { - - private final AtomicLong demand = new AtomicLong(); - - /** - * Increases the demand by the given number - * @param n the positive number to increase demand by - * @return the increased demand - * @see org.reactivestreams.Subscription#request(long) - */ - public long increase(long n) { - Assert.isTrue(n > 0, "'n' must be higher than 0"); - return demand.updateAndGet(d -> d != Long.MAX_VALUE ? d + n : Long.MAX_VALUE); - } - - /** - * Decreases the demand by one. - * @return the decremented demand - */ - public long decrement() { - return demand.updateAndGet(d -> d != Long.MAX_VALUE ? d - 1 : Long.MAX_VALUE); - } - - /** - * Indicates whether this counter has demand, i.e. whether it is higher than 0. - * @return {@code true} if this counter has demand; {@code false} otherwise - */ - public boolean hasDemand() { - return this.demand.get() > 0; - } - - /** - * Resets this counter to 0. - * @see org.reactivestreams.Subscription#cancel() - */ - public void reset() { - this.demand.set(0); - } - - @Override - public String toString() { - return demand.toString(); - } -} diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/io/BufferOutputStream.java b/spring-web-reactive/src/main/java/org/springframework/util/BufferOutputStream.java similarity index 96% rename from spring-web-reactive/src/main/java/org/springframework/reactive/io/BufferOutputStream.java rename to spring-web-reactive/src/main/java/org/springframework/util/BufferOutputStream.java index 6c97f7b6120..8f826f67c62 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/io/BufferOutputStream.java +++ b/spring-web-reactive/src/main/java/org/springframework/util/BufferOutputStream.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.io; +package org.springframework.util; import java.io.IOException; import java.io.OutputStream; diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/io/ByteBufferInputStream.java b/spring-web-reactive/src/main/java/org/springframework/util/ByteBufferInputStream.java similarity index 97% rename from spring-web-reactive/src/main/java/org/springframework/reactive/io/ByteBufferInputStream.java rename to spring-web-reactive/src/main/java/org/springframework/util/ByteBufferInputStream.java index a006596b2a1..b3a4945117a 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/io/ByteBufferInputStream.java +++ b/spring-web-reactive/src/main/java/org/springframework/util/ByteBufferInputStream.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.io; +package org.springframework.util; import java.io.IOException; import java.io.InputStream; diff --git a/spring-web-reactive/src/main/java/org/springframework/reactive/io/ByteBufferPublisherInputStream.java b/spring-web-reactive/src/main/java/org/springframework/util/ByteBufferPublisherInputStream.java similarity index 97% rename from spring-web-reactive/src/main/java/org/springframework/reactive/io/ByteBufferPublisherInputStream.java rename to spring-web-reactive/src/main/java/org/springframework/util/ByteBufferPublisherInputStream.java index 9f93f3aa62c..26d2e5ee41e 100644 --- a/spring-web-reactive/src/main/java/org/springframework/reactive/io/ByteBufferPublisherInputStream.java +++ b/spring-web-reactive/src/main/java/org/springframework/util/ByteBufferPublisherInputStream.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.reactive.io; +package org.springframework.util; import java.io.IOException; import java.io.InputStream; @@ -25,8 +25,6 @@ import org.reactivestreams.Publisher; import org.reactivestreams.Subscription; import reactor.Publishers; -import org.springframework.util.Assert; - /** * {@code InputStream} implementation based on a byte array {@link Publisher}. * diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/RequestBodyArgumentResolver.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/RequestBodyArgumentResolver.java index 853494d410d..de3700b47a6 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/RequestBodyArgumentResolver.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/RequestBodyArgumentResolver.java @@ -27,7 +27,7 @@ import org.springframework.core.ResolvableType; import org.springframework.core.convert.ConversionService; import org.springframework.http.MediaType; import org.springframework.http.server.ReactiveServerHttpRequest; -import org.springframework.reactive.codec.decoder.Decoder; +import org.springframework.core.codec.Decoder; import org.springframework.web.reactive.method.HandlerMethodArgumentResolver; import org.springframework.util.Assert; import org.springframework.web.bind.annotation.RequestBody; diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/RequestMappingHandlerAdapter.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/RequestMappingHandlerAdapter.java index e58f894289f..a73e53a0b96 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/RequestMappingHandlerAdapter.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/RequestMappingHandlerAdapter.java @@ -28,11 +28,11 @@ import org.springframework.core.ResolvableType; import org.springframework.core.convert.ConversionService; import org.springframework.http.server.ReactiveServerHttpRequest; import org.springframework.http.server.ReactiveServerHttpResponse; -import org.springframework.reactive.codec.decoder.ByteBufferDecoder; -import org.springframework.reactive.codec.decoder.Decoder; -import org.springframework.reactive.codec.decoder.JacksonJsonDecoder; -import org.springframework.reactive.codec.decoder.JsonObjectDecoder; -import org.springframework.reactive.codec.decoder.StringDecoder; +import org.springframework.core.codec.support.ByteBufferDecoder; +import org.springframework.core.codec.Decoder; +import org.springframework.core.codec.support.JacksonJsonDecoder; +import org.springframework.core.codec.support.JsonObjectDecoder; +import org.springframework.core.codec.support.StringDecoder; import org.springframework.web.reactive.HandlerAdapter; import org.springframework.web.reactive.HandlerResult; import org.springframework.web.reactive.method.HandlerMethodArgumentResolver; diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/ResponseBodyResultHandler.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/ResponseBodyResultHandler.java index 326014b98cd..47f2ff691e1 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/ResponseBodyResultHandler.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/method/annotation/ResponseBodyResultHandler.java @@ -37,7 +37,7 @@ import org.springframework.core.convert.ConversionService; import org.springframework.http.MediaType; import org.springframework.http.server.ReactiveServerHttpRequest; import org.springframework.http.server.ReactiveServerHttpResponse; -import org.springframework.reactive.codec.encoder.Encoder; +import org.springframework.core.codec.Encoder; import org.springframework.util.Assert; import org.springframework.util.MimeType; import org.springframework.web.HttpMediaTypeNotAcceptableException; diff --git a/spring-web-reactive/src/test/java/org/springframework/http/server/XmlHandler.java b/spring-web-reactive/src/test/java/org/springframework/http/server/XmlHandler.java index ea069de7ccb..81a68d363f3 100644 --- a/spring-web-reactive/src/test/java/org/springframework/http/server/XmlHandler.java +++ b/spring-web-reactive/src/test/java/org/springframework/http/server/XmlHandler.java @@ -27,8 +27,8 @@ import reactor.io.buffer.Buffer; import reactor.rx.Streams; import org.springframework.http.MediaType; -import org.springframework.reactive.io.BufferOutputStream; -import org.springframework.reactive.io.ByteBufferPublisherInputStream; +import org.springframework.util.BufferOutputStream; +import org.springframework.util.ByteBufferPublisherInputStream; import static org.junit.Assert.fail; diff --git a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/ByteBufferDecoderTests.java b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/ByteBufferDecoderTests.java index 96fa5097458..543fd60f684 100644 --- a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/ByteBufferDecoderTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/ByteBufferDecoderTests.java @@ -27,6 +27,7 @@ import reactor.rx.Stream; import reactor.rx.Streams; import org.springframework.core.ResolvableType; +import org.springframework.core.codec.support.ByteBufferDecoder; import org.springframework.http.MediaType; /** diff --git a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/JacksonJsonDecoderTests.java b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/JacksonJsonDecoderTests.java index 82a185efcb9..adc55f2e457 100644 --- a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/JacksonJsonDecoderTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/JacksonJsonDecoderTests.java @@ -28,6 +28,7 @@ import reactor.rx.Stream; import reactor.rx.Streams; import org.springframework.core.ResolvableType; +import org.springframework.core.codec.support.JacksonJsonDecoder; import org.springframework.http.MediaType; import org.springframework.reactive.codec.Pojo; diff --git a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/Jaxb2DecoderTests.java b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/Jaxb2DecoderTests.java index 155dbbb3ff1..110db957994 100644 --- a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/Jaxb2DecoderTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/Jaxb2DecoderTests.java @@ -28,6 +28,7 @@ import reactor.rx.Stream; import reactor.rx.Streams; import org.springframework.core.ResolvableType; +import org.springframework.core.codec.support.Jaxb2Decoder; import org.springframework.http.MediaType; import org.springframework.reactive.codec.Pojo; diff --git a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/JsonObjectDecoderTests.java b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/JsonObjectDecoderTests.java index 52bc2253c69..915d9677daf 100644 --- a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/JsonObjectDecoderTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/JsonObjectDecoderTests.java @@ -26,6 +26,8 @@ import reactor.io.buffer.Buffer; import reactor.rx.Stream; import reactor.rx.Streams; +import org.springframework.core.codec.support.JsonObjectDecoder; + /** * @author Sebastien Deleuze */ diff --git a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/StringDecoderTests.java b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/StringDecoderTests.java index cc9dc6c14c5..90ab1978ecb 100644 --- a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/StringDecoderTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/decoder/StringDecoderTests.java @@ -29,6 +29,7 @@ import reactor.rx.Stream; import reactor.rx.Streams; import org.springframework.core.ResolvableType; +import org.springframework.core.codec.support.StringDecoder; import org.springframework.http.MediaType; /** diff --git a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/ByteBufferEncoderTests.java b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/ByteBufferEncoderTests.java index 4c5a8657e07..6c79d56bb44 100644 --- a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/ByteBufferEncoderTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/ByteBufferEncoderTests.java @@ -27,6 +27,7 @@ import reactor.rx.Stream; import reactor.rx.Streams; import org.springframework.core.ResolvableType; +import org.springframework.core.codec.support.ByteBufferEncoder; import org.springframework.http.MediaType; /** diff --git a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/JacksonJsonEncoderTests.java b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/JacksonJsonEncoderTests.java index 22af3b16833..8193b938dcb 100644 --- a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/JacksonJsonEncoderTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/JacksonJsonEncoderTests.java @@ -26,6 +26,7 @@ import org.junit.Test; import reactor.rx.Stream; import reactor.rx.Streams; +import org.springframework.core.codec.support.JacksonJsonEncoder; import org.springframework.http.MediaType; import org.springframework.reactive.codec.Pojo; diff --git a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/Jaxb2EncoderTests.java b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/Jaxb2EncoderTests.java index d0cc833b649..1b6a8b73606 100644 --- a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/Jaxb2EncoderTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/Jaxb2EncoderTests.java @@ -26,6 +26,7 @@ import org.junit.Test; import reactor.rx.Stream; import reactor.rx.Streams; +import org.springframework.core.codec.support.Jaxb2Encoder; import org.springframework.http.MediaType; import org.springframework.reactive.codec.Pojo; diff --git a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/JsonObjectEncoderTests.java b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/JsonObjectEncoderTests.java index 9f4eed32b9d..5e56f044c5d 100644 --- a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/JsonObjectEncoderTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/JsonObjectEncoderTests.java @@ -26,6 +26,8 @@ import reactor.io.buffer.Buffer; import reactor.rx.Stream; import reactor.rx.Streams; +import org.springframework.core.codec.support.JsonObjectEncoder; + /** * @author Sebastien Deleuze */ diff --git a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/StringEncoderTests.java b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/StringEncoderTests.java index 151c4f85626..2c371f0391f 100644 --- a/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/StringEncoderTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/reactive/codec/encoder/StringEncoderTests.java @@ -23,10 +23,10 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Test; -import org.reactivestreams.Publisher; import reactor.rx.Streams; import org.springframework.core.ResolvableType; +import org.springframework.core.codec.support.StringEncoder; import org.springframework.http.MediaType; /** diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/method/annotation/RequestMappingIntegrationTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/method/annotation/RequestMappingIntegrationTests.java index 3987d9b12ba..26a0a7e9dca 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/method/annotation/RequestMappingIntegrationTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/method/annotation/RequestMappingIntegrationTests.java @@ -47,10 +47,10 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.RequestEntity; import org.springframework.http.ResponseEntity; -import org.springframework.reactive.codec.encoder.ByteBufferEncoder; -import org.springframework.reactive.codec.encoder.JacksonJsonEncoder; -import org.springframework.reactive.codec.encoder.JsonObjectEncoder; -import org.springframework.reactive.codec.encoder.StringEncoder; +import org.springframework.core.codec.support.ByteBufferEncoder; +import org.springframework.core.codec.support.JacksonJsonEncoder; +import org.springframework.core.codec.support.JsonObjectEncoder; +import org.springframework.core.codec.support.StringEncoder; import org.springframework.web.reactive.DispatcherHandler; import org.springframework.web.reactive.handler.SimpleHandlerResultHandler; import org.springframework.http.server.AbstractHttpHandlerIntegrationTests; diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/method/annotation/ResponseBodyResultHandlerTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/method/annotation/ResponseBodyResultHandlerTests.java index c8212a0301f..32f30c20c51 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/method/annotation/ResponseBodyResultHandlerTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/method/annotation/ResponseBodyResultHandlerTests.java @@ -23,11 +23,10 @@ import org.reactivestreams.Publisher; import org.springframework.core.ResolvableType; import org.springframework.core.convert.support.DefaultConversionService; -import org.springframework.reactive.codec.encoder.StringEncoder; +import org.springframework.core.codec.support.StringEncoder; import org.springframework.web.reactive.HandlerResult; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.method.HandlerMethod; -import org.springframework.web.reactive.method.annotation.ResponseBodyResultHandler; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue;