Commit Graph

447 Commits

Author SHA1 Message Date
Juergen Hoeller
a8323f6a27 Latest dependency updates (OkHttp 3.9.1, JRuby 9.1.14, Rome 1.9) 2017-11-26 16:03:48 +01:00
Rossen Stoyanchev
01a82b5291 Improve semantics writing currentData
Before this commit, the return value from write was interpreted as the
data being fully written and ready to be released via releaseData().

This is not true for WebSocketSession implementations where a true
return value simply means the message was sent with the full payload
but releas is not appropriate until a send confirmation.

Technically not an issue since WebSocketSession's extending this do
not use pooled buffers. Nevertheless this commit refines the semantics
of write, removes the releaseData() method, and makes sub-classes
responsible for releasing the buffer when fully written (and they
know best when that is). As a bonus currentData is now private.

Issue: SPR-16207
2017-11-23 10:55:03 -05:00
Rossen Stoyanchev
c1b191edb0 Polish and improve logging 2017-11-22 23:25:36 -05:00
Rossen Stoyanchev
f44366877c Switch to suspended mode before demand
After this commit, Tomcat and Undertow WebSocketSession imlpementations
start out in suspended mode and wait for demand.

The JettyWebSocketSession is capable of suspending but it doesn't seem
to work if invoked before any messages are received. That may become an
issue if there is a case where no demand appears long enough for more
messages to accumulate than we can hold.

UnderowServerHttpRequest would ideally also start in suspended mode but
that also doesn't work. It is not an issue in this case since we can
ignore the read notifications.

Servlet API requires a proactive check before it calls you back so
there is no need to suspend.

Issue: SPR-16207
2017-11-22 17:55:20 -05:00
Rossen Stoyanchev
afdca285e5 Avoid resume-suspend race condition
This commit turns suspendReading() into a readingPaused() notification
that is invoked after a succession of reads stops because there is no
more demand. Sub-classes can use this notification to suspend, if that
applies to them.

Most importantly the notification is guaranteed not to overlap with
checkOnDataAvailable() which means that suspend does not need to be
atomic and guarded against resume. The two can and do compete all the
time when reading ends with no demand, and a request for demand arrives
concurrently.

Issue: SPR-16207
2017-11-22 17:48:03 -05:00
sdeleuze
652e5c5584 Disable CORS credentials by default
Access-Control-Allow-Credentials CORS header, used to
allow cookies with CORS requests, is not set to true
anymore by default when enabling CORS with
@CrossOrigin or global CORS configuration in order to
provide a more secured default CORS configuration.

The related allowCredentials property now requires to
be set to true explicitly in order to support cookies
with CORS requests.

Issue: SPR-16130
2017-11-22 22:46:44 +01:00
Rossen Stoyanchev
b7c924cac1 Polish 2017-11-21 23:20:13 -05:00
Violeta Georgieva
d8099adc9a AbstractListenerWebSocketSession: suspend the channel when there is no demand
Issues: SPR-16207
2017-11-21 22:59:33 -05:00
Rossen Stoyanchev
b89a48a703 Improve FlushingIntegrationTests 2017-11-21 22:12:33 -05:00
sdeleuze
9f1d8517ba Polish Kotlin source code style 2017-11-21 15:59:23 +01:00
Rossen Stoyanchev
bc8e525e60 Add shared instance of ReactiveAdapterRegistry
Issue: SPR-16218
2017-11-20 17:02:22 -05:00
Juergen Hoeller
14a7da8183 Upgrade to Hibernate Validator 6.0.5 2017-11-19 21:16:10 +01:00
Rossen Stoyanchev
ce895d7a84 Add mention of shortcut methods in BodyInserters 2017-11-17 10:43:53 -05:00
sdeleuze
c530745015 Fix JsonView + HttpEntity Reactive handling
This commit adds
AbstractMessageReaderArgumentResolver#readBody and
AbstractMessageWriterResultHandler#writeBody variants
which allow to pass the actual MethodParameter in order
to perform proper annotation-based hint resolution with
nested generics, for example with HttpEntity.

Issue: SPR-16098
2017-11-16 15:12:58 +01:00
Rossen Stoyanchev
8e21023f28 Update docs on ClientResponse
Issue: SPR-16200
2017-11-15 17:08:57 -08:00
Rossen Stoyanchev
6e05a5881e Update WebClient Javadoc
Issue: SPR-16197
2017-11-15 15:09:01 -08:00
sdeleuze
9dd29f76ae Polish CORS documentation 2017-11-15 16:16:13 +01:00
Rossen Stoyanchev
fb7b7d089b Revert erroneously committed change 2017-11-14 08:42:04 -05:00
Rossen Stoyanchev
536e72c8df Add WebSocket chapter to WebFlux section
Issue: SPR-15700
2017-11-13 23:20:01 -05:00
Rossen Stoyanchev
5e86049438 Expose WebSocket options for Tomcat/Jetty 2017-11-13 23:20:01 -05:00
Rossen Stoyanchev
e818b904ad Polish WebSocket-related 2017-11-13 23:20:01 -05:00
Rossen Stoyanchev
9a894ab61e Use ResponseEntity Content-Type as producible media type
Issue: SPR-16172
2017-11-10 15:05:03 -05:00
Rossen Stoyanchev
f565f635e3 Polish 2017-11-10 11:29:58 -05:00
Rossen Stoyanchev
ff97eafa4f Fix NPE in ErrorsArgumentResolver
Issue: SPR-16187
2017-11-10 10:57:26 -05:00
Rossen Stoyanchev
a5103307c6 Polish ErrorArgumentResolver 2017-11-10 10:15:46 -05:00
Rossen Stoyanchev
8cfa3c632b Allow Undertow client in websocket integration tests
It seems to work.
2017-11-09 17:49:11 -05:00
Rossen Stoyanchev
cb34b0b963 Polish 2017-11-09 17:16:31 -05:00
anton_bondarenko
b487db294b Fix NullPointer when setting cookies in RequestUriSpec 2017-11-09 16:59:44 -05:00
Rossen Stoyanchev
807297f173 Remove RxNetty (from test sources)
Practically no changes to RxNetty for a year and efforts underway to
rebuild 0.6.x based on a current Reactor Netty base.

Aside from the extra time to run integration tests having two
Netty-based servers can also cause false alarms such as ByteBuf leaks
related to RxNetty.
2017-11-09 15:56:56 -05:00
Arjen Poutsma
db00669197 Allow to set cookies in ServerResponse
Issue: SPR-16121
2017-11-09 11:04:02 +01:00
Rossen Stoyanchev
9786750b5a Improve @RequestAttribute WebFlux resolver
The resolver now takes into account the possibility the attribute
itself may be a reactive type.

Issue: SPR-16158
2017-11-06 21:44:45 -05:00
Rossen Stoyanchev
14f02d7192 Update reference with examples of multipart requests
Issue: SPR-16118
2017-11-06 16:33:58 -05:00
Arjen Poutsma
af2e296ff3 Javadoc 2017-11-06 16:00:18 +01:00
Rossen Stoyanchev
8c33ed02b3 ServletHttpHandlerAdapter supports Serlvet path mapping
Issue: SPR-16155
2017-11-02 20:53:26 -04:00
Rossen Stoyanchev
aa653b23bc Add AbstractReactiveWebInitializer
This commit introduces a new AbstractReactiveWebInitializer in
spring-web that relies on WebHttpHandlerBuilder to detect request
processing infrastructure beans from an ApplicationContext.

This eliminates the need to create a DispatcherHandler, since it is
expected to be a Spring bean, and as a result the initializers in
spring-webflux have been deprecated.

Issue: SPR-16144
2017-11-02 14:57:06 -04:00
Arjen Poutsma
a58002a5de Chained API for form and multipart data in BodyInserters
Issue: SPR-16133
2017-11-01 13:17:52 +01:00
Rossen Stoyanchev
48c2cc18b9 Update form + multipart data Javadoc on BodyInserters
Issue: SPR-16118
2017-10-31 09:21:09 -04:00
Rossen Stoyanchev
8083eaae54 syncBody better differentiates plain vs multipart forms
FromHttpMessageWriter and MultipartHttpMessageWriter both support
MultiValueMap except the former supports String values only. This
presents an issue since either full generic type information must be
provided, which is cumbersome on the client side, or if left out there
is no good way to order the writers to make a proper decision.

This commit:

- refines the canWrite behavior of   to not a
accept MultiValueMap without proper generic information unless the
MediaType is explicitly set providing a strong hint.

- modifies MultipartHttpMessageWriter to be configured with a
FormHttpMessageWriter so it can write both plan and multipart data with
the ability to properly differentiate based on actual map values.

Issue: SPR-16131
2017-10-31 09:12:05 -04:00
Juergen Hoeller
e5c8dc0d65 MessageSource.getMessage returns null default message as-is (again)
Issue: SPR-16127
2017-10-31 11:06:42 +01:00
Juergen Hoeller
9bab7a2708 Upgrade to Java Activation Framework 1.2 for test runtime
Includes upgrade to Hibernate Validator 6.0.4 (where applicable)

Issue: SPR-16115
2017-10-25 19:18:10 +02:00
Arjen Poutsma
6457a1556e Javadoc 2017-10-24 10:59:47 +02:00
Arjen Poutsma
40a6fba443 Allow to change URL/method in ClientRequest.Builder
This commit exposes the ClientRequest's URL and HttpMethod fields via a
setter, so that they can be changed more easily in a request that was
created via ClientRequest.from(ClientRequest).

Issue: SPR-16093
2017-10-23 16:39:33 +02:00
Rossen Stoyanchev
1cc5afe24b Fix lines over 120 characters
https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Code-Style#line-wrapping
2017-10-20 16:42:26 -04:00
Juergen Hoeller
e17ad551f3 Latest dependency updates (RxJava 1.3.3, Hibernate ORM 5.2.12, Hibernate Validator 5.4.2 & 6.0.3) 2017-10-20 16:16:06 +02:00
Juergen Hoeller
d1fac36e3e SchedulingConfigurer and JmsListenerConfigurer respect @Order
Issue: SPR-16090
2017-10-20 16:10:12 +02:00
Rossen Stoyanchev
48eb416ecc Fix failing tests 2017-10-19 21:42:31 -04:00
Rossen Stoyanchev
ab92754a2e @MatrixVariable resolvers for WebFlux
The information was already parsed and available in a request attribute
but until now there were no argument resolvers to expose it.

Issue: SPR-16005
2017-10-19 21:01:38 -04:00
Rossen Stoyanchev
d8a7b96b46 WebFlux support for "request handled" in controller
Issue: SPR-16087
2017-10-18 21:07:27 -04:00
Rossen Stoyanchev
950edf888a Support for Map method argument in WebFlux
Issue: SPR-16086
2017-10-18 11:41:46 -04:00
Rossen Stoyanchev
32d78e60b6 Update information on WebApplicationContext hierarchy
Issue: SPR-16041
2017-10-17 21:49:57 -04:00