Commit Graph

14114 Commits

Author SHA1 Message Date
Juergen Hoeller e9019cd7d1 Polishing 2017-02-10 10:56:40 +01:00
Juergen Hoeller e1bb697cf9 Correct explanation of example patterns
Issue: SPR-15240
2017-02-10 10:56:17 +01:00
Juergen Hoeller c0f4d78ef9 Use Map.getOrDefault in getSqlType implementation
Issue: SPR-15238
2017-02-10 10:54:54 +01:00
Juergen Hoeller 81aca78579 Delegate to common ClassUtils.getQualifiedName
Issue: SPR-15237
2017-02-10 10:53:08 +01:00
Juergen Hoeller ed85337901 MockHttpServletRequest exposes "HTTP/1.1" as default protocol
Issue: SPR-15232
2017-02-10 10:47:36 +01:00
Juergen Hoeller 65d8d698cd Test for ObjectFactory injection at constructor level
Issue: SPR-15222
2017-02-10 10:42:48 +01:00
Juergen Hoeller 448ea4cdfe Consistent logging in ignoreResourceNotFound scenarios
Issue: SPR-15218
2017-02-10 10:41:10 +01:00
Juergen Hoeller b630c9bea7 Clear synchronization before triggering afterCompletion callbacks
Issue: SPR-15194
Issue: SPR-11590
2017-02-10 10:39:33 +01:00
Juergen Hoeller 5015613934 Enforce delegation through single overridable registerBean method
Issue: SPR-14832
2017-02-10 10:38:01 +01:00
Juergen Hoeller caf11a49ff Drop unused LobCreator synchronization utilities
Issue: SPR-13827
2017-02-10 10:36:52 +01:00
Brian Clozel 5488906d0c Polish
Issue: SPR-15206
2017-02-09 22:36:28 +01:00
Greg Turnquist e4be7131ca Implement reactive HiddenHttpMethodFilter
Provides the ability to embed an HTTP verb inside a hidden form field
(like Thymeleaf's th:method operator).

Issue: SPR-15206
2017-02-09 22:35:57 +01:00
Brian Clozel 8d43f45515 Reduce API Surface in PathPatternRegistry
This commit reduces the exposition of `PathPattern` instances throughout
the `HandlerMapping` API and removes some methods from its public API.

Issue: SPR-14544
2017-02-09 22:09:46 +01:00
Rob Winch 4999898617 Update to Gradle 3.4-rc-2
We need to explicitly apply Dependency Management to the root
project since it depends on modules that use dependency management.
We need to ensure dependency management is applied after propdeps-maven
to avoid an ordering issue [1]

An update to propdeps was necessary to be compatable with Gradle
3.4+

[1] https://github.com/spring-gradle-plugins/dependency-management-plugin/issues/149

Issue: SPR-15207
2017-02-09 13:26:33 -06:00
Arjen Poutsma 6dd0e6bfac Reverse "Correct generic type in BodyExtractor for form data"
This commit reverses 9efa976d31, and adds
code comments to highlight why some Body[Inserter|Extractor] instances
returned from Body[Inserters|Extractors] use
ServerHttp[Request|Response] instead of using
Reactive[Input|Output]Message.
2017-02-09 17:23:20 +01:00
Arjen Poutsma 11efbaead9 Ignore JsonStreamingIntegrationTests
Ignoring JsonStreamingIntegrationTests for now, @sdeleuze is aware of the need to fix.
2017-02-09 16:43:12 +01:00
Stephane Nicoll 12de9643a6 Merge pull request #1322 from msysyamamoto:fix-javadoc
* pr/1322:
  Update copyright header
  Fix Javadoc in ContentResultMatchers
2017-02-09 16:06:12 +01:00
Stephane Nicoll 75b18d7b7b Update copyright header 2017-02-09 16:05:57 +01:00
Masayasu Yamamoto 6aa300d733 Fix Javadoc in ContentResultMatchers
Closes gh-1322
2017-02-09 16:04:46 +01:00
Brian Clozel 09d18f2ef5 Refactor HandlerMapping path match configuration
Since the introduction of `PathPatternRegistry`, the various path match
configuration flags are no longer needed in several places and that
configuration can live in the registry itself.

Issue: SPR-14544
2017-02-09 15:58:16 +01:00
Arjen Poutsma da4af6157e Added ClientResponse.cookies()
Added cookies() method on ClientResponse, that exposes the response
cookies.

Issue: SPR-15236
2017-02-09 15:04:07 +01:00
Arjen Poutsma 2a512d7b9f Introduce EntityResponse
This commit introduces the EntityResponse, an entity-specific subtype of
ServerResponse that exposes the entity itself.
2017-02-09 13:46:00 +01:00
Brian Clozel 47ac3379ea Do not use ParsingPathMatcher by default in Spring MVC 2017-02-09 11:21:33 +01:00
Brian Clozel 18c04815a7 Add PathPatternRegistry
This commit adds the new `PathPatternRegistry`, which  holds a
sorted set of `PathPattern`s and allows for searching/adding patterns

This registry is being used in `HandlerMapping` implementations and
separates path pattern parsing/matching logic from the rest. Directly
using `PathPattern` instances should improve the performance of those
`HandlerMapping` implementations, since the parsing and generation of
pattern variants (trailing slash, suffix patterns, etc) is done only
once.

Issue: SPR-14544
2017-02-09 11:21:33 +01:00
Brian Clozel a4da313a0a Polish
Issue: SPR-14544
2017-02-09 11:21:32 +01:00
Andy Clement f786feb5e1 Ensure correct recognition for start of match-the-rest path elements
Without this change the /{*foobar} and /** path elements were
not correctly enforcing that the first character they encounter
must be a separator. This problem was introduced when adjusting
the generated path element chains for these constructs. Originally
the generated chain included a SeparatorPathElement but in order for
these to match 'nothing' (i.e. /foo matches /foo/{*foobar}) the separator
path element was removed, so the separator enforcement needed moving
into the CaptureTheRestPathElement and WildcardTheRestPathElement.

Issue: SPR-14544
2017-02-09 11:09:38 +01:00
Andy Clement f58ffad939 Introduce PathPatternParser for optimized path matching
This commit introduces a PathPatternParser which parses request pattern
strings into PathPattern objects which can then be used to fast
match incoming string paths. The parser and matching supports the syntax
as described in SPR-14544. The code is optimized around the common usages
of request patterns and is designed to create very little transient
garbage when matching.

Issue: SPR-14544
2017-02-09 11:09:38 +01:00
Brian Clozel 6f029392c7 Move response status processing in InvocableHandlerMethod
Prior to this commit, WebFlux would look at the handler method
annotations (`@ResponseStatus`) for each handler execution, even calling
the expensive `synthesizeAnnotation`.

This commit moves this logic to the InvocableHandlerMethod so that this
executed once at instantiation time and for all result handlers.

Issue: SPR-15227
2017-02-09 10:30:02 +01:00
Juergen Hoeller ab50f7b0d5 Merge pull request #1320 from dreis2211/SPR-15237
Use Class.getTypeName() where appropriate
2017-02-09 00:25:01 +01:00
Violeta Georgieva 706c72e1c7 Simplify the calculation of UndertowServerHttpRequest.uri 2017-02-08 16:55:58 -05:00
Rossen Stoyanchev 9efa976d31 Correct generic type in BodyExtractor for form data 2017-02-08 16:46:58 -05:00
Christoph Dreis 5cfa7e71bb Use Class.getTypeName() where appropriate
Issue: SPR-15237
2017-02-08 20:36:41 +01:00
Rossen Stoyanchev f2967467e0 Improve writing in mock reactive request and response
Before this change the write Publisher was saved and Mono.empty()
returned from the write metohd which did not properly implement
the write contract since no writing ("consuming") was done.

This can be a problem in some cases. For example the request may appear
to succeed even if the publisher produces an error later when
subscribed to later after request handling completes.

This commit introduces a writeHandler function in the mock request and
response. By default it "writes" by consuming the content immediately,
which allows it to return a Mono<Void> that properly reflects when
writing is done, and it also caches the data so it may be replayed
later for test assertions.

For streaming scenario a custom writeHandler may be registered which
allows the custom handling to determine how long to stream before
cancelling so request handling may complete.

Issue: SPR-14590
2017-02-07 21:57:38 -05:00
Andy Clement d41d28f8ce Fix compilation of SpEL elvis/ternary expressions
Without this fix the compiled version of elvis
actual behaved differently to the interpreted version
if the value being queried was an empty string. This
is now fixed. It also now correctly handles the
query value being a primitive and addresses the
findings of SPR-15192 where some type inferencing
logic was trying to be too clever, that code has
been deleted.

Issue: SPR-15192
2017-02-06 09:43:10 -08:00
Sebastien Deleuze fe05d35292 Polish SseIntegrationTests 2017-02-06 18:24:55 +01:00
Sebastien Deleuze 6b9b0230c4 Introduce JSON streaming support
This commit introduces JSON streaming support which
consists of serializing HTTP request with
application/stream+json media type as line delimited JSON.

It also optimize Flux serialization for application/json by
using flux.collectList() and a single Jackson invocation
instead of one call per element previous strategy.
This change result in a x4 throughput improvement
for collection with a lot of small elements.

Issues: SPR-15095, SPR-15104
2017-02-06 18:14:53 +01:00
Stephane Nicoll f128feb1cc Document candidates index mechanism
Issue: SPR-14711
2017-02-06 16:19:51 +01:00
Stephane Nicoll 2fe310806c Merge pull request #1292 from dbrimley:master
* pr/1292:
  Polish
  Polish contribution
  Honour ErrorHandler if `Cache.put` fails
2017-02-06 15:27:51 +01:00
Stephane Nicoll 85b20aa08a Polish 2017-02-06 15:27:38 +01:00
Stephane Nicoll 908261b136 Polish contribution
Closes gh-1292
Issue: SPR-15188
2017-02-06 15:27:38 +01:00
David Brimley 3476d10efa Honour ErrorHandler if `Cache.put` fails
This commit makes sure that the `ErrorHandler` is invoked if the cache
fails to put an element (be it in the main cache or the exception cache).

See gh-1292
Issue: SPR-15188
2017-02-06 15:27:38 +01:00
Arjen Poutsma 7796c4db14 Introduce RenderingResponse
This commit introduces the RenderingResponse, a template
rendering-specific subtype of ServerResponse that exposes model and
template data.
2017-02-03 11:25:48 +01:00
Stephane Nicoll 71cdd61b33 Merge pull request #1311 from grimreaper:patch-3
* pr/1311:
  Polish javadoc
2017-02-03 07:38:07 +01:00
Eitan Adler 59bba3763d Polish javadoc
Closes gh-1311
2017-02-03 07:36:53 +01:00
Stephane Nicoll 48e834dfd1 Update copyright header 2017-02-03 07:34:39 +01:00
Stephane Nicoll 7e40bd73be Merge pull request #1312 from grimreaper:patch-2
* pr/1312:
  Polish javadoc
2017-02-03 07:30:23 +01:00
Eitan Adler 938c6a2acd Polish javadoc
Closes gh-1312
2017-02-03 07:29:50 +01:00
Sebastien Deleuze 02c4aff4ce Upgrade to Kotlin 1.1.0-beta-38 2017-02-03 00:33:04 +01:00
Ryan Pickett 654e14a86a Fix Javadoc in UriComponentsBuilder 2017-02-02 17:29:20 -05:00
Rossen Stoyanchev 1466c82f53 Better support for overriding base URI in WebClient
The base URI is ignored for requests that include a host.

WebClient exposes UriBuilder (rather than UriBuilderFactory) for
per-request URI building based on the base URI. That provides
full control to add or replace components of the base URI.
2017-02-02 17:24:18 -05:00