Commit Graph

652 Commits

Author SHA1 Message Date
Rossen Stoyanchev
2874dd75ca Fine-tune WebFlux logging at HTTP/WebSocket level
1. Use special category prefix "spring-web.reactivestreams" for logging
of reactive streams signals in spring-web, since those are quite
verbose would fill the logs at TRACE.

2. Add and use loggers in request and websocket session implementations
separate from reactive streams bridge for regular TRACE logging.

3. Improve log messages and add where missing (e.g. for Reactor)

Issue: SPR-16898
2018-07-06 17:33:16 -04:00
Rossen Stoyanchev
bc3cf0eeb8 Expose request id at the ServerHttpRequest level
Hiding it (at AbstractServerHttpRequest) complicates matters since
requests are often mutated and decorated, plus it's also possible to
implement the interface directly (we've one, albeit corner case).

Issue: SPR-16966
2018-07-06 15:44:24 -04:00
Rossen Stoyanchev
5dc49b16ea Correlated messages at HTTP adapter + WebSocket level
Issue: SPR-16966
2018-07-06 15:44:18 -04:00
Rossen Stoyanchev
7be2943c03 Simplify WebSocket client implementationss in WebFlux
1. Eliminate WebSocketClientSupport base class whose main value was
to provide logging but those methods get in the way of inserting a
log prefix.

2. Remove checks and synchronization in lifecycle methods of Jetty
client since underlying Jetty client already has that.
2018-07-06 15:17:11 -04:00
Sebastien Deleuze
fd69c90fcb Add ServerResponse extensions for json, xml and html
Issue: SPR-17017
2018-07-06 14:52:11 +02:00
Juergen Hoeller
2cd006923c Polishing 2018-07-06 14:38:29 +02:00
Sebastien Deleuze
c0264072ab Avoid ServerResponse static imports in WebFlux router DSL
Provide functions like ok() in RouterFunctionDsl to avoid
ServerResponse static imports.

Issue: SPR-17009
2018-07-06 13:50:27 +02:00
Arjen Poutsma
37a3765a4e Fix checkstyle errors 2018-07-06 13:38:17 +02:00
Arjen Poutsma
490302ebf8 Added RequestPredicates.methods(HttpMethod...)
Added a predicate that tests for multiple HTTP methods.
2018-07-06 12:01:16 +02:00
Arjen Poutsma
91e96d8084 Improve RouterFunction builder
This commit improves the RouterFunctions.Builder based on conversations
had during the weekly team meeting.

Issue: SPR-16953
2018-07-06 12:01:08 +02:00
Rossen Stoyanchev
5cdc26770e Correlated WebClient log messages
Issue: SPR-16966
2018-07-05 08:30:23 -04:00
Rossen Stoyanchev
82310660fd Correlated encoding/decoding log messages via hints
Issue: SPR-16966
2018-07-05 08:28:15 -04:00
Rossen Stoyanchev
fd90b73748 Correlated WebFlux server log messages
Issue: SPR-16966
2018-07-05 08:27:13 -04:00
Rossen Stoyanchev
8bffb6a798 Add defaultRequest option to WebClient.Builder
Issue: SPR-16873
2018-07-03 12:44:29 -04:00
Rossen Stoyanchev
da5b705328 Polish default headers/attributes in WebClient 2018-07-03 12:44:29 -04:00
Rossen Stoyanchev
907a306ee2 Fix locally failing test in FlushingIntegrationTests 2018-06-29 18:15:52 -03:00
Juergen Hoeller
e22466e9d5 Polishing 2018-06-29 19:44:15 +02:00
Juergen Hoeller
df6b01a329 Remove deprecated classes and methods from early 5.0.x phase 2018-06-29 19:44:08 +02:00
Juergen Hoeller
d34e6f7f70 Polishing 2018-06-28 18:02:07 +02:00
Juergen Hoeller
8ad5299f4a Polishing 2018-06-28 17:12:29 +02:00
Juergen Hoeller
40efcc933c Polishing 2018-06-28 14:51:33 +02:00
Arjen Poutsma
794693525f Polishing 2018-06-28 14:09:34 +02:00
Arjen Poutsma
a691065d05 Polishing 2018-06-28 11:27:30 +02:00
Arjen Poutsma
8202052b38 Introduce RouterFunction builder
This commit introduces RouterFunctions.Builder, a new way to build
router functions that does not require static imports, thus being more
discoverable and convenient.

Issue: SPR-16953
2018-06-28 11:23:38 +02:00
Phillip Webb
a89e716cc7 Use tabs rather than spaces in tests
Update tests to ensure that tabs are used instead of spaces. Also
consistently apply a new line at the end of each file.

Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
1c25cec44f Polish test code
Polish a few issue identified when adding checkstyle to the
build. Although checkstyle is not enforcing rules on tests,
these are a few minor changes that are still worth making.

Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
81451aa800 Organize imports
Reorganize imports to ensure consistent ordering. This commit also
expands any `.*` static imports in favor of using fully-qualified
method references.

Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
b220d94cc2 Never use parenthesis for single lambda arguments
Update all lambdas that take a single argument so that parenthesis
are never used.

Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
5cedd0d5d4 Consistently use tabs rather than spaces
Update code that has accidentally used spaces instead of tabs.
Also remove all trailing whitespace.

Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
0b53c1096a Always use 'this.' when accessing fields
Ensure that `this.` is used consistently when accessing class
fields.

Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
eeebd51f57 Use consistent class design
Update all classes so that inner classes are always last. Also
ensure that utility classes are always final and have a private
constructor and make exceptions final whenever possible.

Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
0ad0f341bd Don't use single letter catch variables
Update existing catch blocks to ensure that `ex` is always used
in preference to `e` or `t` as the variable name.

Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
e9d1b39aff Apply consistent copyright header
Add copyright header to `package-info.java` files and fix a few
malformed headers on existing java files.

Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
c3a17dfd47 Ensure all files end with a newline
Update all files to ensure that they always end with a new line.

Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
e0480f75ac Fix javadoc checkstyle issues
Fix checkstyle violations for javadoc.

Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Napster
8aa6e5bfea Undertow WebSocket sessions use shared ByteBufferPool
Issues: SPR-16957
2018-06-25 17:46:25 -03:00
Rossen Stoyanchev
7ccd2b024d Refine logging for async requests
Issue: SPR-16898
2018-06-25 14:42:29 -03:00
Rossen Stoyanchev
900bc8a2e3 Logging improvements for WebFlux
Issue: SPR-16898
2018-06-22 22:44:24 -04:00
Brian Clozel
4a26f93a0d WebClient writes Content-Length for Mono bodies
In SPR-16892, the `EncoderHttpMessageWriter` has been improved to write
`"Content-Length"` HTTP response headers if the response body is of type
`Mono` (i.e. the actual content length is easily accessible without
buffering a possibly large response body). That change was relying on
the fact that the server side is using a `ChannelSendOperator` to delay
the writing of the body until the first signal is received.

This strategy is not effective on the client side, since no such channel
operator is used for `WebClient`. This commit improves
`EncoderHttpMessageWriter` and delays, for `Mono` HTTP message bodies
only, the writing of the body so that we can write the
`"Content-Length"` header information once we've got the body resolved.

Issue: SPR-16949
2018-06-19 11:51:45 +02:00
Rossen Stoyanchev
03c305136d Fix failing tests 2018-06-18 20:20:32 -04:00
Rossen Stoyanchev
afa45950ff Polish ExchangeFilterFunction[s] 2018-06-13 17:14:49 -04:00
Juergen Hoeller
9c36b53833 Upgrade to JAXB 2.3.0.1, Aalto XML 1.1, Rome 1.10 2018-06-11 22:01:51 +02:00
Brian Clozel
417354da8a Remove dependency management noise from POMs
Prior to this commit, the generated POMs for Spring Framework modules
would contain unneeded/harmful information from the Spring Framework
build:

1. The BOM imports applied to each module by the dependency
management plugin, for example for Netty or Reactor Netty.
Spring should not export that opinion to its POMs.

2. The exclusion of "org.slf4:jcl-over-slf4j" from *all* dependencies,
which made the POMs much larger than necessary and suggested to
developers that they should exclude it as well when using all those
listed dependencies. In fact, only Apache Tiles currently brings that
transitively.

This commit removes that information from the POMs.
The dependencyManagement Gradle plugin is disabled for POM generation
and we manually resolve the dependency versions during the generation
phase.
The Gradle build is streamlined to exclude "org.slf4:jcl-over-slf4j"
only when necessary.

Issue: SPR-16893
2018-06-11 15:57:54 +02:00
Rossen Stoyanchev
86c861516d Accept Predicate instead of HandlerTypePredicate
Issue: SPR-16336
2018-06-08 15:32:07 -04:00
Rossen Stoyanchev
19dc981685 Path prefixes for groups of controllers
Issue: SPR-16336
2018-06-07 18:18:42 -04:00
Rossen Stoyanchev
72b1d4c648 Remove explicit references to Reactor Netty version
...now that 0.8 is also listed in the Reactor bom.

Issue: SPR-16387
2018-06-06 14:35:54 -04:00
Rossen Stoyanchev
3acb96efd0 CachingResourceResolver varies by known codings only
Issue: SPR-16381
2018-06-04 23:30:35 -04:00
Rossen Stoyanchev
010352163b Eliminate the need for Encoder#getContentLength
Issue: SPR-16892
2018-06-04 15:48:47 -04:00
Sebastien Deleuze
f2ee18493f Make RouterFunctionDsl extensible
Issue: SPR-16897
2018-06-04 15:35:25 +02:00
Rossen Stoyanchev
a3216432b5 Polish
Issue: SPR-16387
2018-05-31 15:38:30 -04:00