Commit Graph

582 Commits

Author SHA1 Message Date
Yanming Zhou
b49418aaaf Enforce use of BDDMockito
1. Replace Mockito.verify*() with BDDMockito.then()
2. Replace Mockito.doReturn() with BDDMockito.willReturn()
3. Adjust checkstyle rule

See gh-29178
2022-02-01 09:37:15 +01:00
Stephane Nicoll
e691cfdf3d Merge branch '2.7.x' 2022-01-31 16:24:52 +01:00
Stephane Nicoll
7bebfd06b8 Merge branch '2.6.x' into 2.7.x
Closes gh-29601
2022-01-31 16:24:40 +01:00
Stephane Nicoll
f1dc7e7b78 Merge branch '2.5.x' into 2.6.x
Closes gh-29600
2022-01-31 16:24:29 +01:00
Stephane Nicoll
0d78ff0657 Polish "Use a timeout when joining threads in HttpTunnelServerTests"
See gh-29522
2022-01-31 16:22:28 +01:00
Leo Li
940d969c7c Use a timeout when joining threads in HttpTunnelServerTests
See gh-29522
2022-01-31 16:01:04 +01:00
Andy Wilkinson
7b35fabf07 Upgrade to Derby 10.15.2.0
Closes gh-29509
2022-01-20 17:37:01 +00:00
Andy Wilkinson
de3b9a4910 Remove code deprecated for removal in 2.x
Closes gh-29482
2022-01-19 17:25:14 +00:00
Andy Wilkinson
12cd97a20c Reinstate support for Thymeleaf 2022-01-18 16:01:29 +00:00
Phillip Webb
06398eabed Merge branch '2.7.x' 2022-01-04 12:26:24 -08:00
Phillip Webb
b25e92f3e2 Merge branch '2.6.x' into 2.7.x 2022-01-04 12:24:34 -08:00
Phillip Webb
760dcffd8b Merge branch '2.7.x' 2022-01-04 12:22:54 -08:00
Phillip Webb
f09bde2b60 Merge branch '2.6.x' into 2.7.x 2022-01-04 12:20:31 -08:00
Stephane Nicoll
09a71e5047 Merge branch '2.7.x' 2022-01-03 14:50:36 +01:00
Stephane Nicoll
b81c0047f8 Polish "Log the reason that led Devtools to restart the app"
See gh-28495
2022-01-03 14:48:39 +01:00
Artur Signell
0769b33e2e Log the reason that led Devtools to restart the app
See gh-28495
2022-01-03 14:25:12 +01:00
Brian Clozel
f61c87c3a7 Revert "Merge branch '2.7.x'"
This reverts commit f0677a119c, reversing
changes made to 938d58f32c.
2021-12-21 09:05:06 +01:00
Brian Clozel
f0677a119c Merge branch '2.7.x' 2021-12-21 09:04:10 +01:00
Brian Clozel
ce6747ccd6 Enable GraphiQL UI by default with Devtools
GraphiQL is useful when working on a GraphQL API - it allows
developers to craft queries and test newly developed feature. This
is not enabled by default, as this should not be exposed in production
without the developer's knowledge.

This commit flips this value when Spring Boot devtools is active for a
better developer experience.

See gh-29140
2021-12-21 08:33:31 +01:00
Andy Wilkinson
fe7b13ec46 Upgrade to Spring Framework 6 and Jakarta EE 9
Closes gh-28619
Closes gh-28620
Closes gh-28621
Closes gh-28622
Closes gh-28623
Closes gh-28624
Closes gh-28625
Closes gh-28626
Closes gh-28627
Closes gh-28628
Closes gh-28629
Closes gh-28630
Closes gh-28631
Closes gh-28632
Closes gh-28633
Closes gh-28634
Closes gh-28635
Closes gh-28636
Closes gh-28638
Closes gh-28639
Closes gh-28640
Closes gh-28644
Closes gh-28645
Closes gh-28650
Closes gh-28711
Closes gh-28866
Closes gh-28867
Closes gh-28868
Closes gh-28872

See gh-28641
See gh-28642
See gh-28643
See gh-28646
See gh-28647
See gh-28648
See gh-28649
See gh-28721
See gh-28869
See gh-28871
2021-11-30 20:32:16 +00:00
Scott Frederick
015dca1956 Remove support for Thymeleaf
Closes gh-28611
2021-11-30 15:55:47 +00:00
Andy Wilkinson
99f33ede14 Remove SecurityManager support
Closes gh-28213
2021-11-30 15:37:15 +00:00
Scott Frederick
4eed637481 Merge branch '2.5.x'
Closes gh-28789
2021-11-23 12:45:46 -06:00
Scott Frederick
12244a8edd Remove use of Thymeleaf from smoke tests
Closes gh-28788
2021-11-23 12:13:05 -06:00
Andy Wilkinson
2a342ef416 Merge branch '2.5.x'
Closes gh-28662
2021-11-12 23:40:35 +00:00
Andy Wilkinson
5e4a502b2d Merge branch '2.4.x' into 2.5.x
Closes gh-28661
2021-11-12 20:31:25 +00:00
Andy Wilkinson
2cec3971d7 Prohibit unwanted dependencies in all modules not just starters
Closes gh-28658
2021-11-12 20:04:35 +00:00
Leo Li
73e9c355f1 Polish
See gh-28501
2021-11-02 09:05:44 +01:00
Andy Wilkinson
b9f0ec5df8 Merge branch '2.5.x'
Closes gh-28443
2021-10-22 15:48:43 +01:00
Andy Wilkinson
4d811f66ec Merge branch '2.4.x' into 2.5.x
Closes gh-28442
2021-10-22 15:48:28 +01:00
Andy Wilkinson
7607587b6c Stabilize liveReloadOnClassPathChanged()
Closes gh-28441
2021-10-22 15:47:51 +01:00
Andy Wilkinson
14fb9c437d Merge branch '2.5.x'
See gh-28377
2021-10-19 11:03:51 +01:00
Andy Wilkinson
bc2bf840b4 Fix conditions on DevToolsR2dbcAutoConfiguration
See gh-28345
2021-10-19 11:03:20 +01:00
Phillip Webb
04123e0a0e Merge branch '2.5.x'
Closes gh-28377
2021-10-18 21:47:07 -07:00
Phillip Webb
b93a629dbe Shutdown in-memory R2DBC databases before devtools restart
Add `DevToolsR2dbcAutoConfiguration` to automatically shutdown in-memory
R2DBC databases before restarting. Prior to this commit, restarts that
involved SQL initialization scripts could fail due to dirty database
content.

The `DevToolsR2dbcAutoConfiguration` class is similar in design to
`DevToolsDataSourceAutoConfiguration`, but it applies to both pooled
and non-pooled connection factories. The `DataSource` variant does not
need to deal with non-pooled connections due to the fact that
`EmbeddedDataSourceConfiguration` calls `EmbeddedDatabase.shutdown`
as a `destroyMethod`. With R2DB we don't have an `EmbeddedDatabase`
equivalent so we can always trigger a shutdown for devtools.

Fixes gh-28345
2021-10-18 21:46:12 -07:00
Leo Li
1770f065a5 Polish
See gh-28239
2021-10-13 09:07:33 +02:00
Andy Wilkinson
48b1175559 Merge branch '2.5.x'
Closes gh-28263
2021-10-08 12:39:45 +01:00
Andy Wilkinson
d47260637b Merge branch '2.4.x' into 2.5.x
Closes gh-28262
2021-10-08 12:39:17 +01:00
Andy Wilkinson
c5d45585d9 Remove unnecessary overrides of finalize
Closes gh-28209
2021-10-08 12:39:00 +01:00
Phillip Webb
55a1ec72cc Update copyright year of changed files 2021-09-21 11:25:50 -07:00
dreis2211
cf0fcafd13 Polish
See gh-27940
2021-09-21 08:08:29 +02:00
Stephane Nicoll
c62a6819fe Polish "Add startup time metrics"
See gh-27878
2021-09-16 13:33:08 +02:00
bono007
2e67963bfe Add startup time metrics
See gh-27878
2021-09-16 13:19:20 +02:00
Andy Wilkinson
2dfdcf5e88 Merge branch '2.5.x'
Closes gh-27754
2021-08-18 13:52:23 +01:00
Andy Wilkinson
0d904b8868 Merge branch '2.4.x' into 2.5.x
Closes gh-27753
2021-08-18 13:51:49 +01:00
Andy Wilkinson
0b7994a679 Polish "Use 2012 for copyright beginning year"
See gh-27734
2021-08-18 13:48:29 +01:00
Andy Wilkinson
1bca2bbc85 Merge branch '2.5.x'
Closes gh-27511
2021-07-27 14:37:30 +01:00
Andy Wilkinson
30f63cc0cf Merge branch '2.4.x' into 2.5.x
Closes gh-27510
2021-07-27 14:37:16 +01:00
Andy Wilkinson
ade922baec Stabilize LiveReloadServerTests
Closes gh-27503
2021-07-27 14:36:31 +01:00
Andy Wilkinson
3ff20ed4d9 Merge branch '2.5.x'
Closes gh-27485
2021-07-24 09:44:35 +01:00
Andy Wilkinson
dead33a90a Merge branch '2.4.x' into 2.5.x
Closes gh-27484
2021-07-24 09:44:18 +01:00
Andy Wilkinson
cff1827e27 Stabilize socketChannelClosedTriggersTunnelClose
Closes gh-27483
2021-07-24 09:43:41 +01:00
Phillip Webb
7e9ac39f0d Update copyright year of changed files 2021-07-22 09:50:37 -07:00
Andy Wilkinson
c211c971f1 Polishing
Closes gh-27429
2021-07-21 11:07:15 +01:00
Andy Wilkinson
8e7a6ceb44 Polish "Make dev tools' home directory configurable"
See gh-17924
2021-07-19 17:56:34 +01:00
sfeldstein
b9dbfad473 Make dev tools' home directory configurable
This allows separate projects to keep their own settings where common
settings such as spring.* or server.* don't conflict.

See gh-17924
2021-07-19 17:56:34 +01:00
Stephane Nicoll
dc5acb0019 Remove deprecated code flagged for removal
Closes gh-27303
2021-07-14 11:50:01 +02:00
Phillip Webb
f32f4a2e3d Merge branch '2.4.x' into 2.5.x
Closes gh-27204
2021-07-08 11:36:25 -07:00
Phillip Webb
84110a22bc Don't change case of 'Sec-WebSocket-Key'
Polish commit 5ca687c9a6 had an accidental side-effect of changing
the 'Sec-WebSocket-Key' header value to lowercase. This breaks
connections since the value needs to be echoed unchanged in the
"Sec-WebSocket-Accept" header.

Fixes gh-27147
2021-07-08 11:29:29 -07:00
Phillip Webb
a76e5c043e Update copyright year of changed files 2021-06-23 21:01:45 -07:00
Phillip Webb
b75c79cc7c Merge branch '2.4.x' into 2.5.x
Closes gh-26919
2021-06-15 17:30:31 -07:00
Phillip Webb
5ca687c9a6 Polish 'Make livereload websocket headers case insensitive'
See gh-26813

Closes gh-26813
2021-06-15 17:29:45 -07:00
Francis Lavoie
8755512719 Make livereload websocket headers case insensitive
Update livereload `Connection` handling code so that websocket headers
are no longer case sensitive.

See gh-26813
2021-06-15 16:50:34 -07:00
Andy Wilkinson
44187bc6bf Merge branch '2.4.x' into 2.5.x
See gh-26901
2021-06-15 20:01:01 +01:00
Andy Wilkinson
7ba575d392 Prevent RestarterTests.testRestart from triggering unwanted restarts
See gh-26900
2021-06-15 19:59:37 +01:00
Andy Wilkinson
017ba504d7 Merge branch '2.4.x' into 2.5.x
Closes gh-26901
2021-06-14 19:16:10 +01:00
Andy Wilkinson
32effdba0a Try to stabilize RestarterTests.testRestart
Closes gh-26900
2021-06-14 19:15:09 +01:00
Andy Wilkinson
5de5390ef9 Merge branch '2.4.x' into 2.5.x
Closes gh-26889
2021-06-14 11:05:53 +01:00
Andy Wilkinson
c89430e174 Try to stabilize httpConnectionsAreClosedAfterLongPollTimeout
Closes gh-26888
2021-06-14 11:04:23 +01:00
Andy Wilkinson
3858c6299d Merge branch '2.4.x' into 2.5.x
Closes gh-26886
2021-06-14 10:52:53 +01:00
Andy Wilkinson
7a14a53250 Try to stabilize TunnelClientTests.addListener()
Closes gh-26885
2021-06-14 10:52:12 +01:00
Andy Wilkinson
0ab7144bf1 Merge branch '2.4.x' into 2.5.x
Closes gh-26870
2021-06-11 15:55:31 +01:00
Andy Wilkinson
608c4509f8 Try to stabilise SocketTargetServerConnectionTests
Closes gh-26857
2021-06-11 15:55:01 +01:00
Andy Wilkinson
00b9e7f498 Merge branch '2.4.x' into 2.5.x
Closes gh-26868
2021-06-11 15:49:57 +01:00
Andy Wilkinson
186658cc12 Attempt to stabilize stopTriggersTunnelClose
Closes gh-26856
2021-06-11 15:48:50 +01:00
Stephane Nicoll
d3c817b7ba Polish "Remove unnecessary throws declaration in tests"
See gh-26441
2021-05-17 09:36:53 +02:00
weixsun
8a2be288a3 Remove unnecessary throws declaration in tests
See gh-26441
2021-05-17 09:31:51 +02:00
Andy Wilkinson
a164658dab Merge branch '2.4.x'
Closes gh-26349
2021-05-04 09:46:23 +01:00
Andy Wilkinson
cb1af35dde Merge branch '2.3.x' into 2.4.x
Closes gh-26348
2021-05-04 09:46:01 +01:00
Andy Wilkinson
6440843358 Do not wait indefinitely in initialize test if refresh fails
Closes gh-26286
2021-05-04 09:44:56 +01:00
Andy Wilkinson
048463742d Merge branch '2.4.x'
See gh-25985
2021-04-09 15:06:13 +01:00
Andy Wilkinson
06168bb130 Polish FileSystemWatcherTests
See gh-25982
2021-04-09 15:05:29 +01:00
Andy Wilkinson
91473cc326 Merge branch '2.4.x'
Closes gh-25983
2021-04-09 14:40:56 +01:00
Andy Wilkinson
638aa87d13 Merge branch '2.3.x' into 2.4.x
Closes gh-25982
2021-04-09 14:40:34 +01:00
Andy Wilkinson
02e6b7c89c Make FileSystemWatcherTests more robust
Previously, several tests in FileSystemWatcherTests assumed that all
of the changes detected by the watcher would be grouped into a single
change set. This assumption breaks down when a test runs slowly (due
to CPU or IO contention, for example), and making changes to the file
system takes long then the watcher's polling interval. When this
happens, the changes will be split across two (or more).

This commit attempts to make the tests more robust. The tests now
tolerate multiple changes sets by combining them and asserting that
across the n change sets, only the expected changes were detected.

Closes gh-25901
2021-04-09 14:35:41 +01:00
Andy Wilkinson
22b02a6c6f Merge branch '2.4.x'
Closes gh-25823
2021-03-29 14:39:17 +01:00
Andy Wilkinson
a025f3d252 Merge branch '2.3.x' into 2.4.x
Closes gh-25822
2021-03-29 14:38:38 +01:00
Andy Wilkinson
896f20e1d3 Improve diagnostics of ClassPathFileSystemWatcherTests
Closes gh-25821
2021-03-29 14:37:25 +01:00
Phillip Webb
11a94ee6f0 Merge branch '2.3.x' into 2.4.x 2021-03-23 12:52:07 -07:00
Andy Wilkinson
b5843cfd4d Merge branch '2.4.x' 2021-03-11 15:46:55 +00:00
Andy Wilkinson
24d729ee3b Close ClassLoader so jar it references can be deleted on Windows
Polishes 952ac7b8
2021-03-11 15:44:52 +00:00
Andy Wilkinson
29ba18afec Merge branch '2.4.x'
Closes gh-25584
Fixes gh-25367 in 2.5.x
2021-03-10 17:13:07 +00:00
Andy Wilkinson
952ac7b8d2 Don't use RestartClassLoader when proxying classes it did not load
Fixes gh-19010
Fixes gh-25367
2021-03-10 17:12:38 +00:00
Phillip Webb
a1dc107144 Update copyright year of changed files 2021-02-18 16:23:56 -08:00
Madhura Bhave
29ab9fd596 Merge branch '2.4.x'
Closes gh-25351
2021-02-17 15:28:34 -08:00
Madhura Bhave
b5e1787641 Make devtools securityFilterChain back-off in presence of WebSecurityConfigurerAdapter
Fixes gh-25147
2021-02-17 15:26:11 -08:00
Stephane Nicoll
ca9b583c7d Merge branch '2.4.x'
Closes gh-25271
2021-02-14 09:37:49 +01:00
Stephane Nicoll
61e9d04c68 Update copyright of changes files
See gh-25266
2021-02-14 09:35:36 +01:00
izeye
f48893def5 Polish 2021-02-14 09:34:30 +01:00
Stephane Nicoll
5017d59d56 Merge branch '2.4.x'
Closes gh-25184
2021-02-11 13:55:42 +01:00
Stephane Nicoll
75fc896321 Avoid Illegal reflective access warnings with devtools
This commit improves RestartClassLoader to use a method introduced in
SmartClassLoader to avoid triggering a warning on Java 11 and later.

See https://github.com/spring-projects/spring-framework/issues/26403

Closes gh-24857
2021-02-11 13:55:10 +01:00
Andy Wilkinson
db781a0d84 Merge branch '2.4.x'
See gh-25077
2021-02-02 15:14:18 +00:00
Andy Wilkinson
788a42d694 Merge branch '2.3.x' into 2.4.x
See gh-25076
2021-02-02 15:12:27 +00:00
Andy Wilkinson
67479b6380 Add junit-platform-launcher dependency by convention
Closes gh-25074
2021-02-02 13:03:21 +00:00
Andy Wilkinson
f2ebf10a4a Merge branch '2.4.x'
Closes gh-24800
2021-01-13 11:14:58 +00:00
Andy Wilkinson
a95a7e3d40 Allow restart to be enabled when CL not named AppClassLoader
Previously, the restart initializer that enables restart when
-Dspring.devtools.restart.enabled=true is set had no effect when the
ClassLoader's name did not contain AppClassLoader. This commit updates
RestartApplicationListener to use the correct RestartInitializer when
the system property has forcibly enabled restart.

When restart is enabled a SilentExitException is thrown and it should be
caught and handled by the SilentExitExceptionHandler. When the
application is invoked via one of the loader's LauncherClasses
reflection is used and this exception becomes wrapped in an
InvocationTargetEception. Previously, this wrapping prevented
SilentExitExceptionHandler from handling the exception. This commit
updates the handler to look for an InvocationTargetException with a
SilentExitException target in addition to continuing to look for a
SilentExitException directly.

Fixes gh-24797
2021-01-13 10:12:12 +00:00
Stephane Nicoll
e4618cfb8d Delete ErrorProperties.IncludeStacktrace
Closes gh-21286
2020-12-24 10:35:04 +01:00
Andy Wilkinson
fb0f27ce2d Move EMFDependsOnPostProcessor into autoconfigure.orm.jpa
Closes gh-24452
2020-12-15 14:20:50 +00:00
Phillip Webb
72d36e0c07 Update copyright year of changed files 2020-12-10 10:46:04 -08:00
dreis2211
faec47d332 Remove System.out.println in DevToolsPropertyDefaultsPostProcessor
See gh-24325
2020-12-03 16:25:03 -08:00
Stephane Nicoll
c86ce27117 Use non deprecated properties to override web resources cache
Closes gh-24203
2020-11-18 17:40:35 +01:00
Andy Wilkinson
6df10842d2 Allow Devtools to be enabled irrespective of the launching ClassLoader
Closes gh-21424
2020-11-12 13:22:40 +00:00
Andy Wilkinson
4c777c6df7 Deprecate classpath logging listener and stop registering by default
Closes gh-23138
2020-11-03 17:21:36 +00:00
Andy Wilkinson
c22e655848 Move spring.resources.* properties to spring.web.resources.*
Closes gh-23917
2020-10-29 16:08:50 +00:00
Andy Wilkinson
9854e3019b Polish 2020-10-27 14:59:10 +00:00
Andy Wilkinson
689d0c8307 Remove skipping of spring-boot-* projects from DevTools restart triggers
Closes gh-23158
2020-10-27 12:09:17 +00:00
Madhura Bhave
0818f27f44 Configure WebSecurity using WebSecurityCustomizer
Replace `WebSecurityConfigurer` and `WebSecurityConfigurerAdapter`
configurations with `WebSecurityCustomizer` or `SecurityFilterChain`
beans.

Closes gh-23421
2020-10-26 23:47:14 -07:00
Andy Wilkinson
a19a565410 Stop registering the default servlet by default
Previously, the default servlet was registered automatically when using
embedded Jetty, Tomcat, or Undertow. However, it is not used by the
majority of applications where Spring MVC's DispatcherServlet will be
the only servlet that's needed. As such configuring the default servlet
was wasting CPU and memory.

This commit changes the default for registering the default servlet to
false. It can be re-enabled by setting
server.servlet.register-default-servlet=true.

Closes gh-22915
2020-09-29 11:52:19 +01:00
Phillip Webb
1ae1436211 Refactor BootstrapRegistry support
Refactor `BootstrapRegistry` support following initial prototype work
with the Spring Cloud team.

This update splits the `BootstrapRegistry` API into `BootstrapRegistry`,
`BootstrapContext` and  `ConfigurableBootstrapContext` interfaces and
moves it to the same package as `SpringApplication`.

A new `Bootstrapper` interface has been introduced that can be added
to the `SpringApplication` to customize the `BootstrapRegistry` before
it's used.

Closes gh-23326
2020-09-17 00:31:00 -07:00
Phillip Webb
8ccf7ee489 Make file detection more resilient across restarts
Retain file snapshot state across devtools restarts to help prevent
detection failures.

Closes gh-19543
2020-08-31 13:44:43 -07:00
Andy Wilkinson
19558ecda7 Merge branch '2.3.x' 2020-08-25 16:51:17 +01:00
Andy Wilkinson
d133f228e2 Increase wait times in DevToolsIntegrationTests
See gh-22909
2020-08-25 16:50:56 +01:00
Phillip Webb
2260657781 Add BootstrapRegistry for long lived instances
Add a simple `BootstrapRegistry` that can be used to store and share
object instances across `EnvironmentPostProcessors`. The registry
can be injected into the constructor of any `EnvironmentPostProcessor`.

Registrations can also perform additional actions when the
`ApplicationContext` has been prepared. For example, they could register
the the bootstrap instances as beans so that they become available to
the application.

See gh-22956
2020-08-20 21:45:02 -07:00
Madhura Bhave
bbbbe8e4d2 Make security auto-configs back off when SecurityFilterChain present
Closes gh-22739
2020-08-14 12:24:25 -07:00
Andy Wilkinson
c9b8a05321 Merge branch '2.3.x' 2020-08-14 15:41:20 +01:00
Andy Wilkinson
3e35fd480f Wait longer for server port and improve diagnostics on timeout
See gh-22909
2020-08-14 15:34:41 +01:00
Andy Wilkinson
147b048a07 Merge branch '2.3.x'
See gh-22909
2020-08-12 13:24:50 +01:00
Andy Wilkinson
2b1bb2f18f Improve diagnostics when remote application does not start as expected
See gh-22909
2020-08-12 13:24:17 +01:00
Andy Wilkinson
5e04e1f4a3 Merge branch '2.3.x'
Closes gh-22888
2020-08-11 14:34:27 +01:00
Andy Wilkinson
1896566bc8 Avoid duplicates with different versions in Devtools' int test deps
Closes gh-22887
2020-08-11 14:33:27 +01:00
Andy Wilkinson
969dd35e45 Upgrade to Mockito 3.4.6
Closes gh-22838
2020-08-10 15:22:03 +01:00
Stephane Nicoll
dac63fc3e5 Polish 2020-08-06 17:35:01 +02:00
Andy Wilkinson
7df49187fa Merge branch '2.3.x'
Closes gh-22738
2020-08-05 09:05:28 +01:00
Andy Wilkinson
94644f3814 Merge branch '2.2.x' into 2.3.x
Closes gh-22737
2020-08-05 09:05:10 +01:00
Andy Wilkinson
2238b0d797 Try to make FileSystemWatcherTests.waitsForQuietPeriod() more robust
Previously, waitsForQuietPeriod would iterate 10 times, touching a new
file and then sleeping for 100ms at it did so. With a quiet period of
200ms, this was intended to result in a single change set containing
10 files. However, the test would fail occasionally as multiple change
sets were detected. The test is multi-threaded and is, therefore, at
the mercy of the scheduler. If the thread that is iterating and
touching the files takes over 200ms to be scheduled – exceeding the
watcher's quiet period – the watcher may detect a change set while the
changes are still being made. Eliminating this possibilty would require
the test to participate in the watcher's synchronization, which would
require some changes to its implementation. Instead, this commit
aims to avoid the problem by sleeping for 1/10 of the time (10ms) and
expecting a single change set of 100 files. The hope is that the much
shorter sleep time will result in the file touching thread being
scheduled well within the 200ms quiet period.

Closes gh-22732
2020-08-05 09:00:49 +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
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
Andy Wilkinson
7864a7da52 Polish "Remove redundant bitwise operations"
See gh-22212
2020-07-07 10:37:44 +01:00
XenoAmess
de46d4bfd3 Remove redundant bitwise operations
See gh-22212
2020-07-07 10:37:26 +01:00
Andy Wilkinson
27c458ca26 Merge branch '2.3.x'
Closes gh-22160
2020-06-30 10:53:49 +01:00
Andy Wilkinson
f86831da9c Use TCCL at time of access for resource loading
Fixes gh-22119
2020-06-30 10:51:13 +01:00
Andy Wilkinson
ca76b60de2 Merge branch '2.3.x'
Closes gh-22021
2020-06-19 08:23:30 +01:00
Andy Wilkinson
136c9b1af8 Merge branch '2.2.x' into 2.3.x
Closes gh-22020
2020-06-19 08:23:15 +01:00
Andy Wilkinson
41173f7c40 Polish "Use Awaitility instead of Thread.sleep"
See gh-21988
2020-06-19 08:18:01 +01:00
Tomek Szmytka
c13385ea74 Use Awaitility instead of Thread.sleep
See gh-21988
2020-06-19 08:17:53 +01:00
Andy Wilkinson
f3220b16fe Merge branch '2.3.x' 2020-06-18 09:23:40 +01:00
Andy Wilkinson
8f7d71ca11 Merge branch '2.2.x' into 2.3.x 2020-06-18 09:23:21 +01:00
Andy Wilkinson
907b64a5eb Remove redundant stop() calls from LiveReloadServerTests 2020-06-18 09:23:02 +01:00
Andy Wilkinson
07fb4b065d Merge branch '2.3.x'
Closes gh-21940
2020-06-16 10:10:38 +01:00
Andy Wilkinson
0de466e06e Require dependency on s-b-dependencies to use its constraints
Previously, Spring Boot's modules published Gradle Module Metadata
(GMM) the declared a platform dependency on spring-boot-dependencies.
This provided versions for each module's own dependencies but also had
they unwanted side-effect of pulling in spring-boot-dependencies
constraints which would influence the version of other dependencies
declared in the same configuration. This was undesirable as users
should be able to opt in to this level of dependency management, either
by using the dependency management plugin or by using Gradle's built-in
support via a platform dependency on spring-boot-dependencies.

This commit reworks how Spring Boot's build uses
spring-boot-dependencies and spring-boot-parent to provide its own
dependency management. Configurations that aren't seen by consumers are
configured to extend a dependencyManagement configuration that has an
enforced platform dependency on spring-boot-parent. This enforces
spring-boot-parent's version constraints on Spring Boot's build without
making them visible to consumers. To ensure that the versions that
Spring Boot has been built against are visible to consumers, the
Maven publication that produces pom files and GMM for the published
modules is configured to use the resolved versions from the module's
runtime classpath.

Fixes gh-21911
2020-06-16 08:50:21 +01:00
Andy Wilkinson
6e68101b9f Upgrade to Postgresql 42.2.13
Closes gh-21859
2020-06-10 17:04:03 +01:00
Andy Wilkinson
daeca9f332 Restore Boot 2.2's compile-scoped dependencies
Fixes gh-21507
2020-06-03 12:55:11 +01:00
Scott Frederick
a30740f8d2 Separate server properties for message and errors
Prior to this commit, there was a property server.error.include-details
that allowed configuration of the message and errors attributes in a
server error response.

This commit separates the control of the message and errors attributes
into two separate properties named server.error.include-message and
server.error.include-binding-errors. When the message attribute is
excluded from a servlet response, the value is changed from a
hard-coded text value to an empty value.

Fixes gh-20505
2020-04-29 17:56:47 -05:00
Phillip Webb
ad1248e4ec Replace "folder" with "directory"
Consistently use the term "directory" instead of "folder"

Closes gh-21218
2020-04-28 19:20:24 -07:00
Stephane Nicoll
85e9f713b0 Update copyright year of changed files
See gh-21007
2020-04-25 08:50:51 +02:00
Johnny Lim
29717423a3 Remove this keyword on member method invocations
See gh-21007
2020-04-25 08:49:44 +02:00
Andy Wilkinson
dc75ca3942 Avoid capturing TCCL when creating DefaultResourceLoaders
Previously, DefaultResourceLoader instances were created using the
default constructor. This causes the resource loader to capture the
TCCL that was in place at that time. This can lead to a class loader
leak if the resource loader is referenced directly or indirectly from
a static field of a class loaded by a different class loader.

This commit updates the creation of DefaultResourceLoader instances
in main code so that the resource load will use the class loader of
the creating class. In almost all cases this will be the same class
loader as was the thread context class loader that was being captured
so the change in behavior is minimal. Crucially, it will still address
the situation where the TCCL was different.

Note the DevTools' ApplicationContextResourceLoader has been updated
to explicitly use the TCCL. This ensures that it uses the restart
class loader which is required for DevTools to function correctly.

Fixes gh-20900
2020-04-24 13:29:29 +01:00
Stephane Nicoll
ddcd1bc7bb Remove metadata for configuration keys that were removed in 2.0
Closes gh-19706
2020-04-23 16:14:13 +02:00
Stephane Nicoll
6c02daf2bc Merge branch '2.2.x'
Closes gh-21098
2020-04-23 14:12:37 +02:00
Stephane Nicoll
311952730e Merge branch '2.1.x' into 2.2.x
Closes gh-21097
2020-04-23 14:07:31 +02:00
Stephane Nicoll
291165f060 Order additional metadata according to lexicographic order
Closes gh-21095
2020-04-23 13:58:49 +02:00
Phillip Webb
bf41da5322 Update copyright year of changed files 2020-04-21 18:12:27 -07:00
Scott Frederick
70d4994502 Disable exception details on default error views
Prior to this commit, default error responses included the message
from a handled exception. When the exception was a BindException, the
error responses could also include an errors attribute containing the
details of the binding failure. These details could leak information
about the application.

This commit removes the exception message and binding errors detail
from error responses by default, and introduces a
`server.error.include-details` property that can be used to cause
these details to be included in the response.

Fixes gh-20505
2020-04-16 10:46:36 -05:00
Phillip Webb
ce1ae11c26 Merge branch '2.2.x' 2020-03-23 14:14:47 -07:00
Phillip Webb
16b5ea3414 Update copyright year of changed files 2020-03-23 14:13:33 -07:00
Stephane Nicoll
f470f27666 Merge branch '2.2.x'
Closes gh-20549
2020-03-17 18:15:19 +01:00
dreis2211
d9171d0afe Use @Configuration(proxyBeanMethods=false) wherever possible
See gh-20541
2020-03-17 17:17:38 +01:00
Andy Wilkinson
4fd8f376dc Merge branch '2.2.x'
Closes gh-20503
2020-03-11 14:02:49 +00:00
Andy Wilkinson
9fbb664db6 Avoid eager init when evaluating DevToolsDataSourceCondition
Previously, DevToolsDataSourceCondition called
getBeanNamesForType(Class) which could trigger unwanted initialization
of lazy init singletons and objects created by FactoryBeans.

This commit updates DevToolsDataSourceCondition to prohibit eager
init when getting the names of the beans of a particular type.

Fixes gh-20430
2020-03-11 14:02:16 +00:00
wycm
916a4743bb Polish
See gh-20419
2020-03-08 17:26:00 +01:00
Stephane Nicoll
5b92151dcb Update copyright of changed file
See gh-20407
2020-03-06 11:26:03 +01:00
wycm
67c2393a6a Polish
See gh-20407
2020-03-06 11:25:16 +01:00
dreis2211
fac6f08ca3 Use new AssertJ duration assertions
See gh-19985
2020-01-30 08:14:49 +01:00
dreis2211
d8e2349e47 Use Supplier variants of Assert
See gh-19864
2020-01-28 15:04:11 +01:00
Stephane Nicoll
e044817fe7 Migrate remaining use of ClassLoader.loadClass to Class.forName
Closes gh-19824
2020-01-23 13:15:45 +01:00
Stephane Nicoll
95be419527 Use Class.forName rather than ClassLoader.loadClass
This commit changes uses of ClassLoader.loadClass to Class.forName for
consistency with what was initiated in #19342 and better compatibility
with GraalVM.

Closes gh-19824
2020-01-23 10:47:53 +01:00
Phillip Webb
e0013454b5 Use parentheses when declaring dependencies
Update all dependencies declarations to use the form `scope(reference)`
rather than `scope reference`.

Prior to this commit we declared dependencies without parentheses unless
we were forced to add them due to an `exclude`.
2020-01-22 16:02:38 -08:00
Phillip Webb
0209cd3e4c Polish quote form used in Gradle scripts
Replace Gradle single quote strings with the double quote form
whenever possible. The change helps to being consistency to the
dependencies section where mostly single quotes were used, but
occasionally double quotes were required due to `${}` references.
2020-01-22 15:49:52 -08:00
Phillip Webb
bfd2ca7fd9 Polish Gradle expression references
Expand all expression `$` references to the full `${...}` form.
2020-01-21 18:33:33 -08:00
Andy Wilkinson
714a187d8f Rework dep mgmt again to avoid consumers picking up strict constraints
This paves the way for publishing Gradle module metadata once the
problem caused by snapshot versions and our two-step publication
process has been addressed.

See gh-19609
2020-01-15 12:33:18 +00:00
Andy Wilkinson
aefe52e4d0 Revert "Rework dep management to avoid consumers picking up strict constraints"
This reverts commit b34a311d02 as,
having disabled the publishing of Gradle's module metadata (4f75ab5),
the changes are no longer needed.

See gh-19609
2020-01-14 12:15:53 +00:00
Phillip Webb
862462b791 Update copyright year of changed files 2020-01-13 17:04:19 -08:00
Andy Wilkinson
b34a311d02 Rework dep management to avoid consumers picking up strict constraints
Previously, enforcedPlatform dependencies were using to pull in the
constraints defined in spring-boot-dependencies and
spring-boot-parent and applied them strictly so that the constrained
version had to be used. This worked as intended in Spring Boot's own
build but incorrectly enforced those same strict version requirements
on external consumers of Spring Boot's modules.

This commit reworks how Spring Boot defines its internal dependency
management so that platform dependencies are exposed to external
consumers while enforced platform dependencies are using internally.

See gh-19609
2020-01-13 19:59:56 +00:00
Andy Wilkinson
ce99db1902 Port the build to Gradle
Closes gh-19609
Closes gh-19608
2020-01-10 14:15:35 +00:00
Stephane Nicoll
2c1e81adf0 Polish 2019-12-26 10:42:40 +01:00
Madhura Bhave
8ec3ca74e1 Fix loading of devtools yaml files
Fixes gh-19081
2019-11-20 17:30:26 -08:00
Andy Wilkinson
847ec3c0e1 Add missing %s to warning message format string
Closes gh-18710
2019-10-24 10:37:24 +01:00
Phillip Webb
597baf9774 Polish "Optimize logger calls"
See gh-18710
2019-10-23 21:00:05 -07:00
wycm
240b1f9e29 Optimize logger calls
Guard logger calls to ensure that they are only made when the
level is set.

See gh-18710
2019-10-23 20:59:11 -07:00
dreis2211
8ecdf919f8 Fix Mockito deprecations
See gh-18689
2019-10-23 09:49:33 +02:00
Phillip Webb
714c9b9804 Polish 2019-10-22 13:12:09 -07:00
Stephane Nicoll
4d5d90847e Merge branch '2.1.x'
Closes gh-18682
2019-10-22 09:41:04 +02:00
wycm
681a94b0d5 Optimize debug level logs
See gh-18604
2019-10-22 09:36:48 +02:00
Kant Leung
2f73e196af Polish
See gh-18534
2019-10-08 07:38:21 -05:00
Andy Wilkinson
078536aded Merge branch '2.1.x'
Closes gh-18502
2019-10-03 15:34:32 +01:00
Andy Wilkinson
f42b442ce2 Fix handling of encoded URLs in Class-Path manifest attribute
Fixes gh-18410
2019-10-03 15:30:33 +01:00
Phillip Webb
795303d667 Replace depends-on post processor configurations
Replace `AbstractDependsOnBeanFactoryPostProcessor` `@Configuration`
classes with simple `@Import` component classes.

Closes gh-18382
2019-10-02 21:41:31 -07:00
Andy Wilkinson
46c30d6bb0 Merge branch '2.1.x'
Closes gh-18476
2019-10-02 10:48:57 +01:00
Andy Wilkinson
3d4157ad6d Correct SCM URLs in published poms
Previously, Maven's default behaviour was relied up which resulted
in the artifact ID being appended to each URL as it was inherited.
This behaviour can only be disabled in Maven 3.6 and later, a version
that we cannot use due to an incompatibility with the Flatten Plugin.

This commit works around Maven's default behaviour by defining
properties for the SCM URL, connection, and developer connection and
then explicitly defining the settings in each pom using these
properties. The explicit definition of the properties in each pom
prevents them being inherited from the parent, thereby disabling the
unwanted appending of the artifact ID to the URL.

Fixes gh-18328
2019-10-02 10:48:30 +01:00
Phillip Webb
1528b6c2f8 Polish 2019-09-28 22:28:23 -07:00