- 07 9月, 2016 1 次提交
-
-
由 Brian Clozel 提交于
Prior to this commit, the resource handling chain and its `ResourceResolvers` would use specific `Resource` implementations in order to add resource metadata to the HTTP response. For example, `VersionedResource` and `EncodedResource` are both adding specific HTTP response headers. This commit aims at making this mechanism more stable and reusable, since the previous implementation would fail in case a resolved resource would be both a `VersionedResource` wrapping a `EncodedResource` (or the other way arount). Only one of the specific implementations would contribute its metadata since the code supporting that in `ResourceHttpRequestHandler` would only check for `instanceof` tests, whereas those implementations are acutally delegating calls to the wrapped resource. Now both `VersionedResource` and `EncodedResource` have been replaced by specific implementations of `ResolvedResource`, which directly provides those HTTP response headers as part of `getResponseHeaders()`. This commit applies the same changes for the web reactive implementations and its `ResourceWebHandler`. Issue: SPR-14264
-
- 06 9月, 2016 2 次提交
-
-
由 Rossen Stoyanchev 提交于
Issue: SPR-14521
-
由 Rossen Stoyanchev 提交于
A straight-forward port of the resource handling support in spring-webmvc to spring-web-reactive. Primarily adapting contracts and implementations to use the reactive request and response and the reactive ResourceHttpMessageWriter. Issue: SPR-14521
-
- 03 9月, 2016 1 次提交
-
-
由 Brian Clozel 提交于
This commit fixes `ResponseEntityResultHandler` so that it only tries to call `writeBody` if the `ResponseEntity` is not null. In case the response entity body is null, the response is flushed right away and the request is signaled as handled. Issue: SPR-14663
-
- 02 9月, 2016 3 次提交
-
-
由 Rossen Stoyanchev 提交于
Issue: SPR-14522
-
由 Rossen Stoyanchev 提交于
Issue: SPR-14522
-
由 Rossen Stoyanchev 提交于
Issue: SPR-14658
-
- 01 9月, 2016 3 次提交
-
-
由 Sebastien Deleuze 提交于
-
由 Arjen Poutsma 提交于
This commit introduces a new, functional web programming model in the org.springframework.web.reactive.function package. The key types are: - Request and Response are new Java 8-DSLs for access to the HTTP request and response - HandlerFunction represents a function to handle a request to a response - RoutingFunction maps a request to a HandlerFunction - FilterFunction filters a routing as defined by a RoutingFunction - RequestPredicate is used by Router to create RoutingFunctions - RequestPredicates offers common RequestPredicate instances
-
由 Arjen Poutsma 提交于
- Renamed SseEvent to ServerSentEvent to make the name less redundant. - ServerSentEvent is now immutable, having a builder to create new instances. - Realigned the class properties to more closely match the events described in the spec, so that `reconnectTime` becomes `retry`, and `name` becomes `event`.
-
- 31 8月, 2016 3 次提交
-
-
由 Juergen Hoeller 提交于
Issue: SPR-14646
-
由 Juergen Hoeller 提交于
-
由 Rossen Stoyanchev 提交于
This commit updates the instructions on getting started with Spring Web Reactive and also updates constructors and setters to streamline the getting started procedure. Issue: SPR-14640
-
- 30 8月, 2016 1 次提交
-
-
由 Brian Clozel 提交于
Prior to this commit, exceptions thrown by the `HandlerMethodArgumentResolver` would be wrapped into `IllegalStateException`s. This commit makes sure that a DEBUG log is written with the relevant information and that the root cause is not wrapped into another exception, so that the appropriate `ExceptionHandler` can be used to deal with this error. Issue: SPR-14618
-
- 29 8月, 2016 1 次提交
-
-
由 Sam Brannen 提交于
-
- 09 8月, 2016 1 次提交
-
-
由 Rossen Stoyanchev 提交于
-
- 28 7月, 2016 3 次提交
-
-
由 Rossen Stoyanchev 提交于
-
由 Rossen Stoyanchev 提交于
-
由 Rossen Stoyanchev 提交于
There is really no need for a result handler dedicated to a void return value and it's actually problematic to have it. Each result handler treats void as necessary. For an @ResponseBody method it means an empty body. For view resolution it means no specific value was returned and we should procede with selecting a default view name. Having a dedicated void result handler can interfere with this especially since view resolution needs to be last in order. At the same time there are cases when no result handling is needed and the response is fully handled within the HandlerAdapter. This is the case with WebHandler and the SimpleHandlerAdapter. For that case we simply return mono.then(aVoid -> Mono.empty()) which effectively returns an empty Mono and no result handling follows. The HandlerAdapter already says you can return no values at all if the response is fully handled.
-
- 26 7月, 2016 1 次提交
-
-
由 Juergen Hoeller 提交于
DataSourceUtils moved to main core.io.buffer package. Consistently named Jackson2JsonDecoder/Encoder and Jaxb2XmlDecoder/Encoder. Plenty of related polishing.
-
- 23 7月, 2016 3 次提交
-
-
由 Rossen Stoyanchev 提交于
-
由 Arjen Poutsma 提交于
This commit refactors the StringEncoder to a CharSequenceEncoder, in order to support StringBuilders, Groovy GStrings, etc. Issue: https://github.com/spring-projects/spring-reactive/issues/120
-
由 Rossen Stoyanchev 提交于
Issue: SPR-14159
-
- 21 7月, 2016 1 次提交
-
-
由 Arjen Poutsma 提交于
This commit changes the reactive flushing mechanism to use a newly introduced writeAndFlushWith(Publisher<Publisher<DataBuffer>>) on ReactiveHttpOutputMessage instead of using the FlushingDataBuffer. Issue: https://github.com/spring-projects/spring-reactive/issues/125
-
- 20 7月, 2016 3 次提交
-
-
由 Juergen Hoeller 提交于
Issue: SPR-14479
-
由 Juergen Hoeller 提交于
Consistently use constructor-based instantiation instead of Class.newInstance / BeanUtils.instantiate Issue: SPR-14486
-
由 Juergen Hoeller 提交于
Issue: SPR-14484
-
- 19 7月, 2016 2 次提交
-
-
由 Rossen Stoyanchev 提交于
-
由 Rossen Stoyanchev 提交于
Ensure type-level Javadoc in every class, comply with guidelines for 80 char on Javadoc, and minor polish.
-
- 16 7月, 2016 1 次提交
-
-
由 Rossen Stoyanchev 提交于
-
- 15 7月, 2016 3 次提交
-
-
由 Rossen Stoyanchev 提交于
-
由 Rossen Stoyanchev 提交于
-
由 Rossen Stoyanchev 提交于
-
- 08 7月, 2016 3 次提交
-
-
由 Brian Clozel 提交于
Reactor's `DependencyUtils` has been renamed to `Converters` and all the `from` converter methods have been disambiguated to `fromPublisher`, `toPublisher`.
-
由 Rossen Stoyanchev 提交于
This commit adds support for handling an empty request body with both HttpEntity where the body is not required and with @RequestBody where the body is required depending on the annotation's required flag. If the body is an explicit type (e.g. String, HttpEntity<String>) and the body is required an exception is raised before the method is even invoked or otherwise the body is passed in as null. If the body is declared as an async type (e.g. Mono<String>, HttpEntity<Mono<String>>) and is required, the error will flow through the async type. If not required, the async type will be passed with no values (i.e. empty). A notable exception is rx.Single which can only have one value or one error and cannot be empty. As a result currently the use of rx.Single to represent the request body in any form effectively implies the body is required.
-
由 Rossen Stoyanchev 提交于
The RequestBodyArgumentResolver has been refactored to have a shared base class and tests with the new HttpEntityMethodArgumentResolver. An HttpEntity argument is not expected to have an async wrapper because the request headers are available immediately. The body however can be asynchronous, e.g. HttpEntity<Flux<String>>.
-
- 07 7月, 2016 2 次提交
-
-
由 Rossen Stoyanchev 提交于
-
由 Rossen Stoyanchev 提交于
-
- 04 7月, 2016 2 次提交
-
-
由 Sebastien Deleuze 提交于
-
由 Rossen Stoyanchev 提交于
When using the ConversionService to check and bridge to and from reactive types we now generallly provide the full type information available from method signatures. However that full type information is not always necessary such as when we perform additional checks on the generics of the reactive type (e.g. Mono<ResponseEntity>). This allows us to switch to use DefaultFormattingConversionService instead of GenericConversionService while also ensuring that the CollectionToObjectConverter doesn't think it can convert List<?> to any reactive type. The ObjectToObjectConverter can also interfere because it is smart enough to find the "from(Publisher<?>)" method on Flux and Mono. To make up for that on the response side we now check if a type is assignable to Publisher first in which case it is a simple cast. In turn that means we don't need a PublisherToFluxConverter which can be problematic in its own right because it can convert from Mono to Flux which technically doesn't lose data but switches stream semantics. Issue: #124, #128
-