Commit Graph

2527 Commits

Author SHA1 Message Date
Stephane Nicoll
ea18fe58e4 Remove useless checked exception throw clause 2017-03-02 12:16:28 +01:00
Stephane Nicoll
ad9d912009 Merge branch '1.5.x' 2017-03-02 12:13:51 +01:00
Stephane Nicoll
0d61f92479 Ignore URI when local.mongo.port is set
This commit makes sure that if `local.mongo.port` is set, a `MongoClient`
on the embedded MongoDB instance is created. When an embedded instance
is detected, only the `host` property is used and the `uri` is ignored if
set.

This makes sure that the auto-configured `MongoClient` automatically
switches to the embedded server, even if a production uri has been
specified.

Closes gh-8219
2017-03-02 11:50:11 +01:00
Phillip Webb
58ac67eb27 Merge branch '1.5.x' 2017-03-02 00:09:56 -08:00
Phillip Webb
3ee7dae09b Merge branch '1.4.x' into 1.5.x 2017-03-01 23:44:40 -08:00
Phillip Webb
f1012c104a Polish 2017-03-01 23:29:20 -08:00
Phillip Webb
987b6c956e Polish 2017-03-01 20:43:04 -08:00
Phillip Webb
57111aba22 Get published DataSource from EntityManager
Update DataSourceInitializedPublisher to always attempt to obtain the
published DataSource directly from the EntityManager. In the case where
the EntityManager doesn't provide a DataSource, the previous logic is
used.

Fixes gh-8296
2017-03-01 20:42:26 -08:00
Andy Wilkinson
205faa1950 Merge branch '1.5.x' 2017-03-01 15:08:12 +00:00
Andy Wilkinson
70472b36f1 Merge branch '1.4.x' into 1.5.x 2017-03-01 15:07:06 +00:00
Andy Wilkinson
59d3a79c82 Avoid eager initialization when finding beans by annotation
Closes gh-8269
2017-03-01 15:05:54 +00:00
Andy Wilkinson
373474f8f6 Merge branch '1.5.x' 2017-03-01 14:37:18 +00:00
Andy Wilkinson
4390c81115 Merge branch '1.4.x' into 1.5.x 2017-03-01 14:37:10 +00:00
Andy Wilkinson
8a326a8713 Simplify BeanTypeRegistry by requiring a DefaultListableBeanFactory
Closes gh-8439
2017-03-01 14:36:26 +00:00
Stephane Nicoll
cf64d9fd35 Reuse auto-configured Validator in WebFlux
This commit makes sure that if a `Validator` is auto-configured, it is
reused as the `webFluxValidator`. This is pretty much the same thing as
what was done recently for Spring MVC.

Since the infrastructure is now shared, the package protected class has
been published in the `.validation` package.

Closes gh-8400
2017-02-28 15:49:21 +01:00
Stephane Nicoll
deaa6089b0 Move HttpHandler configuration to a dedicated auto-configuration
An `HttpHandler` bean must be provided once the infrastructure triggered
by `@EnableWebFlux` has been processed. Rather than creating a
`HttpHandler` in that auto-configuration, this commit moves it to a
dedicated auto-config, like we do for `DispatcherServlet` for
servlet-based webapps.

As this is the only bean we auto-configure in a functional fashion, the
`WebFluxFunctionalAutoConfiguration` is now merged with this new
auto-configuration, making its purposes clearer.

Cloess gh-8436
2017-02-28 15:18:23 +01:00
Phillip Webb
a4bcd20b64 Merge branch '1.5.x' 2017-02-27 20:43:18 -08:00
Phillip Webb
ca1540cefe Update header copyright for changed files 2017-02-27 20:41:18 -08:00
Phillip Webb
77f6ed8357 Further rework Spring MVC JSR-303 validation
Rework Spring MVC JSR-303 validation support a little more to move
most of the creation logic to the wrapper class. Also rename
`SpringValidatorAdapterWrapper` -> `WebMvcValidator`.

See gh-8223
2017-02-27 20:41:18 -08:00
Phillip Webb
7ed1a26c2d Fix test failures when running in Eclipse
Update MultipartAutoConfigurationTests to reset the Tomcat URL factory.
2017-02-27 20:41:18 -08:00
Phillip Webb
5867cd6175 Polish 2017-02-27 20:41:18 -08:00
Phillip Webb
47b00c086c Polish 2017-02-27 13:56:17 -08:00
Stephane Nicoll
d1d70b0207 Merge branch '1.5.x' 2017-02-27 19:10:03 +01:00
Stephane Nicoll
0435f122d4 Rework JSR-303 validation exposure with Spring MVC
This commit improves the initial solution by actually overriding the
`mvcValidator` `@Bean`. This gives us more control as whether a custom
validator has been specified or not. We now wrap it regardless of it
being custom or provided by auto-configuration.

Closes gh-8223
2017-02-27 19:09:29 +01:00
Stephane Nicoll
c333ccfe20 Merge branch '1.5.x' 2017-02-27 16:16:21 +01:00
Stephane Nicoll
d8f62c46ad Prevent warning due to BPP dependency
`MethodValidationPostProcessor` requires a `Validator` so we need to flag
it as an infrastructure bean to prevent an additional log that indicates
it won't be post-processed.

We obviously don't want to post-process the `Validator` here so adding the
additional meta-data is a good idea anyway.

Closes gh-8422
2017-02-27 16:16:09 +01:00
Stephane Nicoll
c5595f296c Add support for Mock test with WebFlux
This commit add mock support for WebFlux with an infrastructure similar
to what `WebMvcTest` provides. `@WebFluxTest` can be used to test
controllers with a narrowed classpath that is relevant to WebFlux. Also,
`@SpringBootTest` now starts WebFlux in "mock" mode by default and
`@AutoConfigureWebTestClient` can be used to inject a `WebTestClient`
connected to the `ApplicationContext`.

To make that happen, a `ReactiveWebApplicationContext` interface has been
introduced to mirror what `WebApplicationContext` currently does. Things
are still a bit volatile at this point and that infra may move to Spring
Framework at some point.

Closes gh-8401
2017-02-27 15:05:34 +01:00
Brian Clozel
3a8be10be8 Enable Tomcat, Jetty and Undertow reactive auto-conf
Closes gh-8403
2017-02-24 17:46:04 +01:00
Stephane Nicoll
f1d4d8434b Hide javax.servlet.SessionTrackingMode
The server's session can now be configured in both a servlet and a
reactive environment. The latter has not requirement on the servlet API
and this commit removes the requirement to the `SessionTrackingMode`
enum.

Closes gh-8402
2017-02-24 17:41:39 +01:00
Brian Clozel
8317977e1b Add WebFlux auto-configuration
This commit creates auto-configuration classes for both the
annotation and functional variants of the WebFlux framework.

They provide the basic support to get started with those, by
creating the required `HttpHandler` using the provided application
context (for annotation) or `RouterFunction`s (for functional).

They do support `WebFilter` registration and a few advanced
features such as resource handling, `messageReaders|Writers`
and `ViewResolver` auto-registration.

Closes gh-8386
2017-02-24 13:03:11 +01:00
Brian Clozel
656b509f03 Add support for reactive web servers auto-configuration
This commit adds the auto-configuration for creating reactive
`EmbeddedWebServer` instances. This adds support for the
following servers: Reactor Netty, Tomcat, Jetty and Undertow.

Fixes gh-8302
Fixes gh-8117
2017-02-24 13:03:11 +01:00
Brian Clozel
0b162e894b Manage EmbeddedWebServer in ReactiveWebApplicationContext
This commit adds an `EmbeddedWebServer` instance to the
`ReactiveWebApplicationContext` and ties it to the application
lifecycle.

To launch a reactive web application, two elements are required
from the context:

* a `ReactiveWebServerFactory` to create a server instance
* a `HttpHandler` instance to handle HTTP requests

Closes gh-8337
2017-02-24 13:03:11 +01:00
Brian Clozel
f331ac133f Add reactive web server infrastructure
This commit adds the infrastructure for creating and customizing
reactive embedded web servers. Common configuration has been refactored
into the new `ConfigurableEmbeddedWebServer` interface.

See gh-8302
2017-02-24 13:03:11 +01:00
Stephane Nicoll
a38d2456c3 Merge branch '1.5.x' 2017-02-24 11:05:27 +01:00
Stephane Nicoll
4aa99b9531 Avoid exposing several javax.validaton.Validator beans
This commit makes sure that the Spring `Validator` used by the MVC
layer doesn't expose a JSR-303 contract, if any.

The default implementation of the `mvcValidator` is
`LocalValidatorFactoryBean`. While this object is exposed as a Spring
`Validator` only, its runtime capabilities expose that contract as well
as the standard `Validator` and `ValidatorFactory` ones.

Concretely, if an auto-configuration is checking if a
`javax.validation.Validator` bean is missing, the condition will match
since we only know about "advertized types": beans haven't been created
yet so we can't inspect their runtime capabilities. Since the condition
match, we will auto-configure a bean. At runtime though, we're no longer
ale to inject a `javax.validation.Validator` by type since two candidates
are available.

This commit introduces `SpringValidatorAdapterWrapper`, a wrapper class
on any `SpringValidatorAdapter` (`LocalValidatorFactoryBean` being one of
the available implementations) that only exposes the Spring contract.

Also, if a `javax.validation.Validator` bean is available, we will use it
for the MVC layer, rather than creating a new one.

Closes gh-8223
2017-02-24 11:01:42 +01:00
Andy Wilkinson
4ff159adbe Merge branch '1.5.x' 2017-02-22 12:19:14 +00:00
Andy Wilkinson
b034a505a5 Polish 0f42c5dd
- Apply standard code formatting
- Add class javadoc to MultipleResourceServerConfigurationTests
- Add missing @Override annotations
- Remove unused ExpectedException field
- Remove use of SpringApplicationBuilder from the tests
- Use @ImportAutoConfiguration to import auto-configuration
- Add assertions to verify that the orders haven't been changed
- Remove unnecessary mocking of EmbeddedServletContainerFactory

See gh-8347
2017-02-22 12:16:05 +00:00
Dave Syer
c544aff72f Merge remote-tracking branch 'origin/1.5.x' 2017-02-22 11:32:20 +00:00
Dave Syer
0f42c5dd94 Check there is only one ResourceServerConfiguration before modifying
Fixes gh-8347
2017-02-22 11:30:17 +00:00
Madhura Bhave
b8a38d60b7 Merge branch '1.5.x' 2017-02-21 12:14:23 -08:00
Madhura Bhave
67810abd9e Match ResourceServerCondition if JWK config present
Closes gh-8350
2017-02-21 12:02:49 -08:00
Stephane Nicoll
91009cfc01 Merge branch '1.5.x' 2017-02-20 14:04:55 +01:00
Stephane Nicoll
43a534f4ca Polish contribution
Closes gh-8195
2017-02-20 14:03:07 +01:00
Mathieu Ouellet
fa8f0a6136 Add schema validation options for embedded LDAP
See gh-8195
2017-02-20 12:07:53 +01:00
Stephane Nicoll
4304cdb91a Merge branch '1.5.x' 2017-02-16 10:08:02 +01:00
Stephane Nicoll
f57ddff478 Remove dead code
Closes gh-8305
2017-02-16 10:04:57 +01:00
Madhura Bhave
b4134e239e Add autoconfiguration for JWKTokenStore
If `jwk.key-set-uri` is present.

Closes gh-4437
2017-02-15 12:05:29 -08:00
Andy Wilkinson
04a87ee4c1 Merge branch '1.5.x' 2017-02-15 17:25:18 +00:00
Andy Wilkinson
01729cc1d2 Merge branch '1.4.x' into 1.5.x 2017-02-15 17:25:07 +00:00
Andy Wilkinson
9e1238e286 Consider resource loader path when checking Groovy template availability
Closes gh-8304
2017-02-15 17:24:57 +00:00