Commit Graph

3015 Commits

Author SHA1 Message Date
Gytis Trikleris f43ad00129 Delay Narayana recovery manager until it's started explicitly
Closes gh-9641
2017-08-01 15:42:40 +01:00
Phillip Webb fd1dfbb247 Add missing TestPropertyValues 'apply' calls
Update a few usages of `TestPropertyValues` so that `apply` is called
consistently.
2017-07-31 20:56:35 -07:00
Phillip Webb e1602fe59a Polish 2017-07-31 20:46:56 -07:00
Eddú Meléndez 87ba8d2e14 Upgrade to Jackson 2.9.0
Closes gh-9912
2017-07-31 09:39:23 +02:00
Phillip Webb 30ff329e3d Polish 2017-07-28 10:11:49 -07:00
Stephane Nicoll ebbe29cc85 Migrate HazelcastJpaDependencyAutoConfigurationTests to context runner
This commit also makes sure to generate unique embedded data source and
disable datasource initialization as this is not required by those
tests.

See gh-9889
2017-07-28 11:05:09 +02:00
Stephane Nicoll 49d249bdf4 Disable Aop auto-config if aspectjweaver is not present
This commit adds an additional class check to AopAutoConfiguration as
it is main role is to configure `@EnableAspectJAutoProxy` which won't
work properly if `aspectjweaver` is not present.

Closes gh-9880
2017-07-28 10:43:08 +02:00
Phillip Webb 9127c48fb5 Fixup warnings 2017-07-27 16:39:49 -07:00
Phillip Webb a869d25dbb Polish 2017-07-27 16:16:35 -07:00
Stephane Nicoll 22deceb7f2 Migrate tests to ApplicationContextRunner 2017-07-27 14:54:14 +02:00
Andy Wilkinson 56b817e8ad Merge branch '1.5.x' 2017-07-27 10:30:23 +01:00
Andy Wilkinson d62c26c971 Ensure that preinitialization has completed before run returns
Previously, background preinitialization was started in response to
an ApplicationEnvironmentPreparedEvent and would complete at an
undetermined time later. This opened a window where SpringApplication
run could return and background preinitialization could still be
in progress. If, within this window, something attempted to configure
the logging system, an IO failure could occur as logging on the
background preinitialization thread would attempt to use resources
that had been closed.

This commit updates BackgroundPreinitializer so that it waits for
preinitialization to have completed when it receives an application
ready or application failed event. This prevents SpringApplication
run from returning while preinitialization is still in progress,
closing the window described above.

With info level logging enabled it appears that background
preinitialization consistently completes before the application ready
event is published. As a result, waiting should have no adverse effect
on performance in normal circumstances. With logging configured such
that background preinitialization outputs a large volume of log
messages (enabling trace logging for the root logger, for example), it
will be slowed down sufficiently for waiting to be necessary.

Closes gh-5669
2017-07-27 10:18:21 +01:00
Andy Wilkinson 42eec50e90 Perform background preinitialization once per class loader
Background preinitialization triggers static initialization of a
number of components that are slow to initialize. As the
initialization is static, it's only necessary once per class loader.

Previously, a new background preinitialization thread would be
created and started for each ApplicationEnvironmentPreparedEvent.
This commit updates the preinitializer to only create and start the
thread if preinitialization has not already been started for the
current class loader.

Closes gh-9869
2017-07-27 10:18:21 +01:00
Spring Buildmaster 17a5bb0be4 Next development version 2017-07-27 08:00:21 +00:00
Phillip Webb 89ad0660d1 Make ApplicationContextRunner immutable
Update `ApplicationContextRunner` so that it is totally immutable.
Methods now return new instances rather than changing existing state.

See gh-9875
2017-07-26 17:50:34 -07:00
Phillip Webb ad9f28110c Make TestPropertyValues immutable
Update `TestPropertyValues` so that it is totally immutable. Methods
now return a new instance rather than changing existing state.

See gh-9875
2017-07-26 17:49:31 -07:00
Phillip Webb 07556cda51 Restructure `boot.test.context` package
Split up `org.springframework.boot.test.context` into distinct packages
for `runner` and `assertj`.

See gh-9875
2017-07-26 17:47:59 -07:00
Phillip Webb 497457c397 Rename ApplicationContextTester -> Runner
Rename `ApplicationContextTester` and related classes to
`ApplicationContextRunner` and refactor existing tests to use correctly
named variables.

See gh-9875
2017-07-26 17:46:06 -07:00
Andy Wilkinson 5616915621 Polishing 2017-07-26 17:40:29 +01:00
Stephane Nicoll 9891462ac4 Migrate test to WebApplicationContextTester 2017-07-26 11:25:04 +02:00
Spring Buildmaster 41c5c0e7c9 Next development version 2017-07-26 08:30:55 +00:00
Stephane Nicoll 996e6bf48c Reset Neo4j tests to use the default driver again
This commit resets the artificial use of the http driver now the bolt
driver doesn't check if the connection to the Neo4J server is valid
on startup.

See neo4j/neo4j-java-driver#380

Closes gh-9500
2017-07-26 10:06:36 +02:00
Andy Wilkinson 02e836b7a7 Allow Session's repository filter to be configured via the environment
Closes gh-8301
2017-07-25 09:26:14 +01:00
Emanuel Campolo 2626a3a795 Use lambdas when possible
Replace anonymous inner classes with lambda declarations (when possible
using method references).

See gh-9781
2017-07-25 00:53:38 -07:00
Emanuel Campolo 798fe5ed53 Collapse catch clauses
Use multi-catch for exceptions whenever possible.

See gh-9781
2017-07-25 00:53:37 -07:00
Emanuel Campolo 4a189bdee7 Replace Collections.sort() with direct sort call
Replace existing `Collections.sort(...)` calls with `.sort(...)`
directly on the collection instance.

See gh-9781
2017-07-25 00:53:37 -07:00
Emanuel Campolo 04fdec6f8b Replace explicit generics with diamond operator
Where possible, explicit generic declarations to use the Java 8 diamond
operator.

See gh-9781
2017-07-25 00:53:37 -07:00
Stephane Nicoll ab43bf4643 Polish 2017-07-25 08:46:30 +02:00
Stephane Nicoll 663ff05895 Polish "Allow to customize OkHttpClient.Builder"
Closes gh-9669
2017-07-25 08:37:04 +02:00
Eddú Meléndez 406f41740e Allow to customize OkHttpClient.Builder
This commit enables to auto-configure OkHttpClient.Builder in
InfluxDbAutoConfiguration if it is available.

See gh-9669
2017-07-25 08:24:27 +02:00
Phillip Webb 3a01f4a6da Polish lambda formatting 2017-07-24 13:18:33 -07:00
Phillip Webb 7b2b8dc4a3 Merge branch '1.5.x' 2017-07-24 13:02:12 -07:00
Phillip Webb dca463c7d9 Polish 2017-07-24 12:54:24 -07:00
Phillip Webb 66619bbe2b Formatting 2017-07-24 12:54:24 -07:00
Phillip Webb b9cfe21193 Make @ImportAutoConfiguration not register package
Update `@ImportAutoConfiguration` so that it is no longer annotated with
`@AutoConfigurationPackage` and as such isn't a marker for
`AutoConfigurationPackages`.

Having `@ImportAutoConfiguration` marked as an auto-configuration
package is particularly problematic in tests since it frequently breaks
context caching.

Fixes gh-9282
2017-07-24 12:54:24 -07:00
Stephane Nicoll 5516e8626c Merge branch '1.5.x' 2017-07-24 15:34:09 +02:00
Stephane Nicoll 9fd94720f1 Better customization of the auto-configured ActiveMQConnectionFactory
This commit exposes additional properties and a callback interface to
further tune the auto-configured ActiveMQConnectionFactory.

Closes gh-9667
2017-07-24 15:27:17 +02:00
Stephane Nicoll 6c21b0090b Merge branch '1.5.x' 2017-07-24 14:00:24 +02:00
Stephane Nicoll 9a34d952e9 Provide an alternative to `spring.activemq.pool.configuration`
This commit expands the support of PooledConnectionFactory so that
binding the third party object is no longer necessary. All 3rd party
properties are now deprecated in favour of our explicit support.

The main reason behind this change is that a `connection-factory` and
`properties` property were exposed. The former is used to set the
`ConnectionFactory` and makes no sense as a key. The latter is
rebuilding the underlying `ActiveMQConnectionFactory` at each call
without reusing any existing settings.

Closes gh-9837
2017-07-24 13:48:53 +02:00
Andy Wilkinson 9c59758abe Merge branch '1.5.x' 2017-07-24 12:37:49 +01:00
Andy Wilkinson d4ecda9030 Work around javac bug (internal review ID 9050163) 2017-07-24 12:37:14 +01:00
Andy Wilkinson c45a351308 Merge branch '1.5.x' 2017-07-24 11:19:51 +01:00
Andy Wilkinson bb35e772c2 Polish "Make NarayanaRecoveryManagerBean conditional on missing bean"
Closes gh-9724
2017-07-24 11:17:39 +01:00
Gytis Trikleris d8a6954744 Make NarayanaRecoveryManagerBean conditional on missing bean
See gh-9724
2017-07-24 11:16:34 +01:00
Andy Wilkinson 11fc7c1393 Merge branch '1.5.x' 2017-07-24 11:08:32 +01:00
Andy Wilkinson 8f877dcee2 Disable auto-config of Narayana's JMS support when JMS module absent
Closes gh-9844
2017-07-24 10:42:40 +01:00
Andy Wilkinson 39b4ecdf63 Adapt to breaking change in Spring Data
See gh-9834
2017-07-22 08:11:26 +01:00
Johnny Lim bd27d147d7 Polish
Closes gh-9827
2017-07-21 15:38:00 +01:00
Andy Wilkinson 18cfd9d3dd Merge branch '1.5.x' 2017-07-21 15:36:27 +01:00
Andy Wilkinson c70cc55db8 Polishing
See gh-9827
2017-07-21 15:35:57 +01:00
Andy Wilkinson 536c3bbd1c Merge branch '1.5.x' 2017-07-21 14:38:46 +01:00
Andy Wilkinson 15410a406e Revert "Stop auto-config of MethodValidationPP triggering early init"
5198fe887b. The underlying Framework
problem that prevents @Lazy from working properly is still there
in some form or another.

See gh-9416
2017-07-21 14:35:58 +01:00
Andy Wilkinson 1fe84225e5 Merge branch '1.5.x' 2017-07-21 13:39:01 +01:00
Andy Wilkinson 5198fe887b Stop auto-config of MethodValidationPP triggering early init
Previously, if a user's configuration class provided a custom
Validator bean, that configuration class would be initialized very
early so that the Validator could be used to create the
auto-configured MethodValidationPostProcessor. This early
initialization could problems as it may prevent any of the
configuration class's dependencies from being post-processed.

This commit updates the injection of the Validator bean to be lazy,
thereby preventing the creation of the auto-configured
MethodValidationPostProcessor from triggering early initialization.

Closes gh-9416
2017-07-21 13:33:33 +01:00
Phillip Webb e1ef2a591f Fixup tests to use new ApplicationContextTester
Update existing tests that previously use `ContextLoader` to the newly
introduced `*ApplicationContextTester` classes.

See gh-9634
2017-07-19 12:40:53 -07:00
Phillip Webb 2f0f25f5ad Add Configurations class
Add a general purpose `Configurations` class that encapsulates the
sorting and merging rules that are usually apply. The class is
particularly useful in tests where configuration classes often need
to be specified, but an `@Import` or `ImportSelector` cannot be easily
used.

Two `Configurations` subclasses have been initially added. The
`UserConfigurations` class can be used to represent user defined
configuration and the `AutoConfigurations` class can be used to
represent a subset of auto-configurations. Auto configurations are
sorted using the same `@AutoConfiguraionBefore`/`@AutoConfiguraionAfter`
logic as the `@EnableAutoConfiguration` annotation.

Fixes gh-9795
2017-07-19 11:56:21 -07:00
Phillip Webb 9db72450da Merge branch '1.5.x' 2017-07-19 10:23:23 -07:00
Phillip Webb 68910f2b8f Polish 2017-07-19 10:21:06 -07:00
Stephane Nicoll 38ad582959 Polish "Add support for arbitrary producer/consumer Kafka properties"
Closes gh-9775
2017-07-19 18:17:55 +02:00
Gary Russell 191752d2c0 Add support for arbitrary producer/consumer Kafka properties
PR #7672 Added support for arbitrary common properties.

However, Kafka emits a warning if a producer configuration contains
properties intended only for consumers, and vice versa.

The documentation showed a sample of how to write code to configure
arbitrary properties but this is inconvenient.

Add arbitrary properties to the consumer and procucer configs.

See gh-9775
2017-07-19 18:02:28 +02:00
Stephane Nicoll d9f2770006 Merge branch '1.5.x' 2017-07-19 14:38:55 +02:00
Stephane Nicoll 7e97d38de7 Polish Javadoc
Closes gh-9726
2017-07-19 14:38:38 +02:00
Phillip Webb 75aebfaf27 Fix WebClientAutoConfigurationTests
Update tests to return a mock response rather than Mono.empty().
2017-07-18 15:00:57 -07:00
Stephane Nicoll e56798f347 Align to API change of Spring Data Cassandra 2017-07-18 15:09:09 +02:00
Madhura Bhave 39ec335d41 Merge branch '1.5.x' 2017-07-17 17:03:26 -07:00
Madhura Bhave 6381b88736 Create Jwk and Jwt token store beans conditionally
Closes gh-9777
2017-07-17 16:51:16 -07:00
Phillip Webb 51c2b049c2 Fix CodecsAutoConfiguration following API change
Update CodecsAutoConfiguration to align with the latest Spring Framework
changes.
2017-07-13 13:43:50 -07:00
Phillip Webb c1101e7eb2 Formatting 2017-07-13 13:41:18 -07:00
Stephane Nicoll 9df0992bd9 Polish "Align with breaking API changes in RedisCacheManager"
Closes gh-9734
2017-07-13 10:59:16 +02:00
Mark Paluch d22cd0cc9e Align with breaking API changes in RedisCacheManager
See gh-9734
2017-07-13 10:54:47 +02:00
Johnny Lim 360e3a492c Polish
closes gh-9729
2017-07-12 13:25:19 +02:00
Phillip Webb 8e3baf3130 Polish 2017-07-11 13:57:21 -07:00
Stephane Nicoll cb13c98649 Polish 2017-07-08 15:36:18 +02:00
Stephane Nicoll fa71051ec6 Polish "Upgrade to Infinispan 9.0.3.Final"
Closes gh-9688
2017-07-08 15:30:13 +02:00
Stephane Nicoll ef5c2afcc9 Polish 2017-07-07 11:11:16 +01:00
Andy Wilkinson dd0ce54425 Improve the type-safety of ContextLoader for servlet and reactive web 2017-07-07 11:11:16 +01:00
Andy Wilkinson 19ddfad63e Migrate some more tests to the new ContextLoader 2017-07-07 11:11:16 +01:00
Phillip Webb eb17aa06f9 Merge branch '1.5.x' 2017-07-06 18:38:52 -07:00
Phillip Webb aa57ca7e18 Polish 2017-07-06 16:53:04 -07:00
Andy Wilkinson b11053afc4 Align with breaking API changes in Spring Data MongoDB 2017-07-04 17:31:07 +01:00
Brian Clozel 64777204d8 Apply codecs auto-configuration to WebFlux
This commit introduces `CodecCustomizer`, a new callback-based interface
for customizing the codecs configuration for WebFlux server and client.

Instances of those customizers are applied to the `WebClient.Builder`
and to the `WebFluxAutoConfiguration` (which deals with both WebFlux and
WebFlux.fn).

For now, only Jackson codecs are auto-configured, by getting the
`ObjectMapper` instance created by Spring Boot. Other codecs can be
configured as soon as WebFlux supports those.

Closes gh-9166
2017-07-03 11:23:06 +02:00
Brian Clozel 4ce726b1a0 Auto-configure WebClient.Builder
This commit adds a new customizer interface for applying
configuration changes to `WebClient.Builder` beans:
`WebClientCustomizer`.

The new WebClient auto-configuration will make available, as a
prototype scoped bean, `WebClient.Builder` instances.
Once injected, developers can use those to create `WebClient`
instances to be used in their application.

`WebClientCustomizer` beans are sorted according to their
`Order` and then applied to the builder instances.

Closes gh-9522
2017-07-03 11:23:06 +02:00
Stephane Nicoll 18ba414000 Add test helper to manipulate the ApplicationContext
This commit adds ContextLoader, a test helper that configures an
ApplicationContext that is meant to simulate a particular
auto-configuration scenario.

The auto-configuration, user configuration and environment can be
customized. The loader invokes a ContextConsumer to assert the context
and automatically close the context once it is done.

Concretely, tests can create a shared field instance of that helper with
the shared configuration to increase its visibility and tune the context
further in each test.

If the context is expected to fail, `loadAndFail` allows to optionally
assert the root exception and consume it for further assertions.

This commit also migrates some tests to illustrate the practical use of
the helper

Closes gh-9634
2017-06-29 15:34:10 +02:00
Stephane Nicoll 2892039ccd Better tests for datasource initialization
See gh-9528
2017-06-28 10:48:47 +02:00
Stephane Nicoll 4e19c47e78 Fix wrong assertion 2017-06-28 10:31:14 +02:00
Stephane Nicoll 1ba0df99b2 Polish 2017-06-28 09:40:31 +02:00
Stephane Nicoll 557361c9e0 Properly set redis password for Cluster and Sentinel config
Closes gh-9583
2017-06-27 15:47:07 +02:00
Stephane Nicoll 1a839d6656 Remove useless cluster check 2017-06-27 15:23:36 +02:00
Stephane Nicoll 1b181b2f34 Upgrade to Tomcat 8.5.16
This commit uses the replacement for deprecated APIs in 8.5.16 to ease
a forward compatibility with Tomcat 9

Closes gh-9611
2017-06-27 14:38:02 +02:00
Johnny Lim 533c418ad4 Polish
Closes gh-9610
2017-06-27 08:51:11 +02:00
Andy Wilkinson 5a4ef50ef1 Adapt to API changes in Spring Data Commons 2017-06-26 17:21:14 +01:00
Stephane Nicoll c99a222759 Merge branch '1.5.x' 2017-06-26 17:47:09 +02:00
Stephane Nicoll 85c7643638 Remove use of 'javax.annotation.Resource'
This commit removes the only use of the `javax.annotation.Resource`
annotation from the codebase. This ensures that injection point are
only defined with Spring's annotation model.

Closes gh-9441
2017-06-26 17:46:46 +02:00
Stephane Nicoll 8ea38d1cbe Merge branch '1.5.x' 2017-06-26 13:37:18 +02:00
Stephane Nicoll 58a1ed19a9 Polish 2017-06-26 13:36:57 +02:00
Stephane Nicoll b465d9d815 Remove dead code 2017-06-26 09:07:07 +02:00
Stephane Nicoll e418cad752 Merge branch '1.5.x' 2017-06-23 11:48:17 +02:00
Stephane Nicoll 5aa27beb54 Polish 2017-06-23 11:40:16 +02:00
Stephane Nicoll 90c4e7518b Detect Neo4j https driver url
Closes gh-9549
2017-06-23 11:39:39 +02:00
Stephane Nicoll 27f8a63f1c Polish "Ensure compatibility with Spring Session module split"
Closes gh-9554
2017-06-23 10:34:17 +02:00