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 3ed102ea04..51718cddd0 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 dbb43b5227..cd7e399044 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 22240f93e5..72e9a38f5d 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 aa17856078..9f4b8b5705 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 08f504423b..8010042158 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 fd1ddaad9f..54b78143ee 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 11ca5ed4ab..fad1fc8d28 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 39a4133e8c..3280831ee1 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 d12df127b7..5b656935f5 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 63f0cbc323..12c2973dd8 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 1e8c6ff375..a3a64e56ae 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 5267b82dac..95889640b4 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 9b5b8775ef..d3079ebe2f 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 de47a06fda..c2b20fd8b4 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 b87387773f..756638198e 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 f79d4d9876..956c00e900 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 cf8cf42c45..0000000000 --- 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 6c97f7b612..8f826f67c6 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 a006596b2a..b3a4945117 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 9f93f3aa62..26d2e5ee41 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 853494d410..de3700b47a 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 e58f894289..a73e53a0b9 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 326014b98c..47f2ff691e 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 ea069de7cc..81a68d363f 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 96fa509745..543fd60f68 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 82a185efcb..adc55f2e45 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 155dbbb3ff..110db95799 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 52bc2253c6..915d9677da 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 cc9dc6c14c..90ab1978ec 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 4c5a8657e0..6c79d56bb4 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 22af3b1683..8193b938dc 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 d0cc833b64..1b6a8b7360 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 9f4eed32b9..5e56f044c5 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 151c4f8562..2c371f0391 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 3987d9b12b..26a0a7e9dc 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 c8212a0301..32f30c20c5 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;