Commit Graph

690 Commits

Author SHA1 Message Date
Rossen Stoyanchev
782c595cf7 Polish 2017-06-22 18:33:27 -04:00
Eko Kurniawan Khannedy
ac68cc35c2 Ordered WebMvcConfigurer interceptor registrations
Issue: SPR-15620
2017-06-22 18:33:27 -04:00
Sebastien Deleuze
d5f9ad03a7 Support ScriptEngine#eval(String, Bindings) in ScriptTemplateView
Supporting ScriptEngine#eval(String, Bindings) when no render function
is specified allows to support use cases where script templates are
simply evaluating a script expression with an even more simplified
configuration.

This improvement also makes it possible to use script engines that
do not implement Invocable.

Issue: SPR-15115
2017-06-16 10:38:59 +02:00
Juergen Hoeller
7dd8dc62a5 Fixes for ignored tests after last week's nullability commit
Issue: SPR-15540
2017-06-13 11:37:58 +02:00
Stephane Nicoll
58242f2249 Polish 2017-06-13 10:13:14 +02:00
Stephane Nicoll
451b419624 Polish "Use Map#forEach instead of Map#entrySet#forEach"
Closes gh-1449
2017-06-12 14:37:33 +02:00
diguage
2efa06237a Use Map#forEach instead of Map#entrySet#forEach
See gh-1449
2017-06-12 14:37:33 +02:00
Juergen Hoeller
f813712f5b Consistent use of @Nullable across the codebase (even for internals)
Beyond just formally declaring the current behavior, this revision actually enforces non-null behavior in selected signatures now, not tolerating null values anymore when not explicitly documented. It also changes some utility methods with historic null-in/null-out tolerance towards enforced non-null return values, making them a proper citizen in non-null assignments.

Some issues are left as to-do: in particular a thorough revision of spring-test, and a few tests with unclear failures (ignored as "TODO: NULLABLE") to be sorted out in a follow-up commit.

Issue: SPR-15540
2017-06-07 14:19:15 +02:00
Brian Clozel
0557404715 Throw exception for illegal PathMatch configurations
With the new `ParsingPathMatcher` implementation, new patterns are now
allowed, such as `"/foo/{*bar}". The `"{*bar}"` segment will capture
everything until the end of the given path. Adding other elements after
that segment is illegal and will throw exceptions.

One can configure on a `PathMatchConfigurer` various options like
`useTrailingSlashMatch` and `useSuffixPatternMatch`; those options, when
enabled, will try to append suffixes like `".*"` and `"/"` to existing
path patterns. In case of a "capture the rest" pattern segment, those
options won't be honored.

This is why this commit ensures that an exception is thrown at the start
of the application if an illegal configuration is applied to the
`PathMatchConfigurer`.

Issue: SPR-15303, SPR-15558
2017-06-01 18:30:18 +02:00
Sebastien Deleuze
b47d713e14 Add missing @Nullable annotations on parameters
Issue: SPR-15540
2017-05-31 16:56:08 +02:00
Rossen Stoyanchev
48a5938cd4 Polish 2017-05-19 16:59:36 -04:00
Martin Švorc
bf83e4e861 Use original query string of forwarded request
Prior to this commit, the AbstractFlashMapManager has used the
originating URI but the query string of the forwarded request. That
resulted to FlashMap not being matched even when both originating
URI and query string matched the FlashMap attributes. The originating
query string is now used to match the forwarded request.

Issue: SPR-15505
2017-05-19 16:49:29 -04:00
Juergen Hoeller
25aef4d3cc ResponseStatusException reason is optional (with lazily constructed message)
Issue: SPR-15524
2017-05-06 12:53:03 +02:00
Rossen Stoyanchev
4d962a1793 Remove HttpStatus from HttpMessageConversionException
HttpMessageConverter's are client and server and arguably shouldn't
contain a server-side concept such a response status.

The status field is recent, it was added to differentiate 400 vs 500
errors with Jackson 2.9+ but there is no need for it since the same
distinction is reflected in raising an HttpMessageNotReadableException
vs a general HttpMessageConversionException.

Issue: SPR-15516
2017-05-05 14:44:08 -04:00
Rossen Stoyanchev
abe3cfd8de Flux<String> + "application/json" renders as text
Spring MVC now treats Flux<String> + "application/json" as (serialized)
text to be written directly to the response as is. This is consistent
with the rendering of String + "application/json".

Issue: SPR-15456
2017-04-25 12:47:13 -04:00
Rossen Stoyanchev
c67b0d6507 Properly support ResponseEntity<Flux<T>> in Spring MVC
Issue: SPR-15478
2017-04-25 12:03:59 -04:00
Rossen Stoyanchev
7df3d68b2a Replace WebMvcConfigurerAdapter with default methods
Issue: SPR-15465
2017-04-20 16:14:13 -04:00
Rossen Stoyanchev
d3b178a812 Consistent JSON array result for Flux<T> in Spring MVC
Issue: SPR-15456
2017-04-20 09:19:38 -04:00
Rossen Stoyanchev
a93698487e Fix handling for ResponseEntity<Flux<T>> in Spring MVC
Issue: SPR-15456
2017-04-20 09:19:38 -04:00
Rossen Stoyanchev
633544943f Polish 2017-04-20 09:19:38 -04:00
Rossen Stoyanchev
46a790f9be Remove EmitterProcessor#connect (dropped upstream) 2017-04-13 09:58:48 -04:00
Rossen Stoyanchev
043c7070e3 Polish default content type change
Issue: SPR-15367
2017-04-11 11:54:40 -04:00
Ryan O'Meara
4a890226ea Support for multiple default content types
Enhance FixedContentNegotiationStrategy and places where it is exposed
to also accept a list of media types.

Issue: SPR-15367
2017-04-11 11:54:40 -04:00
Rossen Stoyanchev
5d92a85fcb Mock Servlet request/response support Accept-Language
Issue: SPR-15209
2017-04-11 07:19:07 -04:00
Juergen Hoeller
15b5dd9f12 Polishing 2017-04-10 15:36:45 +02:00
Juergen Hoeller
ea98ee820a AcceptHeaderLocaleResolver returns default locale in case of no supported locale found
Issue: SPR-15426
2017-04-10 15:36:13 +02:00
Rossen Stoyanchev
de6f34893a Restore ResponseBodyEmitterReturnValueHandler constructor
Issue: SPR-15410
2017-04-04 14:23:47 -04:00
Rossen Stoyanchev
d9221fb87d Async boundary for Spring MVC reactive type streaming
Issue: SPR-15365
2017-04-04 11:22:40 -04:00
Rossen Stoyanchev
62c1e44db2 Spring MVC supports reactive return values
This commit adds support for reactive library types to be returned
directly from controller methods adapting them either to a
ResponseBodyEmitter (streaming) or DeferredResult (non-streaming).

The reactive libraries supported are the ones that can adapted to a
Reactive Streams Publisher through the ReactiveAdapterRegistry.

Issue: SPR-15365
2017-04-03 09:01:49 -04:00
Rossen Stoyanchev
ae1ed16cb8 Async return values refactoring in Spring MVC
Revise Javadoc on AsyncHandlerMethodReturnValueHandler to clarify its
main purpose is to prioritze custom async return value handlers ahead
of built-in ones. Also replace the interface from built-in handlers
which are prioritized already.

Remove DeferredResultAdapter and ResponseBodyEmitterAdapter --
introduced in 4.3 for custom async return value handling, since for
5.0 we will add built-in support for reactive types and the value of
these contracts becomes very marginal.

Issue: SPR-15365
2017-04-03 09:01:49 -04:00
Brian Clozel
fdd503152d VersionResourceResolver should delegate to the chain
Prior to this commit, the `VersionResourceResolver` implementations of
`resolveUrlPathInternal` would delegate to the resolver chain but would
never use the give result if the current request didn't match a
configured version strategy pattern.

This is a problem if the resolver supposed to resolve the resource path
is configured after a `VersionResourceResolver` in the resolver chain;
this means that other resolver never gets to participate in the result
of the chain.

Issue: SPR-15372
2017-03-24 14:14:43 +01:00
Juergen Hoeller
65ba865d70 Support for populating model attributes through data class constructors
Includes a new overloaded ModelAndView constructor with an HttpStatus argument, as well as a HandlerMethodArgumentResolverSupport refactoring (revised checkParameterType signature, actually implementing the HandlerMethodArgumentResolver interface).

Issue: SPR-15199
2017-03-24 12:15:45 +01:00
Arjen Poutsma
d414718467 Update MockServletContext to MediaTypeFactory
This commit changes the `MockServletContext.getMimeType` method to use
`MediaTypeFactory` instead of JAF. It also adds a `addMimeType(String,
MediaType)` method to customize the mime types returned from said
method.

Issue: SPR-14908
2017-03-21 09:39:22 -04:00
Rossen Stoyanchev
5ea5f81c00 Support flash attributes on ResponseEntity redirect
Issue: SPR-15176
2017-02-21 14:44:17 -05:00
Juergen Hoeller
1ddf8ec625 Polishing 2017-02-21 00:04:08 +01:00
Juergen Hoeller
73493bc490 Revised imports in tests (org.jetbrains.annotations.NotNull etc) 2017-02-20 23:00:22 +01:00
Juergen Hoeller
fc11321010 ServletRequestMethodArgumentResolver passes null references through (again)
Issue: SPR-15214
2017-02-20 23:00:07 +01:00
Juergen Hoeller
1ee0626c94 Polishing 2017-02-17 21:06:58 +01:00
Juergen Hoeller
199aa776c9 Support for Servlet 4.0 (PushBuilder argument, MockServletContext)
Issue: SPR-12674
2017-02-13 15:06:59 +01:00
Brian Clozel
47ac3379ea Do not use ParsingPathMatcher by default in Spring MVC 2017-02-09 11:21:33 +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
Juergen Hoeller
acf511ac0e Polishing 2017-02-02 20:11:06 +01:00
Juergen Hoeller
1b2dc3638f Revisit Assert to avoid single-arg assert methods (with refined messages)
Issue: SPR-15196
2017-01-30 22:15:55 +01:00
Sebastien Deleuze
2d95199466 Support i18n and nested templates in ScriptTemplateView
This commit changes the 3rd parameter passed to the rendering
function from String url to RenderingContext renderingContext.

RenderingContext contains 4 properties:
 - ApplicationContext applicationContext
 - Locale locale
 - Function<String, String> templateLoader
 - String url

Issue: SPR-15064
2017-01-25 17:23:20 +01:00
Juergen Hoeller
e8776f80da Revised CookieLocaleResolver parse exception handling
Issue: SPR-15182
2017-01-24 17:48:54 +01:00
Sebastien Deleuze
35d5dca571 Upgrade to Kotlin 1.1-beta-17
Spring Framework 5.0 now requires Kotlin 1.1+. This commit
also re-enable Kotlin JSR 223 unit tests.

Issue: SPR-15100
2017-01-19 13:09:38 +01:00
Juergen Hoeller
ac6aa53031 Drop outdated BeanFactoryLocator / beanRefContext.xml mechanism
Issue: SPR-15154
2017-01-17 13:58:37 +01:00
Sam Brannen
9ed66bf2eb Clean up warnings across code base 2017-01-07 01:54:38 +01:00
Philippe Marschall
19e77cd140 Remove use of Boolean constructors
Codacy warns us that there are several references to Boolean
constructors in the tests. Direct usage of the Boolean constructor is
discouraged and even deprecated in Java 9 [1]. Boolean constructor use
can easily be replaced with the constant instances.

This commit contains the following changes:

 - replace references to Boolean constructors with boolean constants in
   JSP tag tests
 - update the copyright year where necessary
 - BooleanComparatorTests is intentionally left unchanged as it should
   also work with the non-constant instances correctly

 [1] http://download.java.net/java/jdk9/docs/api/java/lang/Boolean.html#Boolean-boolean-

Issue: SPR-15076
2017-01-04 09:31:14 +01:00
Sebastien Deleuze
e78ea34711 Temporary rollback to Kotlin 1.0.6
Kotlin 1.1-M04 has a bug that makes the generated bytecode
not compatible with Kotlin 1.0.x. This bug should be fixed in
Kotlin 1.1-M05.
2017-01-03 18:07:49 +01:00