Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
5502fa29
Commit
5502fa29
authored
Jan 19, 2017
by
Phillip Webb
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '1.5.x'
parents
58740d7f
1d55f5f6
Changes
66
Hide whitespace changes
Inline
Side-by-side
Showing
66 changed files
with
288 additions
and
113 deletions
+288
-113
HealthIndicatorAutoConfiguration.java
...tuate/autoconfigure/HealthIndicatorAutoConfiguration.java
+2
-1
HealthIndicatorProperties.java
...boot/actuate/autoconfigure/HealthIndicatorProperties.java
+1
-1
ManagementServerProperties.java
...oot/actuate/autoconfigure/ManagementServerProperties.java
+7
-2
MetricFilterProperties.java
...rk/boot/actuate/autoconfigure/MetricFilterProperties.java
+1
-1
AbstractEndpoint.java
...ringframework/boot/actuate/endpoint/AbstractEndpoint.java
+13
-4
LiquibaseEndpoint.java
...ingframework/boot/actuate/endpoint/LiquibaseEndpoint.java
+4
-2
AbstractMvcEndpoint.java
...mework/boot/actuate/endpoint/mvc/AbstractMvcEndpoint.java
+9
-4
DocsMvcEndpoint.java
...gframework/boot/actuate/endpoint/mvc/DocsMvcEndpoint.java
+1
-1
HalJsonMvcEndpoint.java
...amework/boot/actuate/endpoint/mvc/HalJsonMvcEndpoint.java
+1
-1
HeapdumpMvcEndpoint.java
...mework/boot/actuate/endpoint/mvc/HeapdumpMvcEndpoint.java
+1
-1
DiskSpaceHealthIndicatorProperties.java
...ot/actuate/health/DiskSpaceHealthIndicatorProperties.java
+1
-1
LdapHealthIndicator.java
...ingframework/boot/actuate/health/LdapHealthIndicator.java
+1
-0
MetricExportProperties.java
...k/boot/actuate/metrics/export/MetricExportProperties.java
+1
-1
HealthIndicatorAutoConfigurationTests.java
.../autoconfigure/HealthIndicatorAutoConfigurationTests.java
+4
-4
LdapHealthIndicatorTests.java
...amework/boot/actuate/health/LdapHealthIndicatorTests.java
+10
-8
BatchProperties.java
...ngframework/boot/autoconfigure/batch/BatchProperties.java
+1
-1
LdapRepositoriesAutoConfiguration.java
...onfigure/data/ldap/LdapRepositoriesAutoConfiguration.java
+1
-2
RepositoryRestProperties.java
...oot/autoconfigure/data/rest/RepositoryRestProperties.java
+1
-1
JestProperties.java
...boot/autoconfigure/elasticsearch/jest/JestProperties.java
+1
-1
FlywayProperties.java
...framework/boot/autoconfigure/flyway/FlywayProperties.java
+4
-3
H2ConsoleProperties.java
...gframework/boot/autoconfigure/h2/H2ConsoleProperties.java
+9
-4
HazelcastProperties.java
...ork/boot/autoconfigure/hazelcast/HazelcastProperties.java
+1
-1
ProjectInfoProperties.java
...mework/boot/autoconfigure/info/ProjectInfoProperties.java
+1
-1
DataSourceConfiguration.java
...work/boot/autoconfigure/jdbc/DataSourceConfiguration.java
+3
-3
JerseyProperties.java
...framework/boot/autoconfigure/jersey/JerseyProperties.java
+1
-1
ActiveMQConnectionFactoryConfiguration.java
.../jms/activemq/ActiveMQConnectionFactoryConfiguration.java
+1
-1
LiquibaseProperties.java
...ork/boot/autoconfigure/liquibase/LiquibaseProperties.java
+7
-2
DeviceDelegatingViewResolverProperties.java
...figure/mobile/DeviceDelegatingViewResolverProperties.java
+1
-1
SecurityProperties.java
...ework/boot/autoconfigure/security/SecurityProperties.java
+2
-2
OAuth2ClientProperties.java
...autoconfigure/security/oauth2/OAuth2ClientProperties.java
+1
-1
AuthorizationServerProperties.java
...rity/oauth2/authserver/AuthorizationServerProperties.java
+1
-1
OAuth2AuthorizationServerConfiguration.java
...h2/authserver/OAuth2AuthorizationServerConfiguration.java
+1
-1
OAuth2ProtectedResourceDetailsConfiguration.java
...2/client/OAuth2ProtectedResourceDetailsConfiguration.java
+1
-1
OAuth2RestOperationsConfiguration.java
...rity/oauth2/client/OAuth2RestOperationsConfiguration.java
+1
-1
OAuth2SsoProperties.java
...configure/security/oauth2/client/OAuth2SsoProperties.java
+1
-1
DefaultUserInfoRestTemplateFactory.java
...y/oauth2/resource/DefaultUserInfoRestTemplateFactory.java
+3
-1
ResourceServerProperties.java
...re/security/oauth2/resource/ResourceServerProperties.java
+1
-1
ResourceServerTokenServicesConfiguration.java
...h2/resource/ResourceServerTokenServicesConfiguration.java
+2
-1
SessionProperties.java
...amework/boot/autoconfigure/session/SessionProperties.java
+1
-1
FacebookProperties.java
...amework/boot/autoconfigure/social/FacebookProperties.java
+1
-1
LinkedInProperties.java
...amework/boot/autoconfigure/social/LinkedInProperties.java
+1
-1
TwitterProperties.java
...ramework/boot/autoconfigure/social/TwitterProperties.java
+1
-1
ThymeleafProperties.java
...ork/boot/autoconfigure/thymeleaf/ThymeleafProperties.java
+1
-1
TransactionProperties.java
...boot/autoconfigure/transaction/TransactionProperties.java
+1
-1
BitronixJtaConfiguration.java
...toconfigure/transaction/jta/BitronixJtaConfiguration.java
+1
-1
ServerProperties.java
...ingframework/boot/autoconfigure/web/ServerProperties.java
+7
-2
WebMvcProperties.java
...ingframework/boot/autoconfigure/web/WebMvcProperties.java
+1
-1
WebServicesProperties.java
...boot/autoconfigure/webservices/WebServicesProperties.java
+10
-5
RepositoryRestMvcAutoConfigurationTests.java
...re/data/rest/RepositoryRestMvcAutoConfigurationTests.java
+6
-3
ResourceServerTokenServicesConfigurationTests.java
...source/ResourceServerTokenServicesConfigurationTests.java
+3
-3
spring-boot-features.adoc
spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
+7
-3
pom.xml
spring-boot-parent/pom.xml
+6
-0
pom.xml
spring-boot-samples/spring-boot-sample-simple/pom.xml
+4
-0
SampleConfigurationProperties.java
...ain/java/sample/simple/SampleConfigurationProperties.java
+39
-0
application.properties
...t-sample-simple/src/main/resources/application.properties
+3
-1
SampleSimpleApplicationTests.java
...test/java/sample/simple/SampleSimpleApplicationTests.java
+4
-0
application.properties
...t-sample-simple/src/test/resources/application.properties
+0
-1
RestDocsAutoConfiguration.java
...est/autoconfigure/restdocs/RestDocsAutoConfiguration.java
+1
-1
MockMvcAutoConfiguration.java
...t/autoconfigure/web/servlet/MockMvcAutoConfiguration.java
+1
-1
PropertiesConfigurationFactory.java
...ngframework/boot/bind/PropertiesConfigurationFactory.java
+4
-3
ConfigurationProperties.java
...work/boot/context/properties/ConfigurationProperties.java
+5
-3
ConfigurationPropertiesBindingPostProcessor.java
...operties/ConfigurationPropertiesBindingPostProcessor.java
+35
-13
AtomikosProperties.java
...springframework/boot/jta/atomikos/AtomikosProperties.java
+1
-1
ConfigurationPropertiesBindingPostProcessorTests.java
...ies/ConfigurationPropertiesBindingPostProcessorTests.java
+2
-0
EnableConfigurationPropertiesTests.java
...ontext/properties/EnableConfigurationPropertiesTests.java
+37
-0
BindFailureAnalyzerTests.java
...k/boot/diagnostics/analyzer/BindFailureAnalyzerTests.java
+2
-0
No files found.
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/HealthIndicatorAutoConfiguration.java
View file @
5502fa29
...
...
@@ -244,7 +244,8 @@ public class HealthIndicatorAutoConfiguration {
private
final
Map
<
String
,
LdapOperations
>
ldapOperations
;
public
LdapHealthIndicatorConfiguration
(
Map
<
String
,
LdapOperations
>
ldapOperations
)
{
public
LdapHealthIndicatorConfiguration
(
Map
<
String
,
LdapOperations
>
ldapOperations
)
{
this
.
ldapOperations
=
ldapOperations
;
}
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/HealthIndicatorProperties.java
View file @
5502fa29
...
...
@@ -26,7 +26,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Christian Dupuis
* @since 1.2.0
*/
@ConfigurationProperties
(
"management.health.status"
)
@ConfigurationProperties
(
prefix
=
"management.health.status"
)
public
class
HealthIndicatorProperties
{
/**
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/ManagementServerProperties.java
View file @
5502fa29
...
...
@@ -20,8 +20,8 @@ import java.net.InetAddress;
import
java.util.Arrays
;
import
java.util.List
;
import
javax.annotation.PostConstruct
;
import
javax.servlet.http.HttpSession
;
import
javax.validation.constraints.NotNull
;
import
org.springframework.boot.autoconfigure.security.SecurityPrerequisite
;
import
org.springframework.boot.autoconfigure.security.SecurityProperties
;
...
...
@@ -29,6 +29,7 @@ import org.springframework.boot.autoconfigure.web.ServerProperties;
import
org.springframework.boot.context.embedded.Ssl
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.boot.context.properties.NestedConfigurationProperty
;
import
org.springframework.util.Assert
;
import
org.springframework.util.StringUtils
;
/**
...
...
@@ -78,7 +79,6 @@ public class ManagementServerProperties implements SecurityPrerequisite {
/**
* Management endpoint context-path.
*/
@NotNull
private
String
contextPath
=
""
;
/**
...
...
@@ -88,6 +88,11 @@ public class ManagementServerProperties implements SecurityPrerequisite {
private
final
Security
security
=
new
Security
();
@PostConstruct
private
void
validate
()
{
Assert
.
notNull
(
this
.
contextPath
,
"ContextPath must not be null"
);
}
/**
* Returns the management port or {@code null} if the
* {@link ServerProperties#getPort() server port} should be used.
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/MetricFilterProperties.java
View file @
5502fa29
...
...
@@ -29,7 +29,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Phillip Webb
* @since 1.4.0
*/
@ConfigurationProperties
(
"endpoints.metrics.filter"
)
@ConfigurationProperties
(
prefix
=
"endpoints.metrics.filter"
)
public
class
MetricFilterProperties
{
/**
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/AbstractEndpoint.java
View file @
5502fa29
...
...
@@ -16,11 +16,13 @@
package
org
.
springframework
.
boot
.
actuate
.
endpoint
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
import
java.util.regex.Pattern
;
import
javax.annotation.PostConstruct
;
import
org.springframework.context.EnvironmentAware
;
import
org.springframework.core.env.Environment
;
import
org.springframework.util.Assert
;
/**
* Abstract base for {@link Endpoint} implementations.
...
...
@@ -31,14 +33,14 @@ import org.springframework.core.env.Environment;
*/
public
abstract
class
AbstractEndpoint
<
T
>
implements
Endpoint
<
T
>,
EnvironmentAware
{
private
static
final
Pattern
ID_PATTERN
=
Pattern
.
compile
(
"\\w+"
);
private
Environment
environment
;
/**
* Endpoint identifier. With HTTP monitoring the identifier of the endpoint is mapped
* to a URL (e.g. 'foo' is mapped to '/foo').
*/
@NotNull
@Pattern
(
regexp
=
"\\w+"
,
message
=
"ID must only contains letters, numbers and '_'"
)
private
String
id
;
private
final
boolean
sensitiveDefault
;
...
...
@@ -53,6 +55,13 @@ public abstract class AbstractEndpoint<T> implements Endpoint<T>, EnvironmentAwa
*/
private
Boolean
enabled
;
@PostConstruct
private
void
validate
()
{
Assert
.
notNull
(
this
.
id
,
"Id must not be null"
);
Assert
.
isTrue
(
ID_PATTERN
.
matcher
(
this
.
id
).
matches
(),
"ID must only contains letters, numbers and '_'"
);
}
/**
* Create a new sensitive endpoint instance. The endpoint will enabled flag will be
* based on the spring {@link Environment} unless explicitly set.
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/LiquibaseEndpoint.java
View file @
5502fa29
...
...
@@ -62,9 +62,11 @@ public class LiquibaseEndpoint extends AbstractEndpoint<List<LiquibaseReport>> {
for
(
Map
.
Entry
<
String
,
SpringLiquibase
>
entry
:
this
.
liquibases
.
entrySet
())
{
try
{
DataSource
dataSource
=
entry
.
getValue
().
getDataSource
();
JdbcConnection
connection
=
new
JdbcConnection
(
dataSource
.
getConnection
());
JdbcConnection
connection
=
new
JdbcConnection
(
dataSource
.
getConnection
());
try
{
Database
database
=
factory
.
findCorrectDatabaseImplementation
(
connection
);
Database
database
=
factory
.
findCorrectDatabaseImplementation
(
connection
);
reports
.
add
(
new
LiquibaseReport
(
entry
.
getKey
(),
service
.
queryDatabaseChangeLogTable
(
database
)));
}
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/mvc/AbstractMvcEndpoint.java
View file @
5502fa29
...
...
@@ -16,13 +16,13 @@
package
org
.
springframework
.
boot
.
actuate
.
endpoint
.
mvc
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
import
javax.annotation.PostConstruct
;
import
org.springframework.boot.actuate.endpoint.Endpoint
;
import
org.springframework.boot.actuate.endpoint.EndpointProperties
;
import
org.springframework.context.EnvironmentAware
;
import
org.springframework.core.env.Environment
;
import
org.springframework.util.Assert
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
;
/**
...
...
@@ -41,8 +41,6 @@ public abstract class AbstractMvcEndpoint extends WebMvcConfigurerAdapter
/**
* Endpoint URL path.
*/
@NotNull
@Pattern
(
regexp
=
"/.*|^$"
,
message
=
"Path must start with / or be empty"
)
private
String
path
;
/**
...
...
@@ -68,6 +66,13 @@ public abstract class AbstractMvcEndpoint extends WebMvcConfigurerAdapter
this
.
enabled
=
enabled
;
}
@PostConstruct
private
void
validate
()
{
Assert
.
notNull
(
this
.
path
,
"Path must not be null"
);
Assert
.
isTrue
(
this
.
path
.
length
()
==
0
||
this
.
path
.
startsWith
(
"/"
),
"Path must start with / or be empty"
);
}
@Override
public
void
setEnvironment
(
Environment
environment
)
{
this
.
environment
=
environment
;
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/mvc/DocsMvcEndpoint.java
View file @
5502fa29
...
...
@@ -27,7 +27,7 @@ import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry
* @author Dave Syer
* @since 1.3.0
*/
@ConfigurationProperties
(
"endpoints.docs"
)
@ConfigurationProperties
(
prefix
=
"endpoints.docs"
)
public
class
DocsMvcEndpoint
extends
AbstractNamedMvcEndpoint
{
private
static
final
String
DOCS_LOCATION
=
"classpath:/META-INF/resources/spring-boot-actuator/docs/"
;
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/mvc/HalJsonMvcEndpoint.java
View file @
5502fa29
...
...
@@ -31,7 +31,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
* @author Andy Wilkinson
* @since 1.3.0
*/
@ConfigurationProperties
(
"endpoints.actuator"
)
@ConfigurationProperties
(
prefix
=
"endpoints.actuator"
)
public
class
HalJsonMvcEndpoint
extends
AbstractNamedMvcEndpoint
{
private
final
ManagementServletContext
managementServletContext
;
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/mvc/HeapdumpMvcEndpoint.java
View file @
5502fa29
...
...
@@ -53,7 +53,7 @@ import org.springframework.web.bind.annotation.ResponseStatus;
* @author Phillip Webb
* @since 1.4.0
*/
@ConfigurationProperties
(
"endpoints.heapdump"
)
@ConfigurationProperties
(
prefix
=
"endpoints.heapdump"
)
@HypermediaDisabled
public
class
HeapdumpMvcEndpoint
extends
AbstractNamedMvcEndpoint
{
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/DiskSpaceHealthIndicatorProperties.java
View file @
5502fa29
...
...
@@ -27,7 +27,7 @@ import org.springframework.util.Assert;
* @author Andy Wilkinson
* @since 1.2.0
*/
@ConfigurationProperties
(
"management.health.diskspace"
)
@ConfigurationProperties
(
prefix
=
"management.health.diskspace"
)
public
class
DiskSpaceHealthIndicatorProperties
{
private
static
final
int
MEGABYTES
=
1024
*
1024
;
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/LdapHealthIndicator.java
View file @
5502fa29
...
...
@@ -57,6 +57,7 @@ public class LdapHealthIndicator extends AbstractHealthIndicator {
}
return
null
;
}
}
}
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/MetricExportProperties.java
View file @
5502fa29
...
...
@@ -32,7 +32,7 @@ import org.springframework.util.PatternMatchUtils;
* @author Simon Buettner
* @since 1.3.0
*/
@ConfigurationProperties
(
"spring.metrics.export"
)
@ConfigurationProperties
(
prefix
=
"spring.metrics.export"
)
public
class
MetricExportProperties
extends
TriggerProperties
{
/**
...
...
spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/HealthIndicatorAutoConfigurationTests.java
View file @
5502fa29
...
...
@@ -541,8 +541,8 @@ public class HealthIndicatorAutoConfigurationTests {
public
void
ldapHealthIndicator
()
throws
Exception
{
EnvironmentTestUtils
.
addEnvironment
(
this
.
context
,
"management.health.diskspace.enabled:false"
);
this
.
context
.
register
(
LdapConfiguration
.
class
,
ManagementServerProperties
.
class
,
HealthIndicatorAutoConfiguration
.
class
);
this
.
context
.
register
(
LdapConfiguration
.
class
,
ManagementServerProperties
.
class
,
HealthIndicatorAutoConfiguration
.
class
);
this
.
context
.
refresh
();
Map
<
String
,
HealthIndicator
>
beans
=
this
.
context
.
getBeansOfType
(
HealthIndicator
.
class
);
...
...
@@ -556,8 +556,8 @@ public class HealthIndicatorAutoConfigurationTests {
EnvironmentTestUtils
.
addEnvironment
(
this
.
context
,
"management.health.diskspace.enabled:false"
,
"management.health.ldap.enabled:false"
);
this
.
context
.
register
(
LdapConfiguration
.
class
,
ManagementServerProperties
.
class
,
HealthIndicatorAutoConfiguration
.
class
);
this
.
context
.
register
(
LdapConfiguration
.
class
,
ManagementServerProperties
.
class
,
HealthIndicatorAutoConfiguration
.
class
);
this
.
context
.
refresh
();
Map
<
String
,
HealthIndicator
>
beans
=
this
.
context
.
getBeansOfType
(
HealthIndicator
.
class
);
...
...
spring-boot-actuator/src/test/java/org/springframework/boot/actuate/health/LdapHealthIndicatorTests.java
View file @
5502fa29
...
...
@@ -62,31 +62,33 @@ public class LdapHealthIndicatorTests {
this
.
context
.
register
(
LdapAutoConfiguration
.
class
,
LdapDataAutoConfiguration
.
class
,
PropertyPlaceholderAutoConfiguration
.
class
,
EndpointAutoConfiguration
.
class
,
HealthIndicatorAutoConfiguration
.
class
);
EndpointAutoConfiguration
.
class
,
HealthIndicatorAutoConfiguration
.
class
);
this
.
context
.
refresh
();
LdapTemplate
ldapTemplate
=
this
.
context
.
getBean
(
LdapTemplate
.
class
);
assertThat
(
ldapTemplate
).
isNotNull
();
LdapHealthIndicator
healthIndicator
=
this
.
context
.
getBean
(
LdapHealthIndicator
.
class
);
LdapHealthIndicator
healthIndicator
=
this
.
context
.
getBean
(
LdapHealthIndicator
.
class
);
assertThat
(
healthIndicator
).
isNotNull
();
}
@Test
@SuppressWarnings
(
"unchecked"
)
public
void
ldapIsUp
()
{
LdapTemplate
ldapTemplate
=
mock
(
LdapTemplate
.
class
);
given
(
ldapTemplate
.
executeReadOnly
(
any
(
ContextExecutor
.
class
))).
willReturn
(
"3"
);
given
(
ldapTemplate
.
executeReadOnly
((
ContextExecutor
<
String
>)
any
()))
.
willReturn
(
"3"
);
LdapHealthIndicator
healthIndicator
=
new
LdapHealthIndicator
(
ldapTemplate
);
Health
health
=
healthIndicator
.
health
();
assertThat
(
health
.
getStatus
()).
isEqualTo
(
Status
.
UP
);
assertThat
(
health
.
getDetails
().
get
(
"version"
)).
isEqualTo
(
"3"
);
verify
(
ldapTemplate
).
executeReadOnly
(
any
(
ContextExecutor
.
class
));
verify
(
ldapTemplate
).
executeReadOnly
(
(
ContextExecutor
<
String
>)
any
(
));
}
@Test
@SuppressWarnings
(
"unchecked"
)
public
void
ldapIsDown
()
{
LdapTemplate
ldapTemplate
=
mock
(
LdapTemplate
.
class
);
given
(
ldapTemplate
.
executeReadOnly
(
any
(
ContextExecutor
.
class
)))
given
(
ldapTemplate
.
executeReadOnly
(
(
ContextExecutor
<
String
>)
any
(
)))
.
willThrow
(
new
CommunicationException
(
new
javax
.
naming
.
CommunicationException
(
"Connection failed"
)));
LdapHealthIndicator
healthIndicator
=
new
LdapHealthIndicator
(
ldapTemplate
);
...
...
@@ -94,7 +96,7 @@ public class LdapHealthIndicatorTests {
assertThat
(
health
.
getStatus
()).
isEqualTo
(
Status
.
DOWN
);
assertThat
((
String
)
health
.
getDetails
().
get
(
"error"
))
.
contains
(
"Connection failed"
);
verify
(
ldapTemplate
).
executeReadOnly
(
any
(
ContextExecutor
.
class
));
verify
(
ldapTemplate
).
executeReadOnly
(
(
ContextExecutor
<
String
>)
any
(
));
}
}
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/batch/BatchProperties.java
View file @
5502fa29
...
...
@@ -26,7 +26,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Vedran Pavic
* @since 1.2.0
*/
@ConfigurationProperties
(
"spring.batch"
)
@ConfigurationProperties
(
prefix
=
"spring.batch"
)
public
class
BatchProperties
{
private
static
final
String
DEFAULT_SCHEMA_LOCATION
=
"classpath:org/springframework/"
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/ldap/LdapRepositoriesAutoConfiguration.java
View file @
5502fa29
...
...
@@ -28,8 +28,7 @@ import org.springframework.data.ldap.repository.LdapRepository;
import
org.springframework.data.ldap.repository.support.LdapRepositoryFactoryBean
;
/**
* {@link EnableAutoConfiguration Auto-configuration} for Spring Data's LDAP
* Repositories.
* {@link EnableAutoConfiguration Auto-configuration} for Spring Data's LDAP Repositories.
*
* @author Eddú Meléndez
* @since 1.5.0
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/rest/RepositoryRestProperties.java
View file @
5502fa29
...
...
@@ -27,7 +27,7 @@ import org.springframework.http.MediaType;
* @author Stephane Nicoll
* @since 1.3.0
*/
@ConfigurationProperties
(
"spring.data.rest"
)
@ConfigurationProperties
(
prefix
=
"spring.data.rest"
)
public
class
RepositoryRestProperties
{
/**
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/jest/JestProperties.java
View file @
5502fa29
...
...
@@ -27,7 +27,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Stephane Nicoll
* @since 1.4.0
*/
@ConfigurationProperties
(
"spring.elasticsearch.jest"
)
@ConfigurationProperties
(
prefix
=
"spring.elasticsearch.jest"
)
public
class
JestProperties
{
/**
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java
View file @
5502fa29
...
...
@@ -37,10 +37,11 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
public
class
FlywayProperties
{
/**
* Locations of migrations scripts. Can contain the special "{vendor}" placeholder
*
to
use vendor-specific locations.
* Locations of migrations scripts. Can contain the special "{vendor}" placeholder
to
* use vendor-specific locations.
*/
private
List
<
String
>
locations
=
new
ArrayList
<
String
>(
Collections
.
singletonList
(
"db/migration"
));
private
List
<
String
>
locations
=
new
ArrayList
<
String
>(
Collections
.
singletonList
(
"db/migration"
));
/**
* Check that migration scripts location exists.
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/h2/H2ConsoleProperties.java
View file @
5502fa29
...
...
@@ -16,10 +16,10 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
h2
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
import
javax.annotation.PostConstruct
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.util.Assert
;
/**
* Configuration properties for H2's console.
...
...
@@ -35,8 +35,6 @@ public class H2ConsoleProperties {
/**
* Path at which the console will be available.
*/
@NotNull
@Pattern
(
regexp
=
"/[^?#]*"
,
message
=
"Path must start with /"
)
private
String
path
=
"/h2-console"
;
/**
...
...
@@ -46,6 +44,13 @@ public class H2ConsoleProperties {
private
final
Settings
settings
=
new
Settings
();
@PostConstruct
private
void
validate
()
{
Assert
.
notNull
(
this
.
path
,
"Path must not be null"
);
Assert
.
isTrue
(
this
.
path
.
length
()
==
0
||
this
.
path
.
startsWith
(
"/"
),
"Path must start with / or be empty"
);
}
public
String
getPath
()
{
return
this
.
path
;
}
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastProperties.java
View file @
5502fa29
...
...
@@ -26,7 +26,7 @@ import org.springframework.util.Assert;
* @author Stephane Nicoll
* @since 1.3.0
*/
@ConfigurationProperties
(
"spring.hazelcast"
)
@ConfigurationProperties
(
prefix
=
"spring.hazelcast"
)
public
class
HazelcastProperties
{
/**
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/info/ProjectInfoProperties.java
View file @
5502fa29
...
...
@@ -28,7 +28,7 @@ import org.springframework.core.io.Resource;
* @author Stephane Nicoll
* @since 1.4.0
*/
@ConfigurationProperties
(
"spring.info"
)
@ConfigurationProperties
(
prefix
=
"spring.info"
)
public
class
ProjectInfoProperties
{
private
final
Build
build
=
new
Build
();
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration.java
View file @
5502fa29
...
...
@@ -50,7 +50,7 @@ abstract class DataSourceConfiguration {
static
class
Tomcat
extends
DataSourceConfiguration
{
@Bean
@ConfigurationProperties
(
"spring.datasource.tomcat"
)
@ConfigurationProperties
(
prefix
=
"spring.datasource.tomcat"
)
public
org
.
apache
.
tomcat
.
jdbc
.
pool
.
DataSource
dataSource
(
DataSourceProperties
properties
)
{
org
.
apache
.
tomcat
.
jdbc
.
pool
.
DataSource
dataSource
=
createDataSource
(
...
...
@@ -75,7 +75,7 @@ abstract class DataSourceConfiguration {
static
class
Hikari
extends
DataSourceConfiguration
{
@Bean
@ConfigurationProperties
(
"spring.datasource.hikari"
)
@ConfigurationProperties
(
prefix
=
"spring.datasource.hikari"
)
public
HikariDataSource
dataSource
(
DataSourceProperties
properties
)
{
return
createDataSource
(
properties
,
HikariDataSource
.
class
);
}
...
...
@@ -90,7 +90,7 @@ abstract class DataSourceConfiguration {
static
class
Dbcp2
extends
DataSourceConfiguration
{
@Bean
@ConfigurationProperties
(
"spring.datasource.dbcp2"
)
@ConfigurationProperties
(
prefix
=
"spring.datasource.dbcp2"
)
public
org
.
apache
.
commons
.
dbcp2
.
BasicDataSource
dataSource
(
DataSourceProperties
properties
)
{
return
createDataSource
(
properties
,
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jersey/JerseyProperties.java
View file @
5502fa29
...
...
@@ -29,7 +29,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Stephane Nicoll
* @since 1.2.0
*/
@ConfigurationProperties
(
"spring.jersey"
)
@ConfigurationProperties
(
prefix
=
"spring.jersey"
)
public
class
JerseyProperties
{
/**
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQConnectionFactoryConfiguration.java
View file @
5502fa29
...
...
@@ -54,7 +54,7 @@ class ActiveMQConnectionFactoryConfiguration {
@Bean
(
destroyMethod
=
"stop"
)
@ConditionalOnProperty
(
prefix
=
"spring.activemq.pool"
,
name
=
"enabled"
,
havingValue
=
"true"
,
matchIfMissing
=
false
)
@ConfigurationProperties
(
"spring.activemq.pool.configuration"
)
@ConfigurationProperties
(
prefix
=
"spring.activemq.pool.configuration"
)
public
PooledConnectionFactory
pooledJmsConnectionFactory
(
ActiveMQProperties
properties
)
{
PooledConnectionFactory
pooledConnectionFactory
=
new
PooledConnectionFactory
(
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java
View file @
5502fa29
...
...
@@ -19,11 +19,12 @@ package org.springframework.boot.autoconfigure.liquibase;
import
java.io.File
;
import
java.util.Map
;
import
javax.
validation.constraints.NotNull
;
import
javax.
annotation.PostConstruct
;
import
liquibase.integration.spring.SpringLiquibase
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.util.Assert
;
/**
* Configuration properties to configure {@link SpringLiquibase}.
...
...
@@ -37,7 +38,6 @@ public class LiquibaseProperties {
/**
* Change log configuration path.
*/
@NotNull
private
String
changeLog
=
"classpath:/db/changelog/db.changelog-master.yaml"
;
/**
...
...
@@ -96,6 +96,11 @@ public class LiquibaseProperties {
*/
private
File
rollbackFile
;
@PostConstruct
private
void
validate
()
{
Assert
.
notNull
(
this
.
changeLog
,
"ChangeLog must not be null"
);
}
public
String
getChangeLog
()
{
return
this
.
changeLog
;
}
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mobile/DeviceDelegatingViewResolverProperties.java
View file @
5502fa29
...
...
@@ -24,7 +24,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Stephane Nicoll
* @since 1.2.0
*/
@ConfigurationProperties
(
"spring.mobile.devicedelegatingviewresolver"
)
@ConfigurationProperties
(
prefix
=
"spring.mobile.devicedelegatingviewresolver"
)
public
class
DeviceDelegatingViewResolverProperties
{
/**
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/SecurityProperties.java
View file @
5502fa29
...
...
@@ -48,8 +48,8 @@ public class SecurityProperties implements SecurityPrerequisite {
/**
* Order applied to the WebSecurityConfigurerAdapter that is used to configure basic
* authentication for application endpoints. If you want to add your own
* authentication for all or some of those endpoints the best thing to do is to add
your
* own WebSecurityConfigurerAdapter with lower order.
* authentication for all or some of those endpoints the best thing to do is to add
*
your
own WebSecurityConfigurerAdapter with lower order.
*/
public
static
final
int
BASIC_AUTH_ORDER
=
Ordered
.
LOWEST_PRECEDENCE
-
5
;
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/OAuth2ClientProperties.java
View file @
5502fa29
...
...
@@ -27,7 +27,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Stephane Nicoll
* @since 1.3.0
*/
@ConfigurationProperties
(
"security.oauth2.client"
)
@ConfigurationProperties
(
prefix
=
"security.oauth2.client"
)
public
class
OAuth2ClientProperties
{
/**
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/authserver/AuthorizationServerProperties.java
View file @
5502fa29
...
...
@@ -24,7 +24,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Dave Syer
* @since 1.3.0
*/
@ConfigurationProperties
(
"security.oauth2.authorization"
)
@ConfigurationProperties
(
prefix
=
"security.oauth2.authorization"
)
public
class
AuthorizationServerProperties
{
/**
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/authserver/OAuth2AuthorizationServerConfiguration.java
View file @
5502fa29
...
...
@@ -174,7 +174,7 @@ public class OAuth2AuthorizationServerConfiguration
}
@Bean
@ConfigurationProperties
(
"security.oauth2.client"
)
@ConfigurationProperties
(
prefix
=
"security.oauth2.client"
)
public
BaseClientDetails
oauth2ClientDetails
()
{
BaseClientDetails
details
=
new
BaseClientDetails
();
if
(
this
.
client
.
getClientId
()
==
null
)
{
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ProtectedResourceDetailsConfiguration.java
View file @
5502fa29
...
...
@@ -31,7 +31,7 @@ import org.springframework.security.oauth2.client.token.grant.code.Authorization
class
OAuth2ProtectedResourceDetailsConfiguration
{
@Bean
@ConfigurationProperties
(
"security.oauth2.client"
)
@ConfigurationProperties
(
prefix
=
"security.oauth2.client"
)
@Primary
public
AuthorizationCodeResourceDetails
oauth2RemoteResource
()
{
return
new
AuthorizationCodeResourceDetails
();
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2RestOperationsConfiguration.java
View file @
5502fa29
...
...
@@ -74,7 +74,7 @@ public class OAuth2RestOperationsConfiguration {
protected
static
class
SingletonScopedConfiguration
{
@Bean
@ConfigurationProperties
(
"security.oauth2.client"
)
@ConfigurationProperties
(
prefix
=
"security.oauth2.client"
)
@Primary
public
ClientCredentialsResourceDetails
oauth2RemoteResource
()
{
ClientCredentialsResourceDetails
details
=
new
ClientCredentialsResourceDetails
();
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2SsoProperties.java
View file @
5502fa29
...
...
@@ -24,7 +24,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Dave Syer
* @since 1.3.0
*/
@ConfigurationProperties
(
"security.oauth2.sso"
)
@ConfigurationProperties
(
prefix
=
"security.oauth2.sso"
)
public
class
OAuth2SsoProperties
{
public
static
final
String
DEFAULT_LOGIN_PATH
=
"/login"
;
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/resource/DefaultUserInfoRestTemplateFactory.java
View file @
5502fa29
...
...
@@ -66,11 +66,13 @@ public class DefaultUserInfoRestTemplateFactory implements UserInfoRestTemplateF
this
.
oauth2ClientContext
=
oauth2ClientContext
.
getIfAvailable
();
}
@Override
public
OAuth2RestTemplate
getUserInfoRestTemplate
()
{
if
(
this
.
oauth2RestTemplate
==
null
)
{
this
.
oauth2RestTemplate
=
createOAuth2RestTemplate
(
this
.
details
==
null
?
DEFAULT_RESOURCE_DETAILS
:
this
.
details
);
this
.
oauth2RestTemplate
.
getInterceptors
().
add
(
new
AcceptJsonRequestInterceptor
());
this
.
oauth2RestTemplate
.
getInterceptors
()
.
add
(
new
AcceptJsonRequestInterceptor
());
AuthorizationCodeAccessTokenProvider
accessTokenProvider
=
new
AuthorizationCodeAccessTokenProvider
();
accessTokenProvider
.
setTokenRequestEnhancer
(
new
AcceptJsonRequestEnhancer
());
this
.
oauth2RestTemplate
.
setAccessTokenProvider
(
accessTokenProvider
);
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/resource/ResourceServerProperties.java
View file @
5502fa29
...
...
@@ -37,7 +37,7 @@ import org.springframework.validation.Validator;
* @author Dave Syer
* @since 1.3.0
*/
@ConfigurationProperties
(
"security.oauth2.resource"
)
@ConfigurationProperties
(
prefix
=
"security.oauth2.resource"
)
public
class
ResourceServerProperties
implements
Validator
,
BeanFactoryAware
{
@JsonIgnore
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/resource/ResourceServerTokenServicesConfiguration.java
View file @
5502fa29
...
...
@@ -88,7 +88,8 @@ public class ResourceServerTokenServicesConfiguration {
ObjectProvider
<
List
<
UserInfoRestTemplateCustomizer
>>
customizers
,
ObjectProvider
<
OAuth2ProtectedResourceDetails
>
details
,
ObjectProvider
<
OAuth2ClientContext
>
oauth2ClientContext
)
{
return
new
DefaultUserInfoRestTemplateFactory
(
customizers
,
details
,
oauth2ClientContext
);
return
new
DefaultUserInfoRestTemplateFactory
(
customizers
,
details
,
oauth2ClientContext
);
}
@Configuration
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/SessionProperties.java
View file @
5502fa29
...
...
@@ -30,7 +30,7 @@ import org.springframework.session.hazelcast.HazelcastFlushMode;
* @author Vedran Pavic
* @since 1.4.0
*/
@ConfigurationProperties
(
"spring.session"
)
@ConfigurationProperties
(
prefix
=
"spring.session"
)
public
class
SessionProperties
{
/**
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/social/FacebookProperties.java
View file @
5502fa29
...
...
@@ -24,7 +24,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Stephane Nicoll
* @since 1.2.0
*/
@ConfigurationProperties
(
"spring.social.facebook"
)
@ConfigurationProperties
(
prefix
=
"spring.social.facebook"
)
public
class
FacebookProperties
extends
SocialProperties
{
}
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/social/LinkedInProperties.java
View file @
5502fa29
...
...
@@ -24,7 +24,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Stephane Nicoll
* @since 1.2.0
*/
@ConfigurationProperties
(
"spring.social.linkedin"
)
@ConfigurationProperties
(
prefix
=
"spring.social.linkedin"
)
public
class
LinkedInProperties
extends
SocialProperties
{
}
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/social/TwitterProperties.java
View file @
5502fa29
...
...
@@ -24,7 +24,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Stephane Nicoll
* @since 1.2.0
*/
@ConfigurationProperties
(
"spring.social.twitter"
)
@ConfigurationProperties
(
prefix
=
"spring.social.twitter"
)
public
class
TwitterProperties
extends
SocialProperties
{
}
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafProperties.java
View file @
5502fa29
...
...
@@ -27,7 +27,7 @@ import org.springframework.util.MimeType;
* @author Stephane Nicoll
* @since 1.2.0
*/
@ConfigurationProperties
(
"spring.thymeleaf"
)
@ConfigurationProperties
(
prefix
=
"spring.thymeleaf"
)
public
class
ThymeleafProperties
{
private
static
final
Charset
DEFAULT_ENCODING
=
Charset
.
forName
(
"UTF-8"
);
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/transaction/TransactionProperties.java
View file @
5502fa29
...
...
@@ -27,7 +27,7 @@ import org.springframework.transaction.support.AbstractPlatformTransactionManage
* @author Phillip Webb
* @since 1.5.0
*/
@ConfigurationProperties
(
"spring.transaction"
)
@ConfigurationProperties
(
prefix
=
"spring.transaction"
)
public
class
TransactionProperties
implements
PlatformTransactionManagerCustomizer
<
AbstractPlatformTransactionManager
>
{
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/transaction/jta/BitronixJtaConfiguration.java
View file @
5502fa29
...
...
@@ -71,7 +71,7 @@ class BitronixJtaConfiguration {
@Bean
@ConditionalOnMissingBean
@ConfigurationProperties
(
"spring.jta.bitronix.properties"
)
@ConfigurationProperties
(
prefix
=
"spring.jta.bitronix.properties"
)
public
bitronix
.
tm
.
Configuration
bitronixConfiguration
()
{
bitronix
.
tm
.
Configuration
config
=
TransactionManagerServices
.
getConfiguration
();
if
(
StringUtils
.
hasText
(
this
.
jtaProperties
.
getTransactionManagerId
()))
{
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/ServerProperties.java
View file @
5502fa29
...
...
@@ -26,11 +26,11 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Set
;
import
javax.annotation.PostConstruct
;
import
javax.servlet.ServletContext
;
import
javax.servlet.ServletException
;
import
javax.servlet.SessionCookieConfig
;
import
javax.servlet.SessionTrackingMode
;
import
javax.validation.constraints.NotNull
;
import
io.undertow.Undertow.Builder
;
import
io.undertow.UndertowOptions
;
...
...
@@ -74,6 +74,7 @@ import org.springframework.boot.web.servlet.ServletContextInitializer;
import
org.springframework.context.EnvironmentAware
;
import
org.springframework.core.Ordered
;
import
org.springframework.core.env.Environment
;
import
org.springframework.util.Assert
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.StringUtils
;
...
...
@@ -122,7 +123,6 @@ public class ServerProperties
/**
* Path of the main dispatcher servlet.
*/
@NotNull
private
String
servletPath
=
"/"
;
/**
...
...
@@ -171,6 +171,11 @@ public class ServerProperties
private
Environment
environment
;
@PostConstruct
private
void
validate
()
{
Assert
.
notNull
(
this
.
servletPath
,
"ServletPath must not be null"
);
}
@Override
public
int
getOrder
()
{
return
0
;
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/WebMvcProperties.java
View file @
5502fa29
...
...
@@ -33,7 +33,7 @@ import org.springframework.validation.DefaultMessageCodesResolver;
* @author Eddú Meléndez
* @since 1.1
*/
@ConfigurationProperties
(
"spring.mvc"
)
@ConfigurationProperties
(
prefix
=
"spring.mvc"
)
public
class
WebMvcProperties
{
/**
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/webservices/WebServicesProperties.java
View file @
5502fa29
...
...
@@ -19,10 +19,10 @@ package org.springframework.boot.autoconfigure.webservices;
import
java.util.HashMap
;
import
java.util.Map
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
import
javax.annotation.PostConstruct
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.util.Assert
;
/**
* {@link ConfigurationProperties} for Spring Web Services.
...
...
@@ -31,18 +31,23 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Stephane Nicoll
* @since 1.4.0
*/
@ConfigurationProperties
(
"spring.webservices"
)
@ConfigurationProperties
(
prefix
=
"spring.webservices"
)
public
class
WebServicesProperties
{
/**
* Path that serves as the base URI for the services.
*/
@NotNull
@Pattern
(
regexp
=
"/[^?#]*"
,
message
=
"Path must start with /"
)
private
String
path
=
"/services"
;
private
final
Servlet
servlet
=
new
Servlet
();
@PostConstruct
private
void
validate
()
{
Assert
.
notNull
(
this
.
path
,
"Path must not be null"
);
Assert
.
isTrue
(
this
.
path
.
length
()
==
0
||
this
.
path
.
startsWith
(
"/"
),
"Path must start with / or be empty"
);
}
public
String
getPath
()
{
return
this
.
path
;
}
...
...
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/rest/RepositoryRestMvcAutoConfigurationTests.java
View file @
5502fa29
...
...
@@ -222,13 +222,16 @@ public class RepositoryRestMvcAutoConfigurationTests {
}
static
class
TestRepositoryRestConfigurer
extends
RepositoryRestConfigurerAdapter
{
@Override
public
void
configureRepositoryRestConfiguration
(
RepositoryRestConfiguration
config
)
{
public
void
configureRepositoryRestConfiguration
(
RepositoryRestConfiguration
config
)
{
config
.
setRepositoryDetectionStrategy
(
RepositoryDetectionStrategies
.
ALL
);
config
.
setDefaultMediaType
(
MediaType
.
parseMediaType
(
"application/my-custom-json"
));
config
.
setDefaultMediaType
(
MediaType
.
parseMediaType
(
"application/my-custom-json"
));
config
.
setMaxPageSize
(
78
);
}
}
}
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/oauth2/resource/ResourceServerTokenServicesConfigurationTests.java
View file @
5502fa29
...
...
@@ -220,7 +220,7 @@ public class ResourceServerTokenServicesConfigurationTests {
"security.oauth2.resource.userInfoUri:http://example.com"
);
this
.
context
=
new
SpringApplicationBuilder
(
CustomUserInfoRestTemplateFactory
.
class
,
ResourceConfiguration
.
class
)
.
environment
(
this
.
environment
).
web
(
false
).
run
();
.
environment
(
this
.
environment
).
web
(
false
).
run
();
assertThat
(
this
.
context
.
getBeansOfType
(
UserInfoRestTemplateFactory
.
class
))
.
hasSize
(
1
);
assertThat
(
this
.
context
.
getBean
(
UserInfoRestTemplateFactory
.
class
))
...
...
@@ -331,8 +331,8 @@ public class ResourceServerTokenServicesConfigurationTests {
protected
static
class
CustomUserInfoRestTemplateFactory
implements
UserInfoRestTemplateFactory
{
private
final
OAuth2RestTemplate
restTemplate
=
new
OAuth2RestTemplate
(
new
AuthorizationCodeResourceDetails
());
private
final
OAuth2RestTemplate
restTemplate
=
new
OAuth2RestTemplate
(
new
AuthorizationCodeResourceDetails
());
@Override
public
OAuth2RestTemplate
getUserInfoRestTemplate
()
{
...
...
spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
View file @
5502fa29
...
...
@@ -1090,13 +1090,16 @@ only rely on custom converters qualified with `@ConfigurationPropertiesBinding`.
[[boot-features-external-config-validation]]
==== @ConfigurationProperties Validation
Spring Boot will attempt to validate external configuration, by default using JSR-303
(if it is on the classpath). You can simply add JSR-303 `javax.validation` constraint
annotations to your `@ConfigurationProperties` class:
Spring Boot will attempt to validate `@ConfigurationProperties` classes whenever they
annotated with Spring's `@Validated` annotation. You can use JSR-303 `javax.validation`
constraint annotations directly on your configuration class. Simply ensure that a
compliant JSR-303 implementation is on your classpath, then add constraint annotations to
your fields:
[source,java,indent=0]
----
@ConfigurationProperties(prefix="foo")
@Validated
public class FooProperties {
@NotNull
...
...
@@ -1114,6 +1117,7 @@ as `@Valid` to trigger its validation. For example, building upon the above
[source,java,indent=0]
----
@ConfigurationProperties(prefix="connection")
@Validated
public class FooProperties {
@NotNull
...
...
spring-boot-parent/pom.xml
View file @
5502fa29
...
...
@@ -775,6 +775,12 @@
<name>
m2e.version
</name>
</property>
</activation>
<properties>
<m2e.jaxrs.activation>
false
</m2e.jaxrs.activation>
<m2e.jpa.activation>
false
</m2e.jpa.activation>
<m2e.jsf.activation>
false
</m2e.jsf.activation>
<m2e.cdi.activation>
false
</m2e.cdi.activation>
</properties>
<build>
<plugins>
<plugin>
...
...
spring-boot-samples/spring-boot-sample-simple/pom.xml
View file @
5502fa29
...
...
@@ -24,6 +24,10 @@
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.hibernate
</groupId>
<artifactId>
hibernate-validator
</artifactId>
</dependency>
<!-- Test -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
...
...
spring-boot-samples/spring-boot-sample-simple/src/main/java/sample/simple/SampleConfigurationProperties.java
0 → 100644
View file @
5502fa29
/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
sample
.
simple
;
import
javax.validation.constraints.NotNull
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.stereotype.Component
;
@Component
@ConfigurationProperties
(
prefix
=
"sample"
)
public
class
SampleConfigurationProperties
{
@NotNull
private
String
name
;
public
String
getName
()
{
return
this
.
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
}
spring-boot-samples/spring-boot-sample-simple/src/main/resources/application.properties
View file @
5502fa29
name
:
Phil
name
=
Phil
sample.name
=
Andy
spring-boot-samples/spring-boot-sample-simple/src/test/java/sample/simple/SampleSimpleApplicationTests.java
View file @
5502fa29
...
...
@@ -58,6 +58,10 @@ public class SampleSimpleApplicationTests {
SampleSimpleApplication
.
main
(
new
String
[
0
]);
String
output
=
this
.
outputCapture
.
toString
();
assertThat
(
output
).
contains
(
"Hello Phil"
);
assertThat
(
output
).
contains
(
"The @ConfigurationProperties bean class "
+
"sample.simple.SampleConfigurationProperties contains "
+
"validation constraints but had not been annotated "
+
"with @Validated"
);
}
@Test
...
...
spring-boot-samples/spring-boot-sample-simple/src/test/resources/application.properties
deleted
100644 → 0
View file @
58740d7f
name
:
Phil
\ No newline at end of file
spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/restdocs/RestDocsAutoConfiguration.java
View file @
5502fa29
...
...
@@ -56,7 +56,7 @@ public class RestDocsAutoConfiguration {
}
@Bean
@ConfigurationProperties
(
"spring.test.restdocs"
)
@ConfigurationProperties
(
prefix
=
"spring.test.restdocs"
)
public
RestDocsMockMvcBuilderCustomizer
restDocumentationConfigurer
(
MockMvcRestDocumentationConfigurer
configurer
,
ObjectProvider
<
RestDocumentationResultHandler
>
resultHandler
)
{
...
...
spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/servlet/MockMvcAutoConfiguration.java
View file @
5502fa29
...
...
@@ -74,7 +74,7 @@ public class MockMvcAutoConfiguration {
}
@Bean
@ConfigurationProperties
(
"spring.test.mockmvc"
)
@ConfigurationProperties
(
prefix
=
"spring.test.mockmvc"
)
public
SpringBootMockMvcBuilderCustomizer
springBootMockMvcBuilderCustomizer
()
{
return
new
SpringBootMockMvcBuilderCustomizer
(
this
.
context
);
}
...
...
spring-boot/src/main/java/org/springframework/boot/bind/PropertiesConfigurationFactory.java
View file @
5502fa29
...
...
@@ -267,8 +267,9 @@ public class PropertiesConfigurationFactory<T>
relaxedTargetNames
);
dataBinder
.
bind
(
propertyValues
);
if
(
this
.
validator
!=
null
)
{
validate
(
dataBinder
);
dataBinder
.
validate
(
);
}
checkForBindingErrors
(
dataBinder
);
}
private
Iterable
<
String
>
getRelaxedTargetNames
()
{
...
...
@@ -338,8 +339,8 @@ public class PropertiesConfigurationFactory<T>
return
this
.
target
!=
null
&&
Map
.
class
.
isAssignableFrom
(
this
.
target
.
getClass
());
}
private
void
validate
(
RelaxedDataBinder
dataBinder
)
throws
BindException
{
dataBinder
.
validate
();
private
void
checkForBindingErrors
(
RelaxedDataBinder
dataBinder
)
throws
BindException
{
BindingResult
errors
=
dataBinder
.
getBindingResult
();
if
(
errors
.
hasErrors
())
{
logger
.
error
(
"Properties configuration failed validation"
);
...
...
spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationProperties.java
View file @
5502fa29
...
...
@@ -23,6 +23,7 @@ import java.lang.annotation.RetentionPolicy;
import
java.lang.annotation.Target
;
import
org.springframework.core.annotation.AliasFor
;
import
org.springframework.validation.annotation.Validated
;
/**
* Annotation for externalized configuration. Add this to a class definition or a
...
...
@@ -80,9 +81,10 @@ public @interface ConfigurationProperties {
boolean
ignoreUnknownFields
()
default
true
;
/**
* Flag to indicate that an exception should be raised if a Validator is available and
* validation fails. If it is set to false, validation errors will be swallowed. They
* will be logged, but not propagated to the caller.
* Flag to indicate that an exception should be raised if a Validator is available,
* the class is annotated with {@link Validated @Validated} and validation fails. If
* it is set to false, validation errors will be swallowed. They will be logged, but
* not propagated to the caller.
* @return the flag value (default true)
*/
boolean
exceptionIfInvalid
()
default
true
;
...
...
spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationPropertiesBindingPostProcessor.java
View file @
5502fa29
...
...
@@ -45,6 +45,7 @@ import org.springframework.context.event.ContextRefreshedEvent;
import
org.springframework.context.support.PropertySourcesPlaceholderConfigurer
;
import
org.springframework.core.Ordered
;
import
org.springframework.core.PriorityOrdered
;
import
org.springframework.core.annotation.AnnotatedElementUtils
;
import
org.springframework.core.annotation.AnnotationUtils
;
import
org.springframework.core.convert.ConversionService
;
import
org.springframework.core.convert.converter.Converter
;
...
...
@@ -61,6 +62,7 @@ import org.springframework.util.ClassUtils;
import
org.springframework.util.StringUtils
;
import
org.springframework.validation.Errors
;
import
org.springframework.validation.Validator
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.beanvalidation.LocalValidatorFactoryBean
;
/**
...
...
@@ -362,8 +364,8 @@ public class ConfigurationPropertiesBindingPostProcessor implements BeanPostProc
return
this
.
validator
;
}
if
(
this
.
localValidator
==
null
&&
isJsr303Present
())
{
this
.
localValidator
=
new
LocalValidatorFactory
()
.
run
(
this
.
applicationContext
);
this
.
localValidator
=
new
ValidatedLocalValidatorFactoryBean
(
this
.
applicationContext
);
}
return
this
.
localValidator
;
}
...
...
@@ -394,18 +396,38 @@ public class ConfigurationPropertiesBindingPostProcessor implements BeanPostProc
}
/**
*
Factory to create JSR 303 LocalValidatorFactoryBean. Inner class to prevent class
*
loader issues
.
*
{@link LocalValidatorFactoryBean} supports classes annotated with
*
{@link Validated @Validated}
.
*/
private
static
class
LocalValidatorFactory
{
public
Validator
run
(
ApplicationContext
applicationContext
)
{
LocalValidatorFactoryBean
validator
=
new
LocalValidatorFactoryBean
();
MessageInterpolatorFactory
interpolatorFactory
=
new
MessageInterpolatorFactory
();
validator
.
setApplicationContext
(
applicationContext
);
validator
.
setMessageInterpolator
(
interpolatorFactory
.
getObject
());
validator
.
afterPropertiesSet
();
return
validator
;
private
static
class
ValidatedLocalValidatorFactoryBean
extends
LocalValidatorFactoryBean
{
private
static
final
Log
logger
=
LogFactory
.
getLog
(
ConfigurationPropertiesBindingPostProcessor
.
class
);
ValidatedLocalValidatorFactoryBean
(
ApplicationContext
applicationContext
)
{
setApplicationContext
(
applicationContext
);
setMessageInterpolator
(
new
MessageInterpolatorFactory
().
getObject
());
afterPropertiesSet
();
}
@Override
public
boolean
supports
(
Class
<?>
type
)
{
if
(!
super
.
supports
(
type
))
{
return
false
;
}
if
(
AnnotatedElementUtils
.
isAnnotated
(
type
,
Validated
.
class
))
{
return
true
;
}
if
(
type
.
getPackage
().
getName
().
startsWith
(
"org.springframework.boot"
))
{
return
false
;
}
if
(
getConstraintsForClass
(
type
).
isBeanConstrained
())
{
logger
.
warn
(
"The @ConfigurationProperties bean "
+
type
+
" contains validation constraints but had not been annotated "
+
"with @Validated."
);
}
return
true
;
}
}
...
...
spring-boot/src/main/java/org/springframework/boot/jta/atomikos/AtomikosProperties.java
View file @
5502fa29
...
...
@@ -33,7 +33,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @since 1.2.0
* @see #asProperties()
*/
@ConfigurationProperties
(
"spring.jta.atomikos.properties"
)
@ConfigurationProperties
(
prefix
=
"spring.jta.atomikos.properties"
)
public
class
AtomikosProperties
{
private
final
Map
<
String
,
String
>
values
=
new
TreeMap
<
String
,
String
>();
...
...
spring-boot/src/test/java/org/springframework/boot/context/properties/ConfigurationPropertiesBindingPostProcessorTests.java
View file @
5502fa29
...
...
@@ -46,6 +46,7 @@ import org.springframework.validation.BindException;
import
org.springframework.validation.Errors
;
import
org.springframework.validation.ValidationUtils
;
import
org.springframework.validation.Validator
;
import
org.springframework.validation.annotation.Validated
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
junit
.
Assert
.
fail
;
...
...
@@ -456,6 +457,7 @@ public class ConfigurationPropertiesBindingPostProcessorTests {
}
@ConfigurationProperties
(
prefix
=
"test"
)
@Validated
public
static
class
PropertyWithJSR303
extends
PropertyWithoutJSR303
{
@NotNull
...
...
spring-boot/src/test/java/org/springframework/boot/context/properties/EnableConfigurationPropertiesTests.java
View file @
5502fa29
...
...
@@ -38,6 +38,7 @@ import org.springframework.core.env.MutablePropertySources;
import
org.springframework.stereotype.Component
;
import
org.springframework.test.context.support.TestPropertySourceUtils
;
import
org.springframework.validation.BindException
;
import
org.springframework.validation.annotation.Validated
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
...
@@ -172,6 +173,17 @@ public class EnableConfigurationPropertiesTests {
this
.
context
.
refresh
();
}
@Test
public
void
testNoExceptionOnValidationWithoutValidated
()
{
this
.
context
.
register
(
IgnoredIfInvalidButNotValidatedTestConfiguration
.
class
);
TestPropertySourceUtils
.
addInlinedPropertiesToEnvironment
(
this
.
context
,
"name:foo"
);
this
.
context
.
refresh
();
IgnoredIfInvalidButNotValidatedTestProperties
bean
=
this
.
context
.
getBean
(
IgnoredIfInvalidButNotValidatedTestProperties
.
class
);
assertThat
(
bean
.
getDescription
()).
isNull
();
}
@Test
public
void
testNoExceptionOnValidation
()
{
this
.
context
.
register
(
NoExceptionIfInvalidTestConfiguration
.
class
);
...
...
@@ -432,6 +444,12 @@ public class EnableConfigurationPropertiesTests {
}
@Configuration
@EnableConfigurationProperties
(
IgnoredIfInvalidButNotValidatedTestProperties
.
class
)
protected
static
class
IgnoredIfInvalidButNotValidatedTestConfiguration
{
}
@Configuration
@EnableConfigurationProperties
(
NoExceptionIfInvalidTestProperties
.
class
)
protected
static
class
NoExceptionIfInvalidTestConfiguration
{
...
...
@@ -658,6 +676,7 @@ public class EnableConfigurationPropertiesTests {
}
@ConfigurationProperties
@Validated
protected
static
class
ExceptionIfInvalidTestProperties
extends
TestProperties
{
@NotNull
...
...
@@ -673,7 +692,25 @@ public class EnableConfigurationPropertiesTests {
}
@ConfigurationProperties
protected
static
class
IgnoredIfInvalidButNotValidatedTestProperties
extends
TestProperties
{
@NotNull
private
String
description
;
public
String
getDescription
()
{
return
this
.
description
;
}
public
void
setDescription
(
String
description
)
{
this
.
description
=
description
;
}
}
@ConfigurationProperties
(
exceptionIfInvalid
=
false
)
@Validated
protected
static
class
NoExceptionIfInvalidTestProperties
extends
TestProperties
{
@NotNull
...
...
spring-boot/src/test/java/org/springframework/boot/diagnostics/analyzer/BindFailureAnalyzerTests.java
View file @
5502fa29
...
...
@@ -32,6 +32,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
import
org.springframework.boot.diagnostics.FailureAnalysis
;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
import
org.springframework.context.i18n.LocaleContextHolder
;
import
org.springframework.validation.annotation.Validated
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
...
@@ -90,6 +91,7 @@ public class BindFailureAnalyzerTests {
}
@ConfigurationProperties
(
"test.foo"
)
@Validated
static
class
ValidationFailureProperties
{
@NotNull
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment