Commit Graph

13837 Commits

Author SHA1 Message Date
Rossen Stoyanchev
e4d39bb86f Refactor Undertow WebSocket client configuration model
This commit removes the statically created XnioWorker which is an
"active" component and should not be created automatically and could
lead to resource leaks. Instead XnioWorker is now required at
construction aligning better with WebSocketClient#connectionBuilder
which also does not have a "default" worker option.

Since the XnioWorker is the main input for creating a ConnectionBuilder
we now create the ConnectionBuider in a protected method and then allow
a Consumer<ConnectionBuilder> to configure it further as opposed to the
Function<URI, ConnectionBuilder> used previously.

This commit also removes default SSL context initialization for RxNetty
to better align with other client implementations.

Issue: SPR-14527
2016-12-27 16:02:40 -05:00
Rossen Stoyanchev
384e851bd1 Polish reactive WebSocketClient implementations 2016-12-27 13:44:59 -05:00
Sebastien Deleuze
c18ebdeee0 Upgrade to Kotlin 1.0.6 2016-12-27 18:12:58 +01:00
Sebastien Deleuze
58e113a591 Avoid NPE in AutoProxyRegistrar when no attribute found
Issue: SPR-15055
2016-12-27 16:37:01 +01:00
Juergen Hoeller
7818c650ba Cache ASM metadata at the context level (if supported)
Includes streamlined ClassPathBeanDefinitionScanner setup.

Issue: SPR-14654
2016-12-27 13:38:24 +01:00
Juergen Hoeller
048098119e PATCH does not work with the standard JDK HTTP library
Issue: SPR-15052
2016-12-27 13:32:43 +01:00
Sebastien Deleuze
6a850ee688 Polishing 2016-12-27 10:08:12 +01:00
Sebastien Deleuze
546687d5e4 Add Kotlin extension for RestTemplate
Issue: SPR-15056
2016-12-27 10:08:02 +01:00
Sebastien Deleuze
3626a1c7f9 Add Kotlin extensions for function Web API
Issue: SPR-15054
2016-12-27 08:47:58 +01:00
Juergen Hoeller
bb94ba6e3f DateFormatter's ISO patterns use XXX timezone notation (as per SimpleDateFormat's javadoc)
Issue: SPR-14675
2016-12-26 22:31:27 +01:00
Juergen Hoeller
64d6561cbb AbstractNestablePropertyAccessor's setPropertyValue refactored into several delegate methods
Issue: SPR-15053
2016-12-26 19:47:26 +01:00
Juergen Hoeller
47be2d8786 Upgrade to Undertow 1.4.8 and XNIO 3.4.3 2016-12-26 19:37:53 +01:00
Sebastien Deleuze
ff675f5226 Add Kotlin extensions for bean registration and retrieval
Issue: SPR-15048
2016-12-26 14:21:10 +01:00
Juergen Hoeller
a8741dd371 Polishing 2016-12-26 11:26:58 +01:00
Juergen Hoeller
f805427629 Detect generic type match behind interface-based proxy as well
Issue: SPR-14097
2016-12-26 11:23:07 +01:00
Juergen Hoeller
0208198804 Expose reflection metadata with ASM-driven method order
Issue: SPR-14505
2016-12-26 11:00:22 +01:00
Juergen Hoeller
fd41f63ec0 Clarify programmatic contract (no annotation-driven injection)
Issue: SPR-8704
2016-12-26 10:57:50 +01:00
Rossen Stoyanchev
a77da869a6 Custom request headers for JettyWebSocketClient
Issue: SPR-14527
2016-12-23 22:11:17 -05:00
Rossen Stoyanchev
22a57b9aed Polish 2016-12-23 21:55:40 -05:00
Rossen Stoyanchev
1b8cdb8924 Paramaterize WebSocket tests by client and server
Issue: SPR-14527
2016-12-23 21:20:42 -05:00
Rossen Stoyanchev
12f80be1f0 AbstractListenerWebSocketSession handles Mono<Void>
The HandlerSubcriber from each listener session implementation is now
consolidated into AbstractListenerWebSocketSession since the handling
of onComplete or onError in any case is about delegating to the
session.

This also allows for the UndertowWebSocketHandlerAdapter to become
simply an (Undertow) AbstractReceiveListener.

Issue: SPR-14527
2016-12-23 18:04:53 -05:00
Rossen Stoyanchev
935577f00b Replace WebSocketHandlerAdapterSupport with delegation
This commit removes the base class WebSocketHandlerAdapterSupport which
was mainly a container for properties. Instead we use a
java.util.Function to create the WebSocketSession which differs in any
way by client and server, which in turn allows  HandshakeInfo to become
a simple immutable container once again.

Also for Undertow the WebSocketConnectionCallback implementation has
been moved into the server.upgrade package since it is for server-side
use only.

Issue: SPR-14527
2016-12-23 17:23:23 -05:00
Violeta Georgieva
d49ab90187 Jetty/Standard/UndertowWebSocketClient headers test 2016-12-23 17:23:22 -05:00
Violeta Georgieva
b4b7b163d1 Add WebSocketClient for Undertow
Issue: SPR-14527
2016-12-23 17:23:22 -05:00
Violeta Georgieva
30ee71ea1a Add WebSocketClient for Java WebSocket (JSR-356)
Issue: SPR-14527
2016-12-23 17:23:22 -05:00
Violeta Georgieva
bd09a76a1e Add WebSocketClient for Jetty
Issue: SPR-14527
2016-12-23 17:23:22 -05:00
Violeta Georgieva
113d1b6970 Polishing 2016-12-23 17:23:22 -05:00
Juergen Hoeller
ef5c797569 Polishing 2016-12-23 21:23:30 +01:00
Juergen Hoeller
3295a4e6ef ConfigurationClassParser enforces @Bean declaration order through ASM metadata
Issue: SPR-14505
2016-12-23 20:29:12 +01:00
Juergen Hoeller
8147c112f5 LinkedCaseInsensitiveMap delegates to LinkedHashMap instead of extending it
Issue: SPR-15026
2016-12-23 18:57:50 +01:00
Juergen Hoeller
d3f97e3092 ObjectProvider offers getIfAvailable/getIfUnique variants with default supplier
Issue: SPR-14980
2016-12-23 18:49:12 +01:00
Juergen Hoeller
54b8aab1c6 Kotlin plugin conditionally deactivated on JDK 9 2016-12-23 18:45:51 +01:00
Sebastien Deleuze
fbf88d19da Allow to specify hints with the functional web API
The most common use case is specifying JSON views.

ServerResponse.BodyBuilder#hint(String, Object) allows to
specify response body serialization hints.

ServerRequest#body(BodyExtractor, Map) allows to specify
request body extraction hints.

Issue: SPR-15030
2016-12-23 17:58:34 +01:00
Juergen Hoeller
f51fe5fd39 Polishing 2016-12-23 12:27:07 +01:00
Juergen Hoeller
e788b8467d GenericApplicationContext offers Supplier-based registration with BeanDefinitionCustomizer callback
Issue: SPR-14832
2016-12-23 12:26:47 +01:00
Rossen Stoyanchev
a86f89daa8 Update repositories 2016-12-22 22:23:31 -05:00
Rossen Stoyanchev
3d1b6fd362 Add WebSocket integration test 2016-12-22 22:07:02 -05:00
Stephane Maldini
dc9f338add Update to reactor core 3.0.4 and netty 0.6 RELEASE (from repo.spring.io/release) 2016-12-23 03:02:16 +00:00
Juergen Hoeller
5c48daa8eb Remove unused Log object from MessageHeaderAccessor
Issue: SPR-15045
2016-12-22 23:34:19 +01:00
Juergen Hoeller
2819f7c781 Polishing 2016-12-22 22:36:07 +01:00
Juergen Hoeller
ae62341fa3 Avoid deprecated Scheduler.shutdown() in favor of Scheduler.dispose() 2016-12-22 22:35:54 +01:00
Rossen Stoyanchev
3719f75d3b Minor refactoring + polish
- RxNettyWebSocketSession filters out WebSocketCloseFrame again
- add before/afterHandshake helper methods in WebSocketClientSupport
- log request headers on server and response headers on client
- polish 400 request handling in HandshakeWebSocketService
2016-12-22 16:18:15 -05:00
Juergen Hoeller
d64d9ab370 Consistent ClassLoader propagation and ConcurrentHashMap setup for AspectJ pointcuts
Issue: SPR-15040
2016-12-22 17:00:04 +01:00
Rossen Stoyanchev
0d0d461903 Use WebSocketFrameAggregator for Reactor and RxNetty
WebSocket frames are now aggregated through a Netty decoder so that
we always receive fully assembled messages by default capped at 64K.

Issue: SPR-14527
2016-12-21 14:14:37 -05:00
Rossen Stoyanchev
00387c3bbd Re-enable Reactor WebSocket integration tests 2016-12-21 12:39:56 -05:00
Brian Clozel
54901ab865 Avoid explicit DecoratedObjectFactory setup in JettyRequestUpgradeStrategy
Align Jetty support on spring-websocket module.

Issue: SPR-14940
2016-12-21 17:27:27 +01:00
Sebastien Deleuze
7b183048b8 Introduce SSE support in WebClient
Issue: SPR-14539
2016-12-21 17:24:45 +01:00
Sebastien Deleuze
69b69442bc Add ServerSentEventHttpMessageReader
This HTTP message reader parse incoming Server-Sent
Events and turn them into Flux<String>, Flux<Pojo>
or Flux<ServerSentEvent>.

Issue: SPR-14539
2016-12-21 17:07:41 +01:00
Sebastien Deleuze
183b326f6d Add ServerSentEvent#toString() 2016-12-21 16:46:43 +01:00
Sebastien Deleuze
419d2b4e0a Polish ServerSentEventHttpMessageWriterTests 2016-12-21 16:46:43 +01:00