Commit Graph

5918 Commits

Author SHA1 Message Date
Phillip Webb
33ce160251 Automatically X-Forwarded-For in the cloud
Update `ServerProperties` to automatically enable `use-forward-headers`
when running on a cloud platform.

A new `CloudPlatform` enum has been introduced that detects Heroku and
Cloud Foundry.

See gh-4018
2015-10-02 00:00:14 -07:00
Phillip Webb
20b29db512 Unify ServerProperties X-Forwarded-For support
Add a new `server.use-forward-headers` property which can be used to
switch on X-Forwarded-For header support in all supported embedded
servlet containers.

This commit reverts the decision to enable `RemoteIpValve` with Tomcat
by default (gh-3782) and requires that either `user-forward-headers` is
set to true or that `server.tomcat.protocol-header` or
`server.tomcat.remote-ip-header` are set.

See gh-4018
See gh-3782
2015-10-01 23:59:59 -07:00
Phillip Webb
c35105b868 Add X-Forwarded-For header support to Undertow
Add a `useForwardHeaders` property to allow embedded Undertow
containers to respect X-Forwarded-For headers.

Fixes gh-3881
2015-10-01 23:59:48 -07:00
Phillip Webb
7f97681969 Add X-Forwarded-For header support to Jetty
Add a `useForwardHeaders` property to allow embedded Jetty containers
to respect X-Forwarded-For headers.

Fixes gh-3802
2015-10-01 23:59:33 -07:00
Phillip Webb
50430a20c6 Add Tomcat X-Forwarded-For header tests
Update Abstract & Tomcat EmbeddedServletContainerFactoryTests to check
that X-Forwarded-For headers work as expected.

See gh-4018
2015-10-01 23:59:12 -07:00
Phillip Webb
5cbb81c64f Fix management security when using different port
Update ManagementWebSecurityAutoConfiguration to reinstate lazy creation
of EndpointHandlerMapping from the EndpointPathRequestMatcher.

Fixes a regression introduced in eb2984781 and picked up my one of the
sample integration tests.

Fixes gh-4059
2015-10-01 18:06:43 -07:00
Phillip Webb
7801a3879e Protect against missing spring-web.jar
See gh-4068
2015-10-01 16:30:23 -07:00
Phillip Webb
6be072ae07 Polish 2015-10-01 14:44:23 -07:00
Phillip Webb
0b36ba97b3 Polish order 2015-10-01 12:02:32 -07:00
Dave Syer
2169bbbc9b Check Environment matches webEnvironment after it is initialized
After the ApplicationEnvironmentPrepared we now check that the
webEnvironment flag and/or the Environment hasn't changed, in case
the user wanted to switch the context from a web to non-web in a
listener.

Fixes gh-2716
2015-10-01 17:47:26 +01:00
Stephane Nicoll
93d12494e5 Migrate Spring Data Rest settings
In order to have more control on the structure of the configuration, we
do not bind to `RepositoryRestConfiguration` directly anymore. This
commit introduces `RepositoryProperties` instead.

See gh-3854
Closes gh-4073
2015-10-01 17:56:32 +02:00
Andy Wilkinson
2964fd28a0 Polishing 2015-10-01 14:06:00 +01:00
Dave Syer
933aad3c06 Make checkstyle happier 2015-10-01 13:53:04 +01:00
Dave Syer
c8021fa526 Comment out logback config 2015-10-01 13:45:59 +01:00
Dave Syer
eb29847814 Hone the security rules for actuator endpoints
Takes into account the fact that the new /actuator endpoint sometimes
loses its path (it is "" relative to a non-empty management context path).

Fixes gh-4059
2015-10-01 13:38:18 +01:00
Dave Syer
15f22651f8 Add logging.pattern.level to config metadata 2015-10-01 11:38:54 +01:00
Stephane Nicoll
42c49b1c4f Merge pull request #4069 from izeye/polish-20151001
* pr/4069:
  Polish
2015-10-01 09:57:22 +02:00
izeye
5b211706c0 Polish
Closes gh-4069
2015-10-01 09:56:33 +02:00
Phillip Webb
db0212b834 Allow spring-boot-devtools to work with JRebel
Update devtools to detect JRebel and disable application restarts. Other
features (such as LiveReload) can still be used.

Fixes gh-3095
2015-09-30 15:48:20 -07:00
Phillip Webb
acde5407e8 Polish 2015-09-30 15:48:19 -07:00
Dave Syer
cad2666522 Add support for LOG_LEVEL_PATTERN replacing the default level pattern
For logback we also support logging.pattern.level as a synonym.

Fixes gh-4062
2015-09-30 17:15:34 +01:00
Stephane Nicoll
eeaa1df1dd Allow Mongo support without Spring Data MongoDB
Closes gh-4049
2015-09-30 14:56:59 +02:00
Stephane Nicoll
b14756a7bb Improve git commit information for Gradle
Closes gh-3949
2015-09-30 14:41:31 +02:00
Stephane Nicoll
623fcfeff1 Properly guard cache statistics providers
Previously, a `NoClassDefFoundError` could be thrown if EhCache or Guava
is on the classpath without `spring-context-support` as the respective
cache statistics provider both needs the implementation and the spring
abstraction implementation.

The `@ConditionalOnClass` definition has been updated to properly guard
those beans.

Closes gh-3960
2015-09-30 14:36:39 +02:00
Andy Wilkinson
0d1729cb65 Fix Checkstyle warning 2015-09-30 11:15:49 +01:00
Andy Wilkinson
1f4dc77715 Improve error message when a non-directory is added to FileSystemWatcher
Previously, if a file or non-existent directory was added to
FileSystemWatcher, it would fail with the message “Folder must not be a
file”. While it suggests that the folder needs to be a directory, it
doesn’t make it clear that it also needs to exist. It also doesn’t
tell the user which folder caused the problem.

This commit updates the message to make it clear that the folder must
exist and must be a directory, and the include the name of the
problematic folder in the error message.

Closes gh-3918
2015-09-30 10:54:51 +01:00
Andy Wilkinson
968caf05b6 Merge branch 'gh-3977' 2015-09-30 10:39:22 +01:00
Andy Wilkinson
64bcba47a9 Polish contribution
- Add @author tag
 - Remove unnecessary final modifiers
 - Avoid writing to volatile field when new gauge is used

Closes gh-3977
2015-09-30 10:39:05 +01:00
Jay Anderson
3fb0ae3e3b Register dropwizard gauges once and then update them
The previous implementation would remove and add a new Gauge each time
a metric was written. After this change the Gauge is registered once
and the value is updated on subsequent calls.
2015-09-30 10:30:55 +01:00
Andy Wilkinson
ff5e4631e3 Add MockMvc-based integration tests for management.security.enabled
See gh-3997
2015-09-30 10:19:04 +01:00
Andy Wilkinson
a76e84addc Restore LoggingSystems’ previous cleanup behaviour
This commit reverts the changes made for gh-4026. Those changes updated
each LoggingSystem to close/stop the underlying logging system as part
of the clean up processing. Unfortunately, this approach doesn’t work
in an environment where their are multiple application contexts and
some have a shorter lifecycle than the “main” application context. In
such an environment, closing an application context with a shorter
lifecycle prior to the main application context being closed will
close/stop the main application context’s logging system as, rather than
being scoped to an application context, a logging system is shared
across multiple application contexts. (The exact details of how widely
shared the logging system is varies between logging systems and, in the
case of Logback and Log4J2, also depends on which ContextSelector
implementation is being used.
2015-09-30 09:34:32 +01:00
Stephane Nicoll
e98aac4327 Polish d01bc41
Closes gh-2516
2015-09-30 09:54:13 +02:00
Stephane Nicoll
8a8c8272d2 Merge pull request #4054 from zhanhb/patch-2
* pr/4054:
  Fix typo
2015-09-30 09:48:38 +02:00
zhanhb
b855a68bf4 Fix typo
Closes gh-4054
2015-09-30 09:48:23 +02:00
Phillip Webb
9681df0e9f Merge branch '1.2.x' 2015-09-29 15:21:19 -07:00
Phillip Webb
69d57f9a35 Polish 2015-09-29 15:18:40 -07:00
Phillip Webb
b0d9a8322e Support . and _ binder prefix joins
Update RelaxedDataBinder so that both `.` and `_` are considered in
getPropertyValuesForNamePrefix(...).

With Spring Boot 1.2.5 binding environment variables of the form
`FOO_BAR_BAZ` to `@ConfigurationProperties(prefix="foo-bar")` objects
worked thanks to a happy accident. When `PropertySourcesPropertyValues`
processed a non enumerable `PropertySource` it called the resolver
with a property name `FOO_BAR.BAZ`. A `SystemEnvironmentPropertySource`
will replace `.` with `_` and hence find a value.

Commit 1abd0879 updated non enumerable processing such that the resolver
was never called.

Replicating the problem is quite involved as you need to ensure that you
have both a SystemEnvironmentPropertySource and a non-enumerable
property source (e.g. RandomPropertySource). A test has been added to
PropertiesConfigurationFactoryTests which passes on 1.2.5, fails on
1.2.6 and passes again following this commit.

Fixes gh-4045
2015-09-29 15:17:15 -07:00
Andy Wilkinson
e9878ebb5d Update tests to close the application contexts that they create
This commit updates a number of tests in spring-boot to ensure that
they close the application contexts that they create. SimpleMainTests
still create a number of contexts that are not closed as there’s no
(easy) way to get hold of the context when testing the main method.

See gh-4053
2015-09-29 21:36:55 +01:00
Andy Wilkinson
1bc1785db7 Return Logback to its default basic configuration after clean up
See gh-4026
2015-09-29 21:23:27 +01:00
Andy Wilkinson
f7e8e1554c Shut down logging system as part of clean up processing
Previously, when a LoggingSystem was cleaned up the underlying logging
system (LogBack, Log4J, Log4J2, JUL) was not being properly shut down.
LogBack explicitly recommends stopping it cleanly [1]. While the other
logging systems are less explicity about it, they would all appear to
benefit from being stopped.

This commit updates all four LoggingSystems to stop/reset/clean up to
underlying logging system when cleanUp is called.

Closes gh-4026

[1] http://logback.qos.ch/manual/configuration.html#stopContext
2015-09-29 18:59:09 +01:00
Andy Wilkinson
1e50d988ab Tighten up the conditions on WebSocketMessagingAutoConfiguration
See gh-2445
2015-09-29 17:24:56 +01:00
Phillip Webb
fa040c9e26 Fix tests failing on Windows 2015-09-29 09:23:07 -07:00
Andy Wilkinson
204cb6f195 Auto-configure WebSocket JSON converter to use context’s ObjectMapper
This commit adds auto-configuration support for WebSocket-based
messaging. When the user enables WebSocket messaging (typically via
@EnableWebSocket and @EnableWebSocketMessageBroker) and an ObjectMapper
bean exists, a MappingJackson2MessageConverter that uses the
ObjectMapper will be configured. This causes any spring.jackson.*
configuration to affect WebSocket message conversion in the same way
as it affects HTTP message conversion.

Closes gh-2445
2015-09-29 16:48:02 +01:00
Andy Wilkinson
2440e05cc4 Document startup script's support for JAVA_OPTS
Closes gh-3808
2015-09-29 13:58:37 +01:00
Andy Wilkinson
d357533105 Upgrade to Undertow 1.3.0.CR2
The code that uses reflection to determine the protocol and port has
been updated to align with changes made in Undertow 1.3

See gh-3969
2015-09-29 13:49:45 +01:00
Andy Wilkinson
a23d11fe6c Update appendix with details of new Spring HATEOAS property
Follow-on from c55900b4.

Closes gh-3891
2015-09-29 13:43:15 +01:00
Andy Wilkinson
727fc23381 Upgrade to Undertow 1.3.0.CR2
See gh-3969
2015-09-29 13:40:06 +01:00
Phillip Webb
eadfa109d5 Improve classpath resource not supported message
Update TomcatEmbeddedServletContainerFactory to provide a better error
message when attempting to load classpath resources.

Fixes gh-2635
2015-09-28 22:20:06 -07:00
Phillip Webb
d01bc41e1e Detect XML config files and Groovy test scripts
Update SpringApplicationContextLoader to detect xml and groovy
configuration based on convention.

Fixes gh-2516
2015-09-28 19:35:26 -07:00
Phillip Webb
3b93a82dd6 Support relaxed HealthMvcEndpoint status mappings
Update HealthMvcEndpoint so that relaxed names can be used as keys in
the `endpoints.health.mapping` property.

Fixes gh-2465
2015-09-28 16:11:48 -07:00