Commit Graph

2571 Commits

Author SHA1 Message Date
Dave Syer
14638e67bc Extended PropertiesLauncher class location logic
Update `PropertiesLauncher` so that classes can be loaded outside of
`BOOT-INF/classes`. You can use a subdirectory, or the root directory
of an external jar (but not the parent archive to avoid issues
with agents and awkward delegation models).

Fixes gh-8480
Closes gh-8486
2017-04-19 22:18:12 -07:00
Phillip Webb
5abc050a96 Support detection and with test initializers
Relax `SpringBootTestContextBootstrapper` rules so that a test can
specify an `ApplicationContextInitializer` and still have
`@SpringBootConfiguration` detected.

Prior to this commit detection would not occur because it's possible
that an initializer _could_ register configuration. This scenario is
actually quite unlikely to occur, certainly less likely than wanting to
use an initializer in combination with auto-detection.

Fixes gh-8483
2017-04-19 22:18:12 -07:00
Phillip Webb
c9561f031c Refine validator and MVC validator configuration
Update `ValidationAutoConfiguration` and `WebMvcAutoConfiguration` to
ensure as much as possible that only a single Validator bean of each
type is registered.

Validation auto-configuration now does the following:
- If no validator is found: Registers a `LocalValidatorFactoryBean`
  (providing both Spring and JSR validation)
- If the user defines a Spring & JSR validator: Backs off
- If the user defines only a JSR validator: Adapts it to a Spring
  validator (without exposing another JSR implementation)

WebMvcAutoConfiguration auto-configuration has been updated to make
MVC validation follow common Spring Boot patterns:
- If not validator beans are found (due to the user excluding
  ValidationAutoConfiguration) a new `mvcValidator` bean will be
  registered.
- If a single validator bean is found it will be used for MVC
  validation.
- If multiple validator beans are defined it will either use the one
  named `mvcValidator` or it will register a new `mvcValidator` bean

Any automatically registered `mvcValidator` bean will not implement
the JSR validator interface.

Finally, it is no longer possible to provide an MVC validator via a
`WebMvcConfigurer`.

Fixes gh-8495
2017-04-19 22:18:12 -07:00
Andy Wilkinson
b9be0e3e0f Skip actuator path extension content negotiation
Allow `PathExtensionContentNegotiationStrategy` to be bypassed by
actuator endpoints. Prior to this commit calling `/loggers/com.aaa.cab`
would return a HTTP 406 response due to `.cab` being a known extension.

Fixes gh-8765
2017-04-18 14:56:11 -07:00
Walter Seymore
f5f65463d2 Fail fast on getKeyFromServer() failure
Update `ResourceServerTokenServicesConfiguration` to fail fast if the
`getKeyFromServer()` call fails. Since the key is part of the singleton
`JwtAccessTokenConverter` bean there is not real way to refresh without
restarting the application.

A hard failure seems preferable to an inconsistent state.

Closes gh-8924
2017-04-18 14:56:10 -07:00
Phillip Webb
b2ae6b5f50 Merge branch '1.4.x' into 1.5.x 2017-04-17 22:14:45 -07:00
Phillip Webb
cdf3eadc95 Rename AbstractTemplateAvailabilityProvider
Rename `AbstractTemplateAvailabilityProvider` to
`PathBasedTemplateAvailabilityProvider`.

Closes gh-8913
2017-04-17 22:12:44 -07:00
Stephane Nicoll
e1f727719a Merge branch '1.4.x' into 1.5.x 2017-04-14 16:04:22 +02:00
Stephane Nicoll
b7efec5401 Support case insensitive value for Cassandra's SchemaAction
Closes gh-8903
2017-04-14 16:04:04 +02:00
Stephane Nicoll
715cf7da75 Do not enable cglib if spring.aop.proxy-target-class is configured
This commit makes sure to honour the `spring.aop.proxy-target-class`
property if set by the user. Previously, the
`PersistenceExceptionTranslationPostProcessor` was always configured to
use cglib, regardless of the value of that property.

Closes gh-8887
2017-04-12 10:55:43 +02:00
Phillip Webb
c97268981a Polish 2017-04-11 20:59:03 -07:00
Phillip Webb
d301d0f4c3 Merge branch '1.4.x' into 1.5.x 2017-04-11 20:42:48 -07:00
Phillip Webb
758ddcd420 Polish 2017-04-11 20:17:23 -07:00
Stephane Nicoll
a00b695748 Do not enable cglib if spring.aop.proxy-target-class is configured
This commit makes sure to honour the `spring.aop.proxy-target-class`
property if set by the user. Previously, the
`MethodValidationPostProcessor` was always configured to use cglib,
regardless of the value of that property.

Closes gh-8869
2017-04-11 15:28:21 +02:00
Stephane Nicoll
a132bd141f Merge branch '1.4.x' into 1.5.x 2017-04-10 16:13:53 +02:00
Stephane Nicoll
0a55e3e736 Polish "Clarify edge case docs on ConditionalOnClass"
Closes gh-8185
2017-04-10 16:12:11 +02:00
Andy Wilkinson
035cbd91f4 Use main thread in OnClassCondition if thread create/start fails
Previously, as a result of the changes made in de50cfa21e, an
application would fail to start on Google AppEngine as it prevents
the creation of new threads.

This commit updates OnClassCondition so that it falls back to
performing the work on the main thread when its unable to shift it
to a separate thread.

Closes gh-8584
2017-04-10 15:09:21 +01:00
Phillip Verheyden
08f8219248 Clarify edge case docs on ConditionalOnClass
When used as a meta-annotation the value() attribute of
@ConditionalOnClass will fail silently resulting in the @Conditional
nature of the annotation being ignored.

See gh-8185
2017-04-10 15:58:17 +02:00
Andy Wilkinson
f6a7e17688 Merge branch '1.4.x' into 1.5.x 2017-04-10 13:45:41 +01:00
Andy Wilkinson
6564fb3d96 Consider all loader paths when checking template availability
Closes gh-8842
2017-04-10 13:37:32 +01:00
Stephane Nicoll
7c9b2afa5b Merge branch '1.4.x' into 1.5.x 2017-04-10 10:57:52 +02:00
Dr. Stefan Hüttemann
0294ad3e95 Allow to disable max http post size limit
Closes gh-8508
2017-04-10 10:54:20 +02:00
Andy Wilkinson
c74f0a70ca Merge branch '1.4.x' into 1.5.x 2017-04-07 12:14:47 +01:00
Andy Wilkinson
5dad7182db Address deprecation warnings 2017-04-07 12:01:01 +01:00
Phillip Webb
ad38776de3 Polish 2017-04-04 09:48:10 -07:00
Phillip Webb
ddcb5ee328 Polish 2017-04-04 09:36:27 -07:00
Andy Wilkinson
94e9c9417d Merge branch '1.4.x' into 1.5.x 2017-04-04 10:22:50 +01:00
Andy Wilkinson
b280e3092d Don't forward to welcome page that won't exist due to custom mapping
Previously, WelcomePageHandlerMapping would forward to index.html.
This assumed that the static path pattern was always /**. If it had
been customised to, for example, /foo/**, then the forward would still
be to index.html and a 404 would result as the page is actually
available at /foo/index.html.

At first glance, it would appear that the forward should be made to
foo/index.html. However, as it's a forward rather than a redirect,
any relative URLs in the index.html page would then be resolved using
/ whereas they should be resolved using /foo/. This could be addressed
by using a redirect rather than a forward, but we don't want to do
that as it's more invasive and would require a roundtrip back to the
client. Instead, this commit simply stops performing the forward when
the static path pattern is not /**.

Closes gh-8788
2017-04-04 10:13:24 +01:00
Stephane Nicoll
5cc2e103f2 Disable unexpected datasource initialization
This commit restore the disabling of datasource initialization that was
accidently removed in db33a75 so that other tests aren't affected by it.
2017-04-03 10:42:12 +03:00
Stephane Nicoll
0163731043 Automatically enable transaction management for Neo4j
This commit makes sure that `@EnableTransactionManagement` is
auto-configured with Neo4j. It actually reuses what was done in #8434,
making sure that the `Neo4jDataAutoConfiguration` is ordered properly.

Closes gh-8587
2017-04-03 09:37:37 +03:00
Stephane Nicoll
db33a75484 Enable transaction management consistently
Previously to this commit, transaction management was only enabled when
a `DataSource` is configured. The processing of `@Transactional`
annotations are now enabled as long as a `PlatformTransactionManager` is
present.

Also, the `spring.aop.proxy-target-class` is now honoured if set, still
defaulting to CGLIB mode.

Closes gh-8434
2017-04-03 09:24:15 +03:00
Stephane Nicoll
fa3679af71 Merge branch '1.4.x' into 1.5.x 2017-03-16 12:40:12 +01:00
Stephane Nicoll
cd76da9a4c Avoid using immutable collections for configuration proprerties
Closes gh-8620
2017-03-16 12:39:48 +01:00
Stephane Nicoll
22934e097d Merge branch '1.4.x' into 1.5.x 2017-03-15 15:10:37 +01:00
Vedran Pavic
17aad4f00c Improve RedisSessionConfiguration conditions
Closes gh-8582
2017-03-15 15:09:31 +01:00
Madhura Bhave
8deb72be80 Fix ResourceServerProperties validation
Only try and validate if clientId is present.

Fixes gh-8565
2017-03-14 11:03:21 -07:00
Stephane Nicoll
5d27c7e501 Handle non supported JOOQ dialect
This commit uses a fallback translator if the JOOQ Dialect in use is not
one we support.

Closes gh-8521
2017-03-10 16:27:44 +01:00
Stephane Nicoll
f8bf05b91f Polish contribution
Closes gh-8474
2017-03-10 10:20:48 +01:00
srichard
0ddaca57fb Add Tomcat Access Log's fileDateFormat property
Closes gh-8396
2017-03-10 09:57:00 +01:00
Stephane Nicoll
feb1ab375f Merge branch '1.4.x' into 1.5.x 2017-03-10 09:36:55 +01:00
Eddú Meléndez
251090b1e5 Add missing spring-data-cassandra metadata
This commit adds the missing
`spring.data.cassandra.repositories.enabled` in the metadata and the
documentation.

Closes gh-8562
2017-03-10 09:34:19 +01:00
Stephane Nicoll
6624fe47c3 Merge branch '1.4.x' into 1.5.x 2017-03-09 18:33:28 +01:00
Stephane Nicoll
e7922a574a Polish 2017-03-09 18:33:13 +01:00
Stephane Nicoll
207ab3ecb4 Merge branch '1.4.x' into 1.5.x 2017-03-09 18:21:40 +01:00
Stephane Nicoll
07c56c60ba Make sure Hazelcast bootstraps before any JCache setup
This commit makes sure that if a `javax.cache.CacheManager` is required,
an auto-configured `HazelcastInstance` is fully resolved first. This
prevents the case where the JCache bootstrap actually starts an instance
early, followed by a second (potentially unwanted) instance created by the
regular auto-configuration.

Since the JCache implementation works with an `HazelcastInstance` behind
the scenes, if there is one `HazelcastInstance` configured and it has a
name, then we configure the `CacheProvider` to use that. Future Hazelcast
version will allow to pass the instance directly (i.e. not requiring an
actual name).

Closes gh-8484
2017-03-09 17:59:20 +01:00
Phillip Webb
fedd7b9506 Polish 2017-03-06 12:01:05 -08:00
Phillip Webb
a3d5101369 Merge branch '1.4.x' into 1.5.x 2017-03-06 11:48:52 -08:00
Phillip Webb
f5aeac3658 Polish 2017-03-06 11:43:29 -08:00
Stephane Nicoll
28bba876fa Merge branch '1.4.x' into 1.5.x 2017-03-06 08:19:12 +01:00
Stephane Nicoll
9fb9a67c4b Avoid early initializations
This commit flags the two `BeanPostProcessors` registered by the
embedded support as `synthetic` so that they don't trigger an early
initialization of other components.

Closes gh-8467
2017-03-06 08:16:58 +01:00
Spring Buildmaster
d23fa24340 Next Development Version 2017-03-03 16:18:26 +00:00
Spring Buildmaster
2a83e80a9b Next Development Version 2017-03-03 14:39:21 +00:00
Andy Wilkinson
9e9f006720 Polish "Enable customization of RestTemplate that retrieves JwtAccessTokenConverter's key"
See gh-8268
See gh-5859
2017-03-03 13:55:40 +00:00
Eddú Meléndez
dc9ff73805 Enable customization of RestTemplate that retrieves JwtAccessTokenConverter's key
Closes gh-8268
See gh-5859
2017-03-03 13:55:40 +00:00
Stephane Nicoll
d74af04724 Rename JSR 303 Validator bean name
Closes gh-8481
2017-03-03 11:45:26 +01:00
Stephane Nicoll
bb8800a625 Deprecate spring.cache.hazelcast.config
The additional configuration for an `HazelcastInstance` will be removed
in 2.0. This commit makes sure that the property is deprecated in 1.5

See gh-8470
2017-03-03 10:30:06 +01:00
Madhura Bhave
605b0aefc6 Simplify validation logic in ResourceServerProperties
Closes gh-8306
Closes gh-8317
2017-03-02 16:45:54 +00:00
Stephane Nicoll
3e0e4e81b9 Polish 2017-03-02 14:31:31 +01:00
Stephane Nicoll
5cc569fc91 Improve execution speed of CacheAutoConfigurationTests
As of Hazelcast 3.7, the bootstrap is pretty slow by default due to the
networking discovery. This commit disables both TCP/IP and multicast
discoveries.
2017-03-02 14:28:33 +01:00
Stephane Nicoll
5278baca01 Polish 2017-03-02 12:18:09 +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
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
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
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
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
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
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
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
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
0f42c5dd94 Check there is only one ResourceServerConfiguration before modifying
Fixes gh-8347
2017-02-22 11:30:17 +00:00
Madhura Bhave
67810abd9e Match ResourceServerCondition if JWK config present
Closes gh-8350
2017-02-21 12:02:49 -08: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
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
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
Stephane Nicoll
a0ef61a27d Enable proxy target class for MethodValidationPostProcessor
Closes gh-8277
2017-02-14 10:32:26 +01:00
Andy Wilkinson
e0b355d313 Avoid ClassNotFoundException caused by areturn verification
The verifier's type checker is required to check that a type returned
from a method (an areturn instruction) is assignable to the method's
declared return type. When the return type is an interface, the JLS
states that it should be treated as java.lang.Object. This means that
no analysis of the type being returned is required and verification
passes. When the return type is a class, the type being returned must
be analyzed to ensure that it is compatible. This analysis causes the
return type to be loaded during verification.

Prior to this commit, BasicBatchConfigurer's
createAppropriateTransactionManager method had a return type of
AbstractPlatformTransactionManager and a branch that could return
a JpaTransactionManager. This caused the verifier to attempt to load
JpaTransactionManager so that it could check that it was assignable
to AbstractPlatformTransactionManager. This would fail when
spring-orm is not on the classpath as JpaTransactionManager could not
be loaded.

This commit updates BasicBatchConfigurer to change the return type
of createAppropriateTransactionManager so that it returns a
PlatformTransactionManager which is an interface. As described above,
this relaxes the verification of any areturn instructions in the
method and, in this particular case stops the verifier from trying to
load JpaTransactionManager.

Closes gh-8181
2017-02-13 12:36:17 +00:00
Andy Wilkinson
601c6aa305 Tidy up code formatting and address some compiler warnings 2017-02-09 13:48:55 +00:00
Stephane Nicoll
aa49468171 Allow to define a custom MessageRecoverer
This commit improves `SimpleRabbitListenerContainerFactoryConfigurer` to
use a custom `MessageConverter`. If such a bean is present, it is used
for the default factory that is auto-configured.

Closes gh-8194
2017-02-09 10:43:03 +01:00
Stephane Nicoll
8a59e88a9d Fix MongoDB CustomConversions bean name
This commit qualifies the `CustomConversions` bean name that the Mongo
auto-configuration might create. `CustomConversions` is a common pattern
in Spring Data and other stores are using the same name.

See https://jira.spring.io/browse/DATASOLR-362

Closes gh-8225
2017-02-08 14:29:33 +01:00
Stephane Nicoll
45a91fca31 Fix parsing of spring.autoconfigure.exclude property
This commits makes sure that `AutoConfigureImportSelector` properly
parses comma separated lists that contain additional spaces.

Closes gh-8220
2017-02-07 18:26:57 +01:00
Andy Wilkinson
e891fe0584 Merge branch '1.4.x' into 1.5.x 2017-02-07 17:06:33 +00:00
Andy Wilkinson
06017f688a Only auto-configure SpringSocialDialect for Thymeleaf 2
Previously, SocialWebAutoConfiguration would create a
SpringSocialDialect bean when SpringTemplateEngine was on the
classpath. This class exists in both Thymeleaf 2 and Thymeleaf 3 but
SpringSocialDialect is only compatible with Thymeleaf 2.

This commit updates the auto-configuration to require
SpringResourceResourceResolver to be on the classpath. This class
exists in Thymeleaf 2 but does not exist in Thymeleaf 3.

Closes gh-4858
2017-02-07 16:20:33 +00:00
Stephane Nicoll
130e0808d0 Merge branch '1.4.x' into 1.5.x 2017-02-07 16:31:02 +01:00
Stephane Nicoll
008aef6142 Document @LiquibaseDataSource feature
Closes gh-8214
2017-02-07 16:16:19 +01:00
Stephane Nicoll
e88bda4682 Avoid extra space if condition is empty
Previously, if a builder was created with an empty condition, an extra
space was added before the message. This commit checks for this
particular case and adds a space only when necessary.

Closes gh-8218
2017-02-07 11:59:49 +01:00
Stephane Nicoll
519a03ccda Polish 2017-02-06 14:08:10 +01:00
Johnny Lim
09998d1155 Fix ImportAutoConfigurationImportSelectorTests.determineImportsWhenUsingNonMetaWithClassesShouldBeSame()
Closes gh-8204
2017-02-06 14:05:26 +01:00
Johnny Lim
0adab8a2be Use logical 'and' instead of bitwise 'and'
Closes gh-8198
2017-02-06 10:35:13 +01:00
Johnny Lim
846994e498 Polish
Closes gh-8148
2017-02-01 09:07:47 +01:00
Spring Buildmaster
5c12500366 Next Development Version 2017-01-30 20:10:13 +00:00
Spring Buildmaster
a2696bf873 Next Development Version 2017-01-30 11:40:24 +00:00
Phillip Webb
fa6a138598 Refine ImportsContextCustomizer cache logic
Update `ImportsContextCustomizer` so that whenever possible a more
specific cache key is used.

Prior to this commit the customizer would generate a key based on *all*
annotations on the test class. This has repeatedly caused issues where
test classes that should have the same cache key did not due to
unrelated annotations.

A new `DeterminableImports` interface has been added that can be
implemented by `ImportSelector` and `ImportBeanDefinitionRegistrar`
implementations that are able to determine their imports early. The
existing `ImportAutoConfigurationImportSelector` and
`AutoConfigurationPackages` classes have been retrofitted with
this interface.

Fixes gh-7953
2017-01-27 17:19:52 -08:00
Andy Wilkinson
f34d309548 Formatting 2017-01-26 15:03:02 +00:00
Spring Buildmaster
ed1ce140c0 Next Development Version 2017-01-26 14:20:39 +00:00
Andy Wilkinson
f5445ba5ff Remove OnValidatorAvailableCondition as it is now redundant
Previously, Hibernate Validator would fail to initialize if it was
on the classpath but an EL implementation was not.
OnValidatorAvailableCondition protected against this scenario by
initializing the validator.

The Hibernate Validator shortcoming was addressed in eb222209
(gh-7598). As a result, checking for the precences of the
ValidationProvider META-INF/services resource is now sufficient to
auto-configure validation. This commit removes
OnValidatorAvailableCondition as it is no longer necessary.

Closes gh-8110
2017-01-26 10:42:46 +00:00
Andy Wilkinson
f823599d1f Replace @PostConstruct validation with setter validation
Closes gh-7579
2017-01-26 09:32:07 +00:00
Andy Wilkinson
37cf31f450 Upgrade to Couchbase Java Client 2.3.7
In version 2.3.6 and earlier, an attempt to create a Bucket or a
ClusterInfo would fail fast with a ConnectException in the cause of
the Couchbase server was done. In 2.3.7 this remains true for a
Bucket but is no longer the case for ClusterInfo. The latter now
retries for 75 seconds by default and when it eventually fails a
ConnectException is no longer part of the cause chain.

This commit makes the auto-configured ClusterInfo depend on the
auto-configured Bucket. This means that the Bucket is always created
before the ClusterInfo, thereby ensuring that things fail gracefully
with useful diagnostics when the server is unavailable.

Closes gh-8092
2017-01-25 14:55:28 +00:00
Stephane Nicoll
505e7f75ea Polish contribution
Closes gh-8089
2017-01-25 11:01:53 +01:00
dreis
d58f38f6f6 Use String.replace() with single char if possible
See gh-8089
2017-01-25 11:01:52 +01:00
Stephane Nicoll
551bfb2c60 Polish contribution
Closes gh-8103
2017-01-25 11:01:52 +01:00
Johnny Lim
32f9e90de5 Replace 'String.length() == 0' with 'String.isEmpty()'
See gh-8103
2017-01-25 11:01:52 +01:00
Johnny Lim
e0de28a1f7 Polish
Closes gh-8076
2017-01-24 13:22:22 +01:00
Phillip Webb
b0e06c30a0 Polish 2017-01-23 22:14:58 -08:00
Phillip Webb
de50cfa21e Make OnClassCondition an AutoConfigurationImportFilter
Update OnClassCondition to implement AutoConfigurationImportFilter so
that auto-configuration candidates can be filtered early. The
optimization helps to improve application startup time by reducing
the number of classes that are loaded.

See gh-7573
2017-01-23 22:14:58 -08:00
Phillip Webb
20a20b7711 Add AutoConfigurationImportFilter support
Add `AutoConfigurationImportFilter` strategy interface which can be used
to filter auto-configuration candidates before they are loaded.

See gh-7573
2017-01-23 22:14:57 -08:00
Phillip Webb
02641a8207 Optimize AutoConfigurationSorter
Optimize `AutoConfigurationSorter` by used properties generated by the
annotation processor whenever possible. The removes the need for each
candidate class to be ASM parsed just to access the order annotations.

See gh-7573
2017-01-23 22:14:57 -08:00
Phillip Webb
1cbda9bd60 Add AutoConfigurationMetadata abstraction
Add AutoConfigurationMetadata interface and a an internal loader that
allows easy access to data written by `spring-boot-configure-processor`.

See gh-7573
2017-01-23 22:14:57 -08:00
Madhura Bhave
ca435512c0 Introduce spring-boot-autoconfigure-processor
Add an annotation processor that generates properties files for certain
auto-configuration class annotations. Currently attribute values from
@AutoConfigureOrder, @AutoConfigureBefore, @AutoConfigureAfter and
@ConditionalOnClass annotations are stored.

The properties file will allow optimizations to be added in the
`spring-boot-autoconfigure` project. Primarily by removing the need
to ASM parse as many `.class` files.

See gh-7573
2017-01-23 22:14:56 -08:00
Phillip Webb
ccf964eb9a Optimize OnEnabledResourceChainCondition
Optimize OnEnabledResourceChainCondition by removing the DataBinder.
Properties are now read directly from the Environment.

See gh-7573
2017-01-23 18:29:23 -08:00
Phillip Webb
f8ded6de63 Don't use DataBinder to work out excludes
Update `AutoConfigurationImportSelector` so that exclude properties
are loaded without invoking a `DataBinder`. This optimization helps
to improve application startup time.

See gh-7573
2017-01-23 18:29:23 -08:00
Phillip Webb
cfd5a73b64 Don't call ReflectionUtils do deduce bean type
Update `OnBeanCondition` to no longer call `ReflectionUtils` when
deducing the bean method return type. Since Spring Framework 4.2
the return type has been directly available from `MethodMetadata`.

See gh-7573
2017-01-23 17:33:39 -08:00
Phillip Webb
996afafac6 Optimize OnClassCondition isPresent check
Update `OnClassCondition` to use its own `isPresent` rather than using
`ClassUtils.isPresent`. Using our own implementation saves a few cycles
since we never need to check for native types, and we don't support
nested class references specified in the non `$` notation.

See gh-7573
2017-01-23 17:33:28 -08:00
Phillip Webb
9650668291 Remove dependency from root to condition
Remove the slightly unusual dependency from the root autoconfigure
pacakge to `condition`. Prior to this commit the link was required in
ordere to populate the `ConditionEvaluationReport`. We now introduce
a `AutoConfigurationImportListener` strategy that allows anyone to
listen for AutoConfigurationImportEvents. The listener implementation
is now used to update the ConditionEvaluationReport.

Fixes gh-8073
2017-01-23 17:33:15 -08:00
Phillip Webb
b225b7f33a Rename EnableAutoConfigurationImportSelector
Rename EnableAutoConfigurationImportSelector to the more general
AutoConfigurationImportSelector since it's now used for more than
just the enable annotation.

The existing EnableAutoConfigurationImportSelector class remains in
a deprecated form so that it can be made package-private again in
Spring Boot 2.0.

Fixes gh-8072
2017-01-23 17:33:02 -08:00
Phillip Webb
2c89d9918f Relocate AutoConfigurations from root package
Move PropertyPlaceholder and MessageSource auto-configuration from the
root package to the `context` subpackage.

Fixes gh-8071
2017-01-23 17:32:45 -08:00
Phillip Webb
5703fb1515 Polish 2017-01-23 16:03:59 -08:00
Andy Wilkinson
9a79d32f4c Polishing 2017-01-23 10:10:45 +00:00
Andy Wilkinson
c86b844477 Remove @Component from ResourceServerFilterChainOrderProcessor
Closes gh-8050
2017-01-23 09:48:21 +00:00
Andy Wilkinson
a30fe9d9ff Update ServerPropertiesTests to tolerate changes in Tomcat 8.5.11
Closes gh-7360
2017-01-20 16:39:00 +00:00
Stephane Nicoll
915c959a28 Polish contribution
Closes gh-7600
2017-01-20 16:40:48 +01:00
Stephane Nicoll
b19d31e067 Use a random port with embedded Mongo by default
This commit improves the logic of the embedded Mongo support to use a
random port if no custom port has been specified. This doesn't change
the default if the embedded support isn't active.

Closes gh-8044
2017-01-20 16:40:06 +01:00
Andy Wilkinson
b900a3efc8 Update Actuator endpoints to use custom media type
Previously, the actuator's endpoints produced application/json and,
where appropriate, also consumed application/json. Without a custom,
versioned media type, it's impossible for us to make changes to the
endpoints without breaking clients.

This commit introduces a new media type,
application/spring-boot.actuator.v1+json, that is now produced by
default with application/json also being produced if requested.
Endpoints that consume JSON will now also accept content the uses
the new media type in addition to application/json.

Closes gh-7967
2017-01-20 15:31:22 +00:00
Phillip Webb
f3cd0ad22c Polish 2017-01-19 12:44:57 -08:00
Madhura Bhave
a5a382b8b1 Set AccessTokenConverter if available
Fixes gh-7091
2017-01-19 11:49:54 -08:00
Stephane Nicoll
e5e497ec3a Document @ImportAutoConfiguration#exclude
Closes gh-7862
2017-01-19 16:47:07 +01:00
Andy Wilkinson
f93d4a0cbf Add explicit aliases for exclude and excludeName on SpringBootApplication
Previously, SpringBootApplication relied on implicity aliasing of
exclude and excludeName that worked because the two attributes have
the same names as the equivalent attributes on
EnableAutoConfiguration.

This commit updates SpringBootApplication to make the aliases explicit
and also adds tests to EnableAutoConfigurationImportSelectorTests to
verify that the aliasing is working as intended.

Closes gh-7951
2017-01-19 12:29:46 +00:00
Stephane Nicoll
c41ff17dd7 Provide relevant default values for Enums
This commits adds manual metadata for enums that have a default value
since the annotation processor is not able to detect that yet.

Closes gh-7890
2017-01-19 13:19:13 +01:00
Phillip Webb
f42ebe428c Remove JSR-330 configuration annotations
Replace JSR-330 validation annotations from all internal
`@ConfigurationProperties` classes with standard Asserts.

Prior to this commit validation of our own configuration properties
would only occur when the user happens to have compliant JSR-330
implementation on their classpath.

See gh-7579
2017-01-18 20:51:35 -08:00
Phillip Webb
0a6456a748 Always use prefix config annotation attribute
Update use of `@ConfigurationProperties` to prefer the more explicit
`prefix` attribute, rather than `value`.

See gh-7579
2017-01-18 20:49:53 -08:00
Phillip Webb
43d432a527 Polish 2017-01-18 20:35:41 -08:00
Kazuki Shimizu
19e117c9cb Use constructor injection in DataSourceInitializer
Closes gh-7973
2017-01-17 16:13:10 +00:00
Kazuki Shimizu
bd6ae47d68 Prevent unnecessary debug log message creation
Closes gh-8001
2017-01-17 09:57:15 +01:00
Stephane Nicoll
d556e82cf7 Polish contribution
Closes gh-8004
2017-01-17 09:56:05 +01:00
Johnny Lim
acc36c076d Polish
See gh-8004
2017-01-17 09:53:50 +01:00
Stephane Nicoll
ada441bccc Allow custom override of user info OAuth2RestTemplate
Closes gh-5996
2017-01-16 16:09:32 +01:00
Stephane Nicoll
3e05329fd7 Order internal RepositoryRestConfigurer
This commit provides an order of zero for the RepositoryRestConfigurer
that is used internally to configure the `RepositoryRestConfiguration`. In
practice, an unordered `RepositoryRestConfigurer` will run after ours.

Closes gh-7981
2017-01-16 10:41:44 +01:00
Vedran Pavic
8f6a0e96fd Improve UserInfoTokenServices logging
Closes gh-7995
2017-01-16 10:08:28 +01:00
Andy Wilkinson
ae3434ba4c Merge branch '1.4.x' into 1.5.x 2017-01-13 18:45:50 -05:00
Andy Wilkinson
d2201d5284 Correct copyright dates and enforce that starting year is 2012
Closes gh-7923
2017-01-13 18:43:30 -05:00
Andy Wilkinson
66915a456a Merge branch '1.4.x' into 1.5.x 2017-01-13 07:29:17 -05:00
Andy Wilkinson
6f7d1de167 Remove redundant logic from OAuth2MethodSecurityConfiguration
Previously, OAuth2MethodSecurityConfiguration set the
PermissionEvaluator on the expression evaluator by looking in the
context for a PermissionEvaluator bean. This is unnecessary as
GlobalMethodSecurityConfiguration already does the same thing and does
so after the post-processor in OAuth2MethodSecurityConfiguration has
run. This commit removes the redundant logic and adds tests to check
that both the PermissionEvaluator and the RoleHierarchy are set use
beans in the context.

Closes gh-7979
2017-01-13 07:28:57 -05:00
Stephane Nicoll
5ee12a824f Fix assertion
See gh-7962
2017-01-12 09:09:42 -05:00
Andy Wilkinson
65025d8dab Enable Neo4J's open in view interceptor by default
Closes gh-7943
2017-01-10 17:04:51 -05:00
Stephane Nicoll
4523927e28 Polish 2017-01-06 12:44:32 +01:00
Phillip Webb
10de30ff11 Polish LDAP contribution
See gh-7733
2017-01-05 23:35:43 -08:00
Eddú Meléndez
6a84c369fd Add LDAP auto-configuration support
Add auto-configuration support for spring-ldap and spring-data-ldap.

See gh-2645
See gh-7733
2017-01-05 23:34:50 -08:00
Phillip Webb
565f75438e Polish 2017-01-05 11:04:07 -08:00
Dave Syer
fe344df9c5 Change default order of OAuth2 resource server filter chain
The default is now SecurityProperties.ACCESS_OVERRIDE_ORDER-1
(instead of 3), and the user can set it with
security.oauth2.resource.filter-order (as opposed to being hard
coded). The filter is provided by Spring OAuth2 so this change is
a BeanPostProcessor to call a setter on that object.

Fixes gh-5072
2017-01-05 11:58:36 +00:00
Phillip Webb
eb22220961 Upgrade to hibernate-validator 5.3.4
Upgrade to `hibernate-validator` 5.3.4 and introduce a new
`MessageInterpolatorFactory` that creates a suitable
`MessageInterpolator` (taking into account missing EL dependencies).

Rework `ConfigurationPropertiesBindingPostProcessor` and
`ValidationAutoConfiguration` to make use of the new factory.

Fixes gh-7598
2017-01-04 18:28:32 -08:00
Stephane Nicoll
0a26a4146b Make spring.session.store-type mandatory
This commit removes the automatic enabling of Redis as the Spring Session
store when it is available. This case is covered by a warning in `1.4.x`
that this commit removes as well.

Closes gh-7858
2017-01-04 12:42:04 +01:00
Stephane Nicoll
bf7271afa5 Upgrade to Couchbase Cache Client 2.1.0
As of 2.1 cache expiration times are to be set in seconds. This commit
migrates to the new method, yet keeping the milliseconds unit.

Closes gh-7824
2017-01-04 10:46:17 +01:00
Johnny Lim
f915ae197a Polish 2017-01-04 09:53:45 +01:00
Phillip Webb
76d5b913cd Polish 2017-01-03 14:43:24 -08:00
Stephane Nicoll
fe89af5e82 Polish contribution
Closes gh-7796
2017-01-03 11:33:57 +01:00
Eddú Meléndez
24c83d12da Autodetect spring.jpa.database from spring.datasource.url
Previously, property `spring.jpa.database` should be provided. This
commit allows to detect the database when `spring.datasource.url` is
provided.

Closes gh-7708
2017-01-03 11:24:58 +01:00
Phillip Webb
b27f4e23be Ignore @ImportAutoConfiguration exclude errors
Update `ImportAutoConfigurationImportSelector` to ignore excludes for
classes that aren't loaded. Since the import classes for tests tend to
be much more limited, the exception isn't really helpful.

Closes gh-6809
2016-12-30 12:53:59 -08:00
Phillip Webb
aacf5d660f Update copyright year for changed files 2016-12-30 11:53:51 -08:00
Phillip Webb
273beaa3ce Polish 2016-12-30 11:10:44 -08:00
Phillip Webb
f8acaae115 Merge branch '1.4.x' into 1.5.x 2016-12-30 11:00:06 -08:00
Phillip Webb
9ccf47398e Formatting 2016-12-30 10:56:44 -08:00
Kazuki Shimizu
85503fcbca Polishing log message and comment
Closes gh-7793
2016-12-30 16:04:38 +01:00
Stephane Nicoll
a90a73d1ac Merge branch '1.4.x' into 1.5.x 2016-12-30 16:04:00 +01:00
Stephane Nicoll
7b494cf319 Polish
See gh-7793
2016-12-30 15:59:17 +01:00
Stephane Nicoll
c230a21a8c Polish CacheManagerCustomizers
Closes gh-7792
2016-12-30 15:16:13 +01:00
Stephane Nicoll
2f3571f173 Defend against lambda transaction customizers
Update `CacheManagerCustomizers` to deal directly with
`ClassCastException` assuming that they are because a customizer is
implemented using a lambda.

Closes gh-7788
2016-12-30 15:16:13 +01:00
Stephane Nicoll
1fa8b1ac91 Defend against lambda transaction customizers
Update `CacheManagerCustomizers` to deal directly with
`ClassCastException` assuming that they are because a customizer is
implemented using a lambda.

Closes gh-7788
2016-12-30 14:19:03 +01:00
Phillip Webb
54aeff47a2 Add exclude support to @ImportAutoConfiguration
Update `@ImportAutoConfiguration` with support for an exclude attribute
that works in a similar way to `@EnableAutoConfiguration`.

Also update existing `@Test...` annotation with exclude attribute
aliases.

Fixes gh-6809
2016-12-30 00:31:30 -08:00
Phillip Webb
3c930347c5 Defend against lambda transaction customizers
Update `TransactionManagerCustomizers` to deal directly with
`ClassCastExceptions` assuming that they are because a customizer is
implemented using a lambda.

See gh-7561
2016-12-29 16:37:13 -08:00
Kazuki Shimizu
a7b77e6f9a Remove a nested TransactionProperties
Remove a few nested `TransactionProperties` that should have been
deleted in commit f22744c748.

See gh-7561
Closes gh-7786
2016-12-29 16:19:03 -08:00
Stephane Nicoll
7c25ccb0f3 Merge branch '1.4.x' into 1.5.x 2016-12-29 10:51:41 +01:00
Stephane Nicoll
1f5970c537 Fix auto-configuration class reference
Closes gh-7781
2016-12-29 10:49:19 +01:00
Stephane Nicoll
301b8bc611 Make the dependency to TransactionAutoConfiguration explicit
Closes gh-7773
2016-12-29 10:38:11 +01:00
Stephane Nicoll
4b641ca211 Polish
Closes gh-7561
2016-12-29 10:07:23 +01:00
Phillip Webb
f22744c748 Add support for TransactionManagerCustomizers
Add a `TransactionManagerCustomizer` callback interface that can be
used to customize auto-configured `PlatformTransactionManagers`.

Also update `...transaction.*` properties under a single unified
`spring.transaction...` key since the existing auto-configurations
would often share a transaction manager (the technology specific
transaction managers are `@ConditionalOnMissingBean` and may use
a manager created by a previous auto-configuration).

See gh-7561
2016-12-28 20:53:20 -08:00
Phillip Webb
601f7c0a69 Polish 2016-12-28 19:29:05 -08:00
Phillip Webb
8b69856fc9 Polish 2016-12-28 15:23:26 -08:00
Phillip Webb
3af5ae2a26 Polish ObjectProvider names
Consistently use the simple name for ObjectProvider parameter and
field names. For example:

  `ObjectProvider<Something> something`

rather than

  `ObjectProvider<Something> somethingProvider`
2016-12-27 15:04:06 -08:00
Phillip Webb
e0541d0f74 Polish 2016-12-27 14:48:44 -08:00
Stephane Nicoll
b24c8d04ba Allow to customize the auto-configured JestClient
This commit adds a `HttpClientConfigBuilderCustomizer` to further tune
the auto-configured `JestClient`.

Closes gh-7762
2016-12-27 11:12:23 +01:00
Stephane Nicoll
a60e356136 Enable Jest's multi-threaded support by default
Since the `JestClient` is auto-configured as a bean, it must have its
multi-threaded support enabled by default. This commit exposes a new
`spring.elasticsearch.jest.multi-threaded` property that is `true` by
default.

Closes gh-6806
2016-12-27 10:46:26 +01:00
Phillip Webb
d05357e036 Migrate to Tomcat WebSocket client
Move samples and tests from Jetty websocket client to Tomcat since the
upcoming Jetty release contains a bug in `JsrSession`
(https://github.com/eclipse/jetty.project/issues/1202).

See gh-7599
2016-12-24 11:24:30 -08:00
Spring Buildmaster
9057f9ae1f Next development version 2016-12-23 00:15:23 +00:00
Stephane Nicoll
449043bf21 Polish contribution
Closes gh-6900
2016-12-22 15:39:31 +01:00
Vedran Pavic
65c2d1f5e7 Add support for vendor specific Flyway migration locations
This commit adds support for using `{vendor}` placeholder in
`flyway.locations` configuration property value.

See gh-6900
2016-12-22 14:56:28 +01:00
Stephane Nicoll
62bff1017e Validate that AopAutoConfiguration back off properly
Closes gh-7694
2016-12-22 14:48:54 +01:00
Stephane Nicoll
eb294956d8 Allow to customize Cluster.Builder rather than Cluster
Rework cb3d14a so that the customizer operates on the Builder rather than
the Cluster. The former exposes many more options.

See gh-7320
Closes gh-7669
2016-12-22 10:32:54 +01:00
Phillip Webb
982f41b70c Polish @IntegrationComponentScan auto-configuration
See gh-2037
See gh-7718
2016-12-21 22:22:50 -08:00
Artem Bilan
a79f71cbe8 Add @IntegrationComponentScan auto-configuration
Update Spring Integration auto-configuration so that
`@IntegrationComponentScan` from `AutoConfigurationPackages` is
implicitly applied. Prior to this commit `@MessagingGateway` interfaces
would only get picked up if `@IntegrationComponentScan` was added
alongside with the `@SpringBootApplication`.

Fixes gh-2037
Closes gh-7718
2016-12-21 20:18:07 -08:00
Phillip Webb
b87e02dde0 Polish Spring Integration metrics support
See gh-7722
2016-12-21 20:18:06 -08:00
Artem Bilan
d69e43b433 Refactor Spring Integration metrics support
Update Spring Integration metrics support since Spring Integration
`4.3.6`+ no longer needs `spring-integration-jmx` enable
`MessageChannel`, `MessageHandler` and `MessageSource` metrics.

- Add `IntegrationManagementConfiguration` conditional auto-configuration
  to provide `@EnableIntegrationManagement` when JMX is `enabled` or there
  is no `IntegrationManagementConfigurer.MANAGEMENT_CONFIGURER_NAME` bean.
  By default this bean doesn't exist and you explicitly should declare it
  (e.g. via `@EnableIntegrationManagement`) if you would like to collect
  metrics. At the same time Spring Integration enables it when JMX
  management is present (that is a purpose of that new
  `IntegrationManagementConfiguration`)

- Change `SpringIntegrationMetricReader` to read metrics from the
  `IntegrationManagementConfigurer`, not `IntegrationMBeanExporter`

- Change `PublicMetricsAutoConfiguration` to register
  `IntegrationManagementConfigurer.MANAGEMENT_CONFIGURER_NAME` bean if
  not present. Since we are here in `actuator`, therefore we are
  interested in the metrics for SI as well.

- Since we don't need JMX for the metrics any more, remove SI-JMX
  dependency from the `spring-boot-starter-integration`.

- Remove `IntegrationManagementConfiguration` modification from the
  `integrationMbeanExporter()`, since that looks like mutation of an
  external object, when end-user would prefer their own options.
  Therefore we don't need `ObjectProvider<IntegrationManagementConfigurer>`, too

- Add missed `MessageSourceMetrics` gathering for the
  `SpringIntegrationMetricReader`

Closes gh-7722
2016-12-21 20:18:06 -08:00
Artem Bilan
28474aa30a Fix compatibility with Apache Kafka 0.10.1
Update KafkaProperties since  Apache Kafka `0.10.1` changed the type
for the `ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG` from the
`Long` to `Integer`.

Kafka includes the following conversion logic:

    case LONG:
        if (value instanceof Integer)
            return ((Integer) value).longValue();
        if (value instanceof Long)
            return (Long) value;
        else if (value instanceof String)
            return Long.parseLong(trimmed);

So we remain compatible with both `0.10.0` and `0.10.1`

Closes gh-7723
2016-12-21 20:18:04 -08:00
Johnny Lim
e12b4a944f Polish 2016-12-21 20:18:04 -08:00
Phillip Webb
8f7efbe12a Polish spring.redis.url support
See gh-7395
2016-12-20 21:16:42 -08:00
Marco Aust
90eb58252e Add support for spring.redis.url property
Update `RedisAutoConfiguration` to optionally configure Redis using a
`spring.redis.url` property`.

Closes gh-7395
2016-12-20 21:16:42 -08:00
Phillip Webb
38f7389eab Polish loggers 2016-12-20 21:16:40 -08:00
Phillip Webb
1f7b3cad45 Polish Kafka properties
Closes gh-7672
2016-12-20 18:15:11 -08:00
Gary Russell
bdda470305 Support arbitrary Kafka properties
Add support for arbitrary Kafka properties via
`spring.kafka.properties.*` and also a `spring.kafka.max.poll.records`
property.

See gh-7672
2016-12-20 18:14:55 -08:00
Phillip Webb
99e72664d9 Polish spring transaction manager properties
Polish and update contribution so that TransactionManager properties can
be defined per technology, rather than globally.

Closes gh-7561
2016-12-20 17:59:19 -08:00
Kazuki Shimizu
80eee6b30f Support spring transaction manager properties
Add Spring TransactionManager properties to allow timeout and rollback
settings to be configured.

See gh-7561
2016-12-20 17:57:17 -08:00
Phillip Webb
3f4c32fcdd Polish 2016-12-20 14:54:04 -08:00
Dave Syer
6ccd858fc0 Fix checkstyle violations 2016-12-20 12:59:51 +00:00
Dave Syer
77a1a3b3c0 Allow user to signal that OAuth2 client is using client_credentials
By configuring security.oauth2.client.grantType=client_credentials the
user signals that (even in a web application) he doesn't want to use
the auth code grant (and hence session and request scoped beans for
client context).
2016-12-20 12:55:45 +00:00
Stephane Nicoll
851ce2286f Allow to override Couchbase's CustomConversions
Closes gh-7700
2016-12-20 11:59:16 +01:00
Phillip Webb
6121208cbb Polish formatting 2016-12-19 12:47:03 -08:00
Phillip Webb
4b9cba351b Merge branch '1.4.x' into 1.5.x 2016-12-19 12:36:57 -08:00
Phillip Webb
bd74c3d327 Polish formatting 2016-12-19 12:25:09 -08:00
Stephane Nicoll
9104ea81e8 Expose Validator bean
This commit improves ValidationAutoConfiguration so that a `Validator`
bean is exposed if JSR 303 is available. This has the side effect of
automatically enable Spring Data Couchbase's entity validation rather
than requiring to expose a `Validator` bean.

Closes gh-5178
2016-12-19 14:06:17 +01:00
Andy Wilkinson
cedac27c80 Require Bean Validation 1.1 to enable validation auto-configuration
Previously, ValidationAutoConfiguration would configure a
MethodValidationPostProcessor if any Bean Validation 1.0 or later
implementation was available, however the underlying infrastructure
requires Bean Validation 1.1 with any implementation or
Bean Validation 1.0 with Hibernate Validator 4.3.

This caused a problem on TomEE which uses Apache BVal, and Bean
Validation 1.0 implementation. Spring Framework would identify that
Bean Validaton 1.0 was being used and then try to load Hibernate
Validator classes that are not present.

This commit fixes the problem by requiring Bean Validation 1.1 before
auto-configuring a MethodValidationPostProcessor.

Closes gh-7665
2016-12-16 12:17:34 +00:00
Stephane Nicoll
d8d5950e99 Enable validation in AutoConfigureWebMvc
Closes gh-7582
2016-12-15 16:55:34 +01:00
Andy Wilkinson
149f19cd58 Register any EventListener beans with auto-configured SessionFactory
Closes gh-7531
2016-12-13 12:41:29 +00:00
Stephane Nicoll
b80ad2a212 Harmonize Caffeine CacheManager bean name
Closes gh-6980
2016-12-12 11:40:39 +01:00
Madhura Bhave
95be208f0f Use IgnoredRequestCustomizer to ignore paths
Update `SpringBootWebSecurityConfiguration` to ignore requests by
delegating to `IgnoredRequestCustomizer` beans. This allows a single
Spring Boot `WebSecurityConfigurer<WebSecurity>` bean to be used which
prevents potential exceptions caused by duplicate `@Order` values.

Fixes gh-7106
2016-12-05 17:57:18 -08:00
Phillip Webb
f6b0652369 Merge branch '1.4.x' into 1.5.x 2016-12-05 11:17:13 -08:00
Madhura Bhave
64da63aa96 Use empty message for Non-Spring Boot Condition
Update `AbstractNestedCondition` to use an empty message for non
Spring Boot nested conditions.

Fixes gh-7519
Closes gh-7529
2016-12-05 11:16:25 -08:00
Phillip Webb
e430583eaf Polish 2016-12-05 11:08:38 -08:00
Andy Wilkinson
967625db1e Replace field injection with constructor injection in config classes
Closes gh-7563
2016-12-05 10:48:01 +00:00
Andy Wilkinson
5ac75c949c Increate timeout in Kafka tests as Windows CI agents are very slow 2016-12-05 09:20:43 +00:00
Andy Wilkinson
1464425d64 Remove use of @Component from classes that are not scanned
Closes gh-7549
2016-12-02 17:57:21 +00:00
Andy Wilkinson
b60150b05e Make Tomcat Access Log's buffering configurable via the environment
Closes gh-7456
2016-12-02 13:58:26 +00:00
Stephane Nicoll
ee72e788ed Rename spring-boot-junit-runners to spring-boot-test-support
Closes gh-7421
2016-12-01 16:25:47 +01:00
Andy Wilkinson
fdccd8aaa7 Remove use of field injection from ErrorMvcAutoConfiguration 2016-12-01 11:51:29 +00:00
Stephane Nicoll
cb9e021fa9 Polish 2016-12-01 12:09:41 +01:00
Stephane Nicoll
2c630b5c61 Validate schema and data resources
Previously, if a user specifies a path to a schema or data DDL that does
not exist, the application will start up fine and the missing DDL would
not be reported.

This commit validates that user-defined resources actually exist and
throw a new `ResourceNotFoundException` if they don't.

Closes gh-7088
2016-12-01 11:52:52 +01:00
Mark Paluch
6698cb71c4 Add User-defined type support for Cassandra
Configure `SimpleUserTypeResolver` if a keyspace is set to resolve
User-defined types.

Closes gh-7523
2016-11-30 15:37:55 +01:00
Stephane Nicoll
2f48c50e84 Merge branch '1.4.x' into 1.5.x 2016-11-30 13:50:09 +01:00
Stephane Nicoll
e5ca4990d0 Fix bootstrap-hosts property detection with list
Previously, if `spring.couchbase.bootstrap-hosts` was specified in YAML
or with the `[Idx]` notation, the auto-configuration would not kick in.

This is due to a limitation of `@ConditionalOnProperty` on a property of
type Collection. This commit workarounds this limitation for now with a
dedicated condition.

Closes gh-7508
2016-11-30 13:49:44 +01:00
Johnny Lim
c654eff41b Update doc for spring.data.neo4j.open-in-view
See gh-7533
2016-11-30 10:42:18 +01:00
Johnny Lim
423f8037ce Polish
Closes gh-7530
2016-11-30 08:31:13 +01:00
Oscar Utbult
fabe35fdc4 Remove redundant toString() invocation
Closes gh-7527
2016-11-30 08:23:03 +01:00
Phillip Webb
dada7423b0 Polish 2016-11-28 15:40:08 -08:00
Phillip Webb
ec73144240 Fix warnings 2016-11-28 15:31:49 -08:00
Phillip Webb
5ed00b3501 Merge branch '1.4.x' into 1.5.x 2016-11-28 15:27:07 -08:00
Phillip Webb
9fdb563d5a Polish 2016-11-28 15:27:01 -08:00
Phillip Webb
357d072a60 Polish 2016-11-28 15:14:46 -08:00
Andy Wilkinson
2be554456e Introduce SearchStrategy.ANCESTORS as a replacement for .PARENTS
Closes gh-6763
2016-11-28 15:41:53 +00:00
Stephane Nicoll
5d876125de Refine validation auto-configuration
Checking for the presence of a `ValidationProvider` resource is
unfortunately not enough to trigger the validation auto-configuration.

If `hibernate-validator` is added on the classpath without a `javax.el`
implementation, the former will blow up on startup. So far this was a
pilot error so we didn't have to care about it. Now that we have an
auto-configuration that may lead to this error, we need to be extra
careful and check that scenario ourselves.

This commit adds an extra condition that runs as late as possible and
attempt to actually initialize a `Validator`. If that fails for whatever
reason, the auto-configuration will now back off.

Several additional tests have been added to exercise this scenario.

Closes gh-6228
2016-11-28 14:29:05 +01:00
Johnny Lim
cabb564804 Add ValidationAutoConfiguration to spring.factories
Closes gh-7494
2016-11-28 09:04:36 +01:00
Stephane Nicoll
0befc310cd Add dedicated settings for maxHttpPostSize
This commit deprecates `server.max-http-post-size` and introduces a
dedicated property for each supported  container. In particular, Undertow
can now define a max size higher than 2GB.

Closes gh-7362
2016-11-25 09:54:10 +01:00