Commit Graph

1911 Commits

Author SHA1 Message Date
Andy Wilkinson
49f8943a5f Register ErrorPageFilter for async dispatch
Fixes gh-19471
2020-07-30 13:38:02 +01:00
Andy Wilkinson
f96a688c1b Polish "Allow DurationFormat and PeriodFormat to be used on parameters"
See gh-22646
2020-07-30 09:34:26 +01:00
dreis2211
914452b2cc Allow DurationFormat and PeriodFormat to be used on parameters
See gh-22646
2020-07-30 09:26:41 +01:00
Gerrit Meier
15cd343737 Upgrade to Spring Data Neo4j 6
See gh-22299
2020-07-29 18:58:08 +02:00
Brian Clozel
6f2098ad71 Upgrade to Spring Framework 5.3.0-SNAPSHOT
This commit also switches to RSocket SNAPSHOTs and updates the
repository configuration to rely on "libs-snapshot", since the RSocket
SNAPSHOTs are mirrored there.

See gh-22640
2020-07-29 14:41:17 +02:00
Andy Wilkinson
7aa093e0ca Merge branch '2.3.x'
Closes gh-22636
2020-07-29 11:05:51 +01:00
Andy Wilkinson
5dd7780a38 Try to stabilise descendantOfPropertyAccess performance test
Closes gh-22633
2020-07-29 10:56:30 +01:00
Madhura Bhave
8d70010fce Add expanded profile groups to environment
Fixes gh-22605
2020-07-28 11:39:17 -07:00
Andy Wilkinson
273718c7df Merge branch '2.3.x'
Closes gh-22612
2020-07-28 09:15:26 +01:00
Andy Wilkinson
c2df326f6f Merge branch '2.2.x' into 2.3.x
Closes gh-22611
2020-07-28 09:15:14 +01:00
Andy Wilkinson
ea5284ca91 Polish "Use milliseconds when configuring awaitTerminationPeriod"
See gh-22604
2020-07-28 09:03:57 +01:00
Tadaya Tsuyukubo
685a6116d1 Use milliseconds when configuring awaitTerminationPeriod
Prior to this change, TaskExecutorBuilder used seconds as its precision
to map the awaitTerminationPeriod value. This caused a loss of
millisecond information in the period.

This commit fixes the loss by converting the period to millisecond and
using setAwaitTerminationMillis to configure the executor.

See gh-22604
2020-07-28 09:01:55 +01:00
Phillip Webb
84bcd0eb1e Improve deprecated exception message
Update the exception message so that it includes the class name of the
implementation.

See gh-22497
2020-07-27 09:06:33 -07:00
Andy Wilkinson
1efac09913 Merge branch '2.3.x'
Closes gh-22586
2020-07-27 13:37:34 +01:00
Andy Wilkinson
8ff2b9f2e8 Merge branch '2.2.x' into 2.3.x
Closes gh-22585
2020-07-27 13:37:23 +01:00
Andy Wilkinson
1b48daf1d5 Do not ignore unknown fields when invalid fields are being ignored
Previously, ignoring invalid fields would cause the failure for an
unknown field to be ignored, irrespective of the ignoreUnknownFields
attribute on `@ConfigurationProperties`.

This commit updates the NoUnboundElementsBindHandler to ensure that
any UnboundConfigurationPropertiesException is thrown rather than
being ignored when the handler has been wrapped by an
IgnoreErrorsBindHandler.

Fixes gh-22308
2020-07-27 13:28:44 +01:00
izeye
6eba7c5f10 Polish
See gh-22549
2020-07-25 07:26:49 +02:00
dreis2211
923474fa48 Polish
See gh-22535
2020-07-24 12:58:12 +02:00
Dave Syer
48f49f2120 Restore missing EnvironmentPostProcessors
See gh-22544
2020-07-24 08:46:04 +01:00
Phillip Webb
36a6ca6e6e Add EnvironmentPostProcessorsFactory
Update `EnvironmentPostProcessorApplicationListener` so that it can
either use values from `spring.factories` or use a factory interface.

Closes gh-22529
2020-07-23 11:43:02 -07:00
dreis2211
b01fb63de6 Polish
See gh-22524
2020-07-23 18:16:34 +02:00
Madhura Bhave
3f76eb2097 Add volume mount property source support
Add support for volume mounted directories where the filename becomes
the property key and the file contents becomes the value.

Support is provided via a dedicated `VolumeMountDirectoryPropertySource`
class which can either be used directly, or via a "volumemount:/..."
`spring.config.import` location.

Closes gh-19990

Co-authored-by: Phillip Webb <pwebb@vmware.com>
2020-07-22 21:03:37 -07:00
Madhura Bhave
eee260fc03 Add support for profile groups
Add support for profile groups so that users can combine a number of
fine-grained profiles into a single logical group.

Closes gh-22522
2020-07-22 21:03:37 -07:00
Phillip Webb
3352024b1c Provide ConfigFileApplicationListener replacement
Deprecate `ConfigFileApplicationListener` and provide a replacement
mechanism that supports arbitrary config data imports.

This commit updates the following areas:

- Extract `EnvironmentPostProcessor` invocation logic from the
  `ConfigFileApplicationListener` to new dedicated listener. Also
  providing support for `Log` injection.

- Extract `RandomPropertySource` adding logic from the
  `ConfigFileApplicationListener` to a dedicated class.

- Migrate to the recently introduced `DefaultPropertiesPropertySource`
  class when moving the defaultProperties `PropertySource`

- Replace processing logic with a phased approach to ensure that
  profile enablement happens in a distinct phase and that profiles
  can no longer be activated on an ad-hoc basis.

- Provide a more predictable and logical import order for processing
  `application.properties` and `application.yml` files.

- Add support for a `spring.config.import` property which can be used
  to import additional config data. Also provide a pluggable API
  allowing third-parties to resolve and load locations themselves.

- Add `spring.config.activate.on-profile` support which replaces the
  existing `spring.profiles` property.

- Add `spring.config.activate.on-cloud-platform` support which allows
  a config data document to be active only on a given cloud platform.

- Support a `spring.config.use-legacy-processing` property allowing the
  previous processing logic to be used.

Closes gh-22497

Co-authored-by: Madhura Bhave <mbhave@vmware.com>
2020-07-22 21:02:32 -07:00
Phillip Webb
44f18362d3 Add Binder backed CloudPlatform.isEnforced method
Update `CloudPlatform` with a new `isEnforced` method that's backed
by a `Binder` rather than the `Environment`. We'll require this when
we overhaul our external config data processing logic.

Closes gh-22498
2020-07-22 21:00:14 -07:00
Phillip Webb
cd36444641 Extract DefaultPropertiesPropertySource class
Extract `DefaultPropertiesPropertySource` from `SpringApplication` so
that logic can be easily accessed by other classes. Specifically the
property source name and logic to move the source to the end of the
list needs to be called from several places.

Closes gh-22520
2020-07-22 20:58:32 -07:00
Phillip Webb
039fbdfa7c Add DeferredLogFactory support
Add a new `DeferredLogFactory` interface and `DeferredLogs`
implementation that can be used when a `DeferredLog` instance is needed
but the `switchOver` method should be handled elsewhere.

This interface has primarily been added so `EnvironmentPostProcessor`
classes will no longer need to implement `ApplicationEventListener`
just to switch over their logs.

Closes gh-22496
2020-07-22 20:58:31 -07:00
Madhura Bhave
9e9eb90d09 Add multi-document properties file support
Update `OriginTrackedPropertiesLoader` so that it can support
multi-document properties files. These are similar to multi-document
YAML files but use `#---` as the separator.

Closes gh-22495

Co-authored-by: Phillip Webb <pwebb@vmware.com>
2020-07-22 20:58:24 -07:00
Phillip Webb
945e5b9222 Add ConfigurationPropertySource.from method
Add a factory method to `ConfigurationPropertySource` that allows a
single Spring `PropertySource` instance to be adapted.

Closes gh-22494
2020-07-22 20:57:43 -07:00
Phillip Webb
078e146983 Filter empty YAML documents
Update `OriginTrackedYamlLoader` so that empty documents are filtered
from the result. Prior to this commit, our origin wrapper would confuse
the YAML processor and cause empty documents to be included in the Map
with a key of "document" and no value.

Closes gh-22493
2020-07-22 20:57:43 -07:00
Phillip Webb
fdc6e80163 Add trailing escape character test
Update `OriginTrackedPropertiesLoaderTests` to also test that an escape
character can be the last character on a line.
2020-07-22 20:57:36 -07:00
Phillip Webb
2eeffe7931 Add @Name support for value object binding
Update value object binder support so that parameters can be annotated
with `@Name` if a specific property name should be used. Prior to this
commit is was not possible to use Java reserved words as property names.

Closes gh-22492
2020-07-22 18:50:23 -07:00
Phillip Webb
2d3ac4bb2e Polish 2020-07-22 18:50:22 -07:00
Phillip Webb
3d7d9d064c Update copyright year of changed files 2020-07-22 18:50:07 -07:00
Phillip Webb
14c1b0938a Polish 2020-07-22 18:25:27 -07:00
Phillip Webb
da69286838 Merge branch '2.3.x' 2020-07-22 17:39:27 -07:00
Phillip Webb
187d3af7fc Update copyright year of changed files 2020-07-22 17:25:17 -07:00
Phillip Webb
b5e70157dc Update copyright year of changed files 2020-07-22 17:01:36 -07:00
Andy Wilkinson
01558100d1 Do not attempt to use AprLifecycleListener in a native image
Closes gh-22485
2020-07-22 06:30:39 +01:00
Andy Wilkinson
0fd567664a Make DefaultErrorAttributes easier to subclass for message customization
Closes gh-22378
2020-07-21 10:30:33 +01:00
Andy Wilkinson
0ce0c3a54a Polish "Add failure analyzer for missing Liquibase changelog"
See gh-22320
2020-07-17 14:44:25 +01:00
Sebastiaan Fernandez
554a962a13 Add failure analyzer for missing Liquibase changelog
See gh-22320
2020-07-17 14:44:25 +01:00
Andy Wilkinson
0c8e52e877 Avoid using reflection to create SpringApplication's context
Closes gh-22322
2020-07-16 15:03:08 +01:00
Andy Wilkinson
4d1a19f316 Broaden cast as registry may be a GenericApplicationContext
Closes gh-22318
2020-07-14 16:43:27 +01:00
Andy Wilkinson
2af550ef73 Avoid using reflection with manual bean definitions
Closes gh-22318
2020-07-14 14:11:51 +01:00
Andy Wilkinson
e3b839a48a Merge branch '2.3.x'
Closes gh-22326
2020-07-14 11:40:52 +01:00
Andy Wilkinson
196d20537a Merge branch '2.2.x' into 2.3.x
Closes gh-22325
2020-07-14 11:38:34 +01:00
Andy Wilkinson
9558779dd4 Replace ConfigurationPropertiesBeanDefinitionValidator with a FailureAnalyzer
Previously, regular bean definitions for configuration properties classes
that attempt to use constructor binding were detected in a bean factory
post-processor, ConfigurationPropertiesBeanDefinitionValidator. This
validation examined every standard bean definition and failed if it
encountered one for a class that should have used constructor binding.
There were two downsides to this approach:

1. Reflection used to identify if the bean should be using constructor
   binding triggered class loading that could prevent subsequent
   instrumentation by a load-time weaver.
2. The cost of the validation was incurred when there was no
   misconfiguration to report.

This commit replaces ConfigurationPropertiesBeanDefinitionValidator
with a failure analyzer. This failure analyzer only runs once a failure
has occurred and the application context is not going to complete
refresh. This avoids causing problems with subsequent instrumentation
and also avoids the cost of validation and error reporting unless there
is an error.

Fixes gh-20798
2020-07-14 11:37:54 +01:00
Andy Wilkinson
2643c60c5a Merge branch '2.3.x'
Closes gh-22316
2020-07-13 14:16:45 +01:00
Andy Wilkinson
f52cdf10b3 Update WebServerInitEvent docs to reflect ordering w.r.t. refresh
Closes gh-22277
2020-07-13 12:51:07 +01:00