Commit Graph

144 Commits

Author SHA1 Message Date
Phillip Webb
99dad81e9a Update copyright header year for changed files 2018-05-04 12:15:13 -07:00
Phillip Webb
4e96587dc8 Polish modifier declaration ordering
Follow that Java language specification.
2018-05-03 09:46:15 -07:00
Phillip Webb
3ee777e142 Polish ternary expressions
Consistently format ternary expressions and always favor `!=` as the
the check.
2018-05-03 09:46:15 -07:00
Andy Wilkinson
bcbf7b5511 Update ChangeableUrlsTests to cope with URL-like Windows file paths
Closes gh-10268
2017-10-02 12:53:25 +01:00
Andy Wilkinson
c27d678b81 Improve handling of absolute URLs in Class-Path manifest attribute
Closes gh-10268
2017-09-29 11:45:57 +01:00
Andy Wilkinson
7eb9193862 Tolerate absolute URLs in manifest's Class-Path attribute
Closes gh-10268
2017-09-25 16:47:27 +01:00
Andy Wilkinson
59122358d3 Clean up and format code 2017-06-16 08:58:14 +01:00
Stephane Nicoll
cbdab9edb3 Add support for custom ProtocolResolver with Devtools
Prior to this commit, custom `ProtocolResolvers` set on the
`ApplicationContext` were lost when Devtools is used as the customized
`ResourceLoader` did not copy any customization made to the default
resource loader.

This commit makes sure to copy any `ProtocolResolver` set on the context.

Closes gh-9331
2017-06-06 16:04:12 +02:00
Stephane Nicoll
934d33685a Polish
See gh-8879
2017-04-11 09:40:54 +02:00
Andy Wilkinson
bccbbc145e Merge branch '1.4.x' into 1.5.x 2017-04-07 13:49:19 +01:00
Andy Wilkinson
60505a4fae Don't shut down "in-memory" DB running as a server on DevTools restart
Closes gh-8702
2017-04-07 13:47:40 +01:00
Andy Wilkinson
155d55097f Merge branch '1.4.x' into 1.5.x 2017-04-04 12:21:43 +01:00
Andy Wilkinson
47de05b52c Update Devtools to ignore manifest Class-Path entries that do not exist
Closes gh-8623
2017-04-04 12:15:51 +01:00
Andy Wilkinson
627edc0f7a Use a different approach to disable HATEOAS Objenesis instance's cache
Previously, reflection was used to set the OBJENESIS field of
DummyInvocationUtils with an Objenesis instance that does not use
caching. This has stopped working as the field is now declared final.

This commit updates the approach take by HateoasObjenesisCacheDisabler
to disable Objenesis's cache. Rather than changing the value of the
OBJENESIS field on DummyInvocationUtils, the cache field on the
ObjenesisStd instance is set to null instead. This has the desired
effect of disabling Objenesis's caching.

See gh-3784
Closes gh-8335
2017-02-28 12:24:19 +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
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
Andy Wilkinson
531cf5d4f6 Merge branch '1.4.x' into 1.5.x 2017-01-19 09:28:14 +00:00
Andy Wilkinson
6a0fb8e44c Update DevTools' ResourceLoader to delegate to user's custom loader
Previously, when DevTools' was used it would set the application
context's ResourceLoader and overwrite any custom ResourceLoader that
had been configured. On the rare occasion when the user had customized
the ResourceLoader this meant that the customization was lost and
certain resources would become unavailable.

This commit updates DevTools' ResourceLoader to delegate a custom
ResourceLoader if one has been configured. If one has not been
configured it delegates as before, i.e. to
WebApplicationContextResourceLoader for web applications and to
DefaultResourceLoader for all others apps.

Closes gh-8010
2017-01-19 09:28:09 +00:00
Andy Wilkinson
6cab03de0b Merge branch '1.4.x' into 1.5.x 2017-01-17 10:39:09 +00:00
Andy Wilkinson
69320180d9 Make FileSystemWatcherTests.waitsForPollingInterval more robust
The intent of the test is to:

1. Make a change
2. Sleep for long enough for that change to be picked up
3. Make another change
4. Stop that watcher after 1 further scan has been performed
5. Assert that a further scan was performed by checking that two
   separate sets of changes (step 1 and step 3) have been picked up

Previously, step 2 relied on simply sleeping for a period of time
longer than the polling interval. In reality, the polling interval
is only a minimum time between scans and the actual time between them
depends on thread scheduling, GC pauses, etc. This lead to the
test failing intermittently if the scan didn't happen in a timely
manner.

This commit removes the sleep and replaces it with a while loop that
waits for first change to be picked up. This ensures that the second
change will be detected separately from the first and that two
separate change sets should always be available once the watcher has
stopped.

See gh-7782
2017-01-17 10:30:47 +00:00
Johnny Lim
f915ae197a Polish 2017-01-04 09:53:45 +01:00
Phillip Webb
b76978ff7e Try to prevent Travis build failures
Update LiveReloadServerTests which seems to be failing intermittently
on Travis.
2016-12-30 12:22:37 -08:00
Phillip Webb
aacf5d660f Update copyright year for changed files 2016-12-30 11:53:51 -08:00
Phillip Webb
8b69856fc9 Polish 2016-12-28 15:23:26 -08:00
Phillip Webb
97d7ffd8e8 Merge branch '1.4.x' into 1.5.x 2016-12-28 14:48:05 -08:00
Phillip Webb
61c931943f Fix Devtools PatternResolver Servlet support
Update ClassLoaderFilesResourcePatternResolver to support servlet
resources when it's being used with a WebApplicationContext.

Prior to commit 918e122ddc a `ResourceLoader` was not added to the
`ApplicationContext`, meaning that servlet resources could be found by
virtue of the protected `getResourceByPath()` method. Following commit
918e122ddc, the context `ResourceLoader` is set, meaning that all calls
to `getResource` delegate to the `ResourceLoader` and the
`ApplicationContext` methods are not invoked. Since the devtools
`ResourceLoader` wasn't Servlet aware, servlet resources could not
be found.

Fixes gh-7752
2016-12-28 14:25:11 -08: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
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
Phillip Webb
1657120286 Move ModifiedClassPathRunner to its own module
Migrate `ModifiedClassPathRunner` from `spring-boot` test source to
its own module.

Fixes gh-7420
2016-11-18 17:27:54 -08:00
Andy Wilkinson
1cd781b242 Make spring-boot-test compatible with Mockito 2.1 and 2.2
We use some internal Mockito classes and some  breaking API changes
have been made to them in Mockito 2. This commit introduces a utility
class, SpringBootMockUtil, to shield our code from these differences.
Mockito 1 is called directly and Mockito 2 is called via reflection.

To allow these changes to be tested, FilteredClassPathRunner has been
enhanced to also support overriding a dependency on the class path.
As a result it has been renamed to ModifiedClassPathRunner. The new
ClassPathOverrides annotation can be used to provide the Maven
coordinates of one or more dependencies that should be resolved and
added to the class path. Such additions are added to the start of
the class path so that they override any existing dependency that
contains the same classes.

Closes gh-6520
2016-11-18 16:39:44 +00:00
Marius Bogoevici
34fb909b41 Support multiple root contexts in Restarter
Update devtools restarter to support multiple application contexts.

Fixes gh-7335
Closes gh-7336
2016-11-16 15:30:38 -08:00
Madhura Bhave
e7db7adfb8 Rename ApplicationStartedEvent
Rename `ApplicationStartedEvent` to `ApplicationStartingEvent` to
avoid confusion.

Fixes gh-7381
2016-11-15 15:43:35 -08:00
Phillip Webb
221feac3ec User random server port in devtools tests
Update `LocalDevToolsAutoConfigurationTests` to ensure that a random
server port is used rather than 8080.

Fixes gh-7268
See gh-7039
2016-11-04 12:24:50 -07:00
Phillip Webb
5b66ffbb4b Merge branch '1.4.x' into 1.5.x 2016-10-31 23:09:36 -07:00
Phillip Webb
cecc1c8817 Disable DevTools property defaults in production
Update `DevToolsPropertyDefaultsPostProcessor` so that property defaults
are only added at development time. Properties are now added only when
`Restarter` is initialize or remote devtools is enabled.

Fixes gh-7014
2016-10-31 20:55:05 -07:00
Andy Wilkinson
570b292df7 Disable JspServlet's development mode by default
This commit switches off the auto-configured JspServlet's
development mode by default. Development mode is then switched on
when DevTools is on the class path.

Closes gh-7039
2016-10-20 21:02:21 +01:00
Craig Andrews
d94eedfd8a Exclude META-INF/build-info.properties from restart
Prior to this commit any application configured to write
`META-INF/build-info.properties` could trigger unexpected application
restarts. The problem is particularly prevalent when using Eclipse M2E in
combination with Maven's `spring-boot-maven-plugin` `build-info` goal
and Gradle's `springBoot` `buildInfo()`.

Closes gh-7002
2016-09-23 07:58:39 +02:00
Phillip Webb
7396ccfe04 Harmonize ConditionOutcome messages
Add ConditionMessage class to help build condition messages in a
uniform format and update existing conditions to use it.

Fixes gh-6756
2016-09-07 10:50:39 -07:00
Andy Wilkinson
a6f443a953 Automatically disable DevTools when running a Cucumber test
Closes gh-6412
2016-07-19 09:54:37 +01:00
Andy Wilkinson
bf618d505c Merge branch '1.3.x 2016-07-13 10:38:03 +01:00
Andy Wilkinson
b1dd92881d Retry class file upload to remote application that fails to connect
Closes gh-6339
2016-07-13 10:35:42 +01:00
Johnny Lim
301574de09 Polish
Closes gh-6234
2016-06-27 14:19:26 +02:00
Phillip Webb
c136054e69 Merge branch '1.3.x' 2016-06-20 18:54:01 -07:00
Phillip Webb
5b97981c87 Polish 2016-06-20 18:13:43 -07:00
Andy Wilkinson
d9d26cba1a Merge branch '1.3.x' 2016-06-17 09:58:45 +01:00
Andy Wilkinson
13635201ff Prevent JVM from exiting with 1 when main thread is only non-daemon
DevTools deliberately throws an uncaught exception on the main thread
as a safe way of causing it to stop processing. This exception is
caught and swallowed by an uncaught exception handler. Unfortunately,
this has the unwanted side-effect of causing the JVM to exit with 1
once all running threads are daemons.

Normally, this isn't a problem. Non-daemon threads, such as those
started by an embedded servlet container, will keep the JVM alive and
restarts of the application context will occur when the user makes to
their application. However, if the user adds DevTools to an
application that doesn't start any non-daemon threads, i.e. it starts,
runs, and then exits, it will exit with 1. This causes both
bootRun in Gradle and spring-boot:run in Maven to report that the
build has failed. While there's no benefit to using DevTools with an
application that behaves in this way, the side-effect of causing the
JVM to exit with 1 is unwanted.

This commit address the problem by updating the uncaught exception
handler to call System.exit(0) if the JVM is going to exit as a
result of the uncaught exception causing the main thread to die. In
other words, if the main thread was the only non-daemon thread, its
death as a result of the uncaught exception will now cause the JVM
to exit with 1 rather than 0. If there are other non-daemon threads
that will keep the JVM alive, the behaviour is unchanged.

Closes gh-5968
2016-06-17 09:55:30 +01:00
Andy Wilkinson
d839e1ec00 Remove redundant restart-compatible Redis serializer
Previously, Spring Data Redis assumed that the class loader that loaded
its classes would also be able to load the application’s classes. This
assumption is faulty when there are multiple class loaders involved
such as when using dev tools or when Spring Data Redis is installed as
a shared library in a servlet container.

DATAREDIS-427 and DATAREDIS-501 removed this assumption by making the
default serialiser use the bean class loader. DevTools configures this
class loader to be the restart class loader which can load the
application’s classes. As a result of moving to Hopper SR2 snapshots,
these fixes are now available and we can remove our custom serialised.

Closes gh-5760
2016-06-14 15:46:27 +01:00
Phillip Webb
e27bc9ddea Merge branch '1.3.x' 2016-06-10 17:24:02 -07:00