Commit Graph

16860 Commits

Author SHA1 Message Date
Juergen Hoeller f6fdffd663 Lazily retrieve delegate beans in AsyncConfigurer and CachingConfigurer
Introduces a configure method pattern for Supplier-style configuration and a common SingletonSupplier decorator for method reference suppliers. Also declares jcache.config and jcache.interceptor for non-null conventions.

Issue: SPR-17021
2018-07-14 19:29:32 +02:00
Juergen Hoeller 680afa75d8 ListableBeanFactory.getBeansOfType does not include null bean entries
Issue: SPR-17034
2018-07-14 01:02:39 +02:00
Rossen Stoyanchev 24a30baa2a Typos in InMemoryWebSessionStore 2018-07-13 17:51:23 -04:00
Rossen Stoyanchev 43fbd63254 Add maxSessions, getSessions, removeExpiredSessions
This commit removes the session threshold check added recently which
is not effective since maxIdleTime is usually much longer than the
frequency of checks. The lazy triggering of expiration checks during
create or retreive are simple and the most effective

This commit also adds a maxSessions limit on the total number of
sessions that can be created at any one time, a getSessions method
for management purposes, and a removeExpiredSessions public API
for manual triggering of expiration checks.

Issue: SPR-17020, SPR-16713
2018-07-12 16:12:19 -04:00
Brian Clozel 75fa9c4266 Fix checkstyle issues 2018-07-12 21:54:32 +02:00
Brian Clozel 038af9a303 Improve unknown status codes handling by WebClient
Prior to this commit, `WebClient` would throw `IllegalArgumentException`
when receiving an HTTP response with an unknown HTTP status code.

This commit is a follow up of SPR-16748 (supporting non-standard HTTP
status codes on the reactive `ClientHttpResponse`), and is mirroring
SPR-15978 (supporting non-standard HTTP status codes in `RestTemplate`).

With this change, `WebClient` now tolerates unknown status codes in some
cases, while not offering that choice as a first class citizen:
`HttpStatus` is still the preferred way to deal with HTTP status codes.

Here's how `WebClient` will behave when fetching the full response:

```
// Given a remote endpoint returning a "123" HTTP status code
Mono<ClientResponse> result = this.webClient.get()
				.uri("/status/123")
				.exchange();

// will still throw an IllegalArgumentException
HttpStatus status = result.block().statusCode();

// is safe and will return 123
int statusCode = result.block().rawStatusCode();
```

Resolving directly the response body with `retrieve()` is different.

```
// will send an error signal with a UnknownHttpStatusCodeException
Mono<String> result = this.webClient.get()
				.uri("/status/123")
				.retrieve()
				.bodyToMono(String.class);
```

In general, `WebClient` will provide high-level support
for well-known HTTP status codes, like error handling with
`WebClient.ResponseSpec#onStatus`.

For such support with unknown status codes, it is better to rely
on lower level constructs such as `ExchangeFilterFunction`.

Issue: SPR-16819
2018-07-12 19:08:08 +02:00
Juergen Hoeller f123d6c3bc Upgrade to Netty 4.1.27 and Commons Pool 2.6 2018-07-12 16:53:37 +02:00
Rossen Stoyanchev 32b75221b3 Improve expired session check algorithm
1. Add session count threshold as am extra pre-condition.
2. Check pre-conditions for expiration checks on every request.

Effectively an upper bound on how many sessions can be created before
expiration checks are performed.

Issue: SPR-17020
2018-07-11 15:59:18 -04:00
Rossen Stoyanchev e9ed45ee3b Fix code completion typo 2018-07-11 11:13:57 -04:00
Rossen Stoyanchev 7b3a72f483 Warn when SimpleAsyncTaskExecutor is used
Issue: SPR-16203
2018-07-11 11:10:03 -04:00
Rossen Stoyanchev 1b1bc7f5b5 Switch defaults and model for logging sensitive data
Issue: SPR-17029
2018-07-11 11:10:03 -04:00
Rossen Stoyanchev a40d25a760 Remove no-op classes in web-related Java config 2018-07-11 11:10:03 -04:00
Rossen Stoyanchev 3d6e38bb43 Conditional registration of task scheduler for SockJS
Issue: SPR-16189
2018-07-11 11:10:03 -04:00
Rossen Stoyanchev 6aa6d91ea9 Remove deprecated constructors in WebSocket config
In preparation for SPR-16189.
2018-07-11 11:10:03 -04:00
Juergen Hoeller c2fbd9f321 Upgrade to Rome 1.11 and OpenPDF 1.1 2018-07-11 16:48:12 +02:00
Juergen Hoeller 2ede6f65b4 Upgrade to Netty 4.1.26 and Undertow 2.0.10 2018-07-11 15:48:37 +02:00
Juergen Hoeller 6887802526 Fallback to ClassLoader.defineClass for Lookup.defineClass LinkageError
Issue: SPR-16902
2018-07-10 22:13:57 +02:00
Juergen Hoeller 3a4b5c2ade RootBeanDefinition publicly exposes target type as ResolvableType
Issue: SPR-17028
2018-07-10 19:28:12 +02:00
Juergen Hoeller a1d209726c Upgrade to ASM master (6.2+) and CGLIB 3.2.7
Issue: SPR-16398
2018-07-10 18:51:01 +02:00
Stephane Nicoll aabc5d9766 Merge pull request #1880 from GuiRitter:patch-2
* pr/1880:
  Fix typo
2018-07-10 15:48:11 +02:00
Guilherme Alan Ritter 7f54ae109a Fix typo
Closes gh-1880
2018-07-10 15:39:31 +02:00
Brian Clozel 818e4b0776 Refine Content-Range support for Resources
This commit restricts the support of `"Content-Range"` when returning
`Resource` instances from Controllers - now only "HTTP 200 OK" responses
will be considered, as Controllers might want to handle content range
themselves.

Issue: SPR-16921
2018-07-10 12:11:23 +02:00
xiexed d5df097e0e Small typo fixes in WebSocketHandler doc 2018-07-09 14:27:23 -04:00
Rossen Stoyanchev 931581a1e0 Polish Reactive Spring Web section 2018-07-09 14:27:23 -04:00
Brian Clozel d00f6f09a5 Polish ContentCachingRequestWrapper
Issue: SPR-15762
2018-07-09 19:15:29 +02:00
zilong6 4d0800f392 Improve ContentCachingRequestWrapper performance
This commit improves the performance of `read` method variants
to write to the cache in an optimized way.

Issue: SPR-15762
2018-07-09 19:15:21 +02:00
Arjen Poutsma 2ac6a15f6f Add setBearerAuth method
Issue: SPR-16997
2018-07-09 17:06:55 +02:00
Arjen Poutsma a663454fad Changed Basic Authentication consumer to setBasicAuth method
This commit changes the Basic Authentication Consumer<HttpHeaders> to
a basic setBasicAuth(String, String) method.

Issue: SPR-16913
2018-07-09 16:41:51 +02:00
Juergen Hoeller a80c5121fe Polishing 2018-07-09 15:53:44 +02:00
Juergen Hoeller d9e8d3bbe1 Custom "jdbcExceptionTranslator" on HibernateJpaDialect
Also available on LocalSessionFactoryBean through HibernateExceptionTranslator, as with our former Hibernate 3 support.

Issue: SPR-17015
2018-07-09 15:52:36 +02:00
Juergen Hoeller 39d455073a Update ref doc references to Number/Currency/PercentStyleFormatter
Issue: SPR-17022
2018-07-09 15:48:45 +02:00
Juergen Hoeller 833343f17c Specifically rethrow IllegalAccessError in isPresent/resolveClassName
Issue: SPR-17018
2018-07-09 14:31:45 +02:00
Juergen Hoeller fd0220b85c Suppress rawtypes warning for createReferenceArray 2018-07-09 14:28:15 +02:00
stsypanov 6d6aa72e8f improve performance of projection instantiation 2018-07-09 13:39:23 +02:00
Sam Brannen 581acb62a0 Refine wording 2018-07-08 14:11:04 +02:00
Sam Brannen 8d09222799 Improve description of return value for queryForList(..) 2018-07-08 13:34:56 +02:00
Rossen Stoyanchev 4bd22eeb13 Fallback logger for logging in http and codec packages
Issue: SPR-17012
2018-07-07 10:54:03 -04:00
Rossen Stoyanchev bca9f51092 Polish hint for suppressing logging at Encoder/Decoder 2018-07-06 20:32:08 -04:00
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 7746878b50 Remove workaround for Reactor Netty #171 2018-07-06 15:44:24 -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
Juergen Hoeller b4fc7943e1 Make javax.inject.Provider impl invisible for nested class introspection
Issue: SPR-17014
2018-07-06 13:20:03 +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