Commit Graph

416 Commits (185c4968c2d0d9309b6e38a2e2a63790c4f03325)

Author SHA1 Message Date
Andy Wilkinson 32effdba0a Try to stabilize RestarterTests.testRestart
Closes gh-26900
3 years ago
Andy Wilkinson 5de5390ef9 Merge branch '2.4.x' into 2.5.x
Closes gh-26889
3 years ago
Andy Wilkinson c89430e174 Try to stabilize httpConnectionsAreClosedAfterLongPollTimeout
Closes gh-26888
3 years ago
Andy Wilkinson 3858c6299d Merge branch '2.4.x' into 2.5.x
Closes gh-26886
3 years ago
Andy Wilkinson 7a14a53250 Try to stabilize TunnelClientTests.addListener()
Closes gh-26885
3 years ago
Andy Wilkinson 0ab7144bf1 Merge branch '2.4.x' into 2.5.x
Closes gh-26870
3 years ago
Andy Wilkinson 608c4509f8 Try to stabilise SocketTargetServerConnectionTests
Closes gh-26857
3 years ago
Andy Wilkinson 00b9e7f498 Merge branch '2.4.x' into 2.5.x
Closes gh-26868
3 years ago
Andy Wilkinson 186658cc12 Attempt to stabilize stopTriggersTunnelClose
Closes gh-26856
3 years ago
Stephane Nicoll d3c817b7ba Polish "Remove unnecessary throws declaration in tests"
See gh-26441
4 years ago
weixsun 8a2be288a3 Remove unnecessary throws declaration in tests
See gh-26441
4 years ago
Andy Wilkinson a164658dab Merge branch '2.4.x'
Closes gh-26349
4 years ago
Andy Wilkinson cb1af35dde Merge branch '2.3.x' into 2.4.x
Closes gh-26348
4 years ago
Andy Wilkinson 6440843358 Do not wait indefinitely in initialize test if refresh fails
Closes gh-26286
4 years ago
Andy Wilkinson 048463742d Merge branch '2.4.x'
See gh-25985
4 years ago
Andy Wilkinson 06168bb130 Polish FileSystemWatcherTests
See gh-25982
4 years ago
Andy Wilkinson 91473cc326 Merge branch '2.4.x'
Closes gh-25983
4 years ago
Andy Wilkinson 638aa87d13 Merge branch '2.3.x' into 2.4.x
Closes gh-25982
4 years ago
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
4 years ago
Andy Wilkinson 22b02a6c6f Merge branch '2.4.x'
Closes gh-25823
4 years ago
Andy Wilkinson a025f3d252 Merge branch '2.3.x' into 2.4.x
Closes gh-25822
4 years ago
Andy Wilkinson 896f20e1d3 Improve diagnostics of ClassPathFileSystemWatcherTests
Closes gh-25821
4 years ago
Phillip Webb 11a94ee6f0 Merge branch '2.3.x' into 2.4.x 4 years ago
Andy Wilkinson b5843cfd4d Merge branch '2.4.x' 4 years ago
Andy Wilkinson 24d729ee3b Close ClassLoader so jar it references can be deleted on Windows
Polishes 952ac7b8
4 years ago
Andy Wilkinson 29ba18afec Merge branch '2.4.x'
Closes gh-25584
Fixes gh-25367 in 2.5.x
4 years ago
Andy Wilkinson 952ac7b8d2 Don't use RestartClassLoader when proxying classes it did not load
Fixes gh-19010
Fixes gh-25367
4 years ago
Phillip Webb a1dc107144 Update copyright year of changed files 4 years ago
Madhura Bhave 29ab9fd596 Merge branch '2.4.x'
Closes gh-25351
4 years ago
Madhura Bhave b5e1787641 Make devtools securityFilterChain back-off in presence of WebSecurityConfigurerAdapter
Fixes gh-25147
4 years ago
Stephane Nicoll ca9b583c7d Merge branch '2.4.x'
Closes gh-25271
4 years ago
Stephane Nicoll 61e9d04c68 Update copyright of changes files
See gh-25266
4 years ago
izeye f48893def5 Polish 4 years ago
Stephane Nicoll 5017d59d56 Merge branch '2.4.x'
Closes gh-25184
4 years ago
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
4 years ago
Andy Wilkinson db781a0d84 Merge branch '2.4.x'
See gh-25077
4 years ago
Andy Wilkinson 788a42d694 Merge branch '2.3.x' into 2.4.x
See gh-25076
4 years ago
Andy Wilkinson 67479b6380 Add junit-platform-launcher dependency by convention
Closes gh-25074
4 years ago
Andy Wilkinson f2ebf10a4a Merge branch '2.4.x'
Closes gh-24800
4 years ago
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
4 years ago
Stephane Nicoll e4618cfb8d Delete ErrorProperties.IncludeStacktrace
Closes gh-21286
4 years ago
Andy Wilkinson fb0f27ce2d Move EMFDependsOnPostProcessor into autoconfigure.orm.jpa
Closes gh-24452
4 years ago
Phillip Webb 72d36e0c07 Update copyright year of changed files 4 years ago
dreis2211 faec47d332 Remove System.out.println in DevToolsPropertyDefaultsPostProcessor
See gh-24325
4 years ago
Stephane Nicoll c86ce27117 Use non deprecated properties to override web resources cache
Closes gh-24203
4 years ago
Andy Wilkinson 6df10842d2 Allow Devtools to be enabled irrespective of the launching ClassLoader
Closes gh-21424
4 years ago
Andy Wilkinson 4c777c6df7 Deprecate classpath logging listener and stop registering by default
Closes gh-23138
4 years ago
Andy Wilkinson c22e655848 Move spring.resources.* properties to spring.web.resources.*
Closes gh-23917
4 years ago
Andy Wilkinson 9854e3019b Polish 4 years ago
Andy Wilkinson 689d0c8307 Remove skipping of spring-boot-* projects from DevTools restart triggers
Closes gh-23158
4 years ago
Madhura Bhave 0818f27f44 Configure WebSecurity using WebSecurityCustomizer
Replace `WebSecurityConfigurer` and `WebSecurityConfigurerAdapter`
configurations with `WebSecurityCustomizer` or `SecurityFilterChain`
beans.

Closes gh-23421
4 years ago
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
4 years ago
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
4 years ago
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
4 years ago
Andy Wilkinson 19558ecda7 Merge branch '2.3.x' 4 years ago
Andy Wilkinson d133f228e2 Increase wait times in DevToolsIntegrationTests
See gh-22909
4 years ago
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
4 years ago
Madhura Bhave bbbbe8e4d2 Make security auto-configs back off when SecurityFilterChain present
Closes gh-22739
4 years ago
Andy Wilkinson c9b8a05321 Merge branch '2.3.x' 4 years ago
Andy Wilkinson 3e35fd480f Wait longer for server port and improve diagnostics on timeout
See gh-22909
4 years ago
Andy Wilkinson 147b048a07 Merge branch '2.3.x'
See gh-22909
4 years ago
Andy Wilkinson 2b1bb2f18f Improve diagnostics when remote application does not start as expected
See gh-22909
4 years ago
Andy Wilkinson 5e04e1f4a3 Merge branch '2.3.x'
Closes gh-22888
4 years ago
Andy Wilkinson 1896566bc8 Avoid duplicates with different versions in Devtools' int test deps
Closes gh-22887
4 years ago
Andy Wilkinson 969dd35e45 Upgrade to Mockito 3.4.6
Closes gh-22838
4 years ago
Stephane Nicoll dac63fc3e5 Polish 4 years ago
Andy Wilkinson 7df49187fa Merge branch '2.3.x'
Closes gh-22738
4 years ago
Andy Wilkinson 94644f3814 Merge branch '2.2.x' into 2.3.x
Closes gh-22737
4 years ago
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
4 years ago
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
4 years ago
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>
4 years ago
Andy Wilkinson 7864a7da52 Polish "Remove redundant bitwise operations"
See gh-22212
4 years ago
XenoAmess de46d4bfd3 Remove redundant bitwise operations
See gh-22212
4 years ago
Andy Wilkinson 27c458ca26 Merge branch '2.3.x'
Closes gh-22160
4 years ago
Andy Wilkinson f86831da9c Use TCCL at time of access for resource loading
Fixes gh-22119
4 years ago
Andy Wilkinson ca76b60de2 Merge branch '2.3.x'
Closes gh-22021
4 years ago
Andy Wilkinson 136c9b1af8 Merge branch '2.2.x' into 2.3.x
Closes gh-22020
4 years ago
Andy Wilkinson 41173f7c40 Polish "Use Awaitility instead of Thread.sleep"
See gh-21988
4 years ago
Tomek Szmytka c13385ea74 Use Awaitility instead of Thread.sleep
See gh-21988
4 years ago
Andy Wilkinson f3220b16fe Merge branch '2.3.x' 4 years ago
Andy Wilkinson 8f7d71ca11 Merge branch '2.2.x' into 2.3.x 4 years ago
Andy Wilkinson 907b64a5eb Remove redundant stop() calls from LiveReloadServerTests 4 years ago
Andy Wilkinson 07fb4b065d Merge branch '2.3.x'
Closes gh-21940
4 years ago
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
4 years ago
Andy Wilkinson 6e68101b9f Upgrade to Postgresql 42.2.13
Closes gh-21859
5 years ago
Andy Wilkinson daeca9f332 Restore Boot 2.2's compile-scoped dependencies
Fixes gh-21507
5 years ago
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
5 years ago
Phillip Webb ad1248e4ec Replace "folder" with "directory"
Consistently use the term "directory" instead of "folder"

Closes gh-21218
5 years ago
Stephane Nicoll 85e9f713b0 Update copyright year of changed files
See gh-21007
5 years ago
Johnny Lim 29717423a3 Remove this keyword on member method invocations
See gh-21007
5 years ago
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
5 years ago
Stephane Nicoll ddcd1bc7bb Remove metadata for configuration keys that were removed in 2.0
Closes gh-19706
5 years ago
Stephane Nicoll 6c02daf2bc Merge branch '2.2.x'
Closes gh-21098
5 years ago
Stephane Nicoll 311952730e Merge branch '2.1.x' into 2.2.x
Closes gh-21097
5 years ago
Stephane Nicoll 291165f060 Order additional metadata according to lexicographic order
Closes gh-21095
5 years ago
Phillip Webb bf41da5322 Update copyright year of changed files 5 years ago
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
5 years ago
Phillip Webb ce1ae11c26 Merge branch '2.2.x' 5 years ago
Phillip Webb 16b5ea3414 Update copyright year of changed files 5 years ago
Stephane Nicoll f470f27666 Merge branch '2.2.x'
Closes gh-20549
5 years ago