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
bb622292
Commit
bb622292
authored
Sep 14, 2017
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move configuration of ConfigurationPropertiesReportEndpoint
See gh-10263
parent
0d62b0cb
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
134 additions
and
28 deletions
+134
-28
ConfigurationPropertiesReportEndpointAutoConfiguration.java
...nfigurationPropertiesReportEndpointAutoConfiguration.java
+16
-1
ConfigurationPropertiesReportEndpointProperties.java
...ties/ConfigurationPropertiesReportEndpointProperties.java
+45
-0
additional-spring-configuration-metadata.json
...es/META-INF/additional-spring-configuration-metadata.json
+0
-3
ConfigurationPropertiesReportEndpointAutoConfigurationTests.java
...rationPropertiesReportEndpointAutoConfigurationTests.java
+71
-2
ConfigurationPropertiesReportEndpoint.java
...ext/properties/ConfigurationPropertiesReportEndpoint.java
+0
-1
ConfigurationPropertiesReportEndpointParentTests.java
...ies/ConfigurationPropertiesReportEndpointParentTests.java
+2
-2
ConfigurationPropertiesReportEndpointTests.java
...roperties/ConfigurationPropertiesReportEndpointTests.java
+0
-19
No files found.
spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/context/properties/ConfigurationPropertiesReportEndpointAutoConfiguration.java
View file @
bb622292
...
@@ -20,6 +20,7 @@ import org.springframework.boot.actuate.autoconfigure.endpoint.condition.Conditi
...
@@ -20,6 +20,7 @@ import org.springframework.boot.actuate.autoconfigure.endpoint.condition.Conditi
import
org.springframework.boot.actuate.context.properties.ConfigurationPropertiesReportEndpoint
;
import
org.springframework.boot.actuate.context.properties.ConfigurationPropertiesReportEndpoint
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
...
@@ -28,16 +29,30 @@ import org.springframework.context.annotation.Configuration;
...
@@ -28,16 +29,30 @@ import org.springframework.context.annotation.Configuration;
* {@link ConfigurationPropertiesReportEndpoint}.
* {@link ConfigurationPropertiesReportEndpoint}.
*
*
* @author Phillip Webb
* @author Phillip Webb
* @author Stephane Nicoll
* @since 2.0.0
* @since 2.0.0
*/
*/
@Configuration
@Configuration
@EnableConfigurationProperties
(
ConfigurationPropertiesReportEndpointProperties
.
class
)
public
class
ConfigurationPropertiesReportEndpointAutoConfiguration
{
public
class
ConfigurationPropertiesReportEndpointAutoConfiguration
{
private
final
ConfigurationPropertiesReportEndpointProperties
properties
;
public
ConfigurationPropertiesReportEndpointAutoConfiguration
(
ConfigurationPropertiesReportEndpointProperties
properties
)
{
this
.
properties
=
properties
;
}
@Bean
@Bean
@ConditionalOnMissingBean
@ConditionalOnMissingBean
@ConditionalOnEnabledEndpoint
@ConditionalOnEnabledEndpoint
public
ConfigurationPropertiesReportEndpoint
configurationPropertiesReportEndpoint
()
{
public
ConfigurationPropertiesReportEndpoint
configurationPropertiesReportEndpoint
()
{
return
new
ConfigurationPropertiesReportEndpoint
();
ConfigurationPropertiesReportEndpoint
endpoint
=
new
ConfigurationPropertiesReportEndpoint
();
String
[]
keysToSanitize
=
this
.
properties
.
getKeysToSanitize
();
if
(
keysToSanitize
!=
null
)
{
endpoint
.
setKeysToSanitize
(
keysToSanitize
);
}
return
endpoint
;
}
}
}
}
spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/context/properties/ConfigurationPropertiesReportEndpointProperties.java
0 → 100644
View file @
bb622292
/*
* 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
org
.
springframework
.
boot
.
actuate
.
autoconfigure
.
context
.
properties
;
import
org.springframework.boot.actuate.context.properties.ConfigurationPropertiesReportEndpoint
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
/**
* Configuration properties for {@link ConfigurationPropertiesReportEndpoint}.
*
* @author Stephane Nicoll
* @since 2.0.0
*/
@ConfigurationProperties
(
"endpoints.configprops"
)
public
class
ConfigurationPropertiesReportEndpointProperties
{
/**
* Keys that should be sanitized. Keys can be simple strings that the property ends
* with or regex expressions.
*/
private
String
[]
keysToSanitize
;
public
String
[]
getKeysToSanitize
()
{
return
this
.
keysToSanitize
;
}
public
void
setKeysToSanitize
(
String
[]
keysToSanitize
)
{
this
.
keysToSanitize
=
keysToSanitize
;
}
}
spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json
View file @
bb622292
{
"properties"
:
[
{
"properties"
:
[
{
{
"name"
:
"endpoints.configprops.keys-to-sanitize"
,
"name"
:
"endpoints.configprops.keys-to-sanitize"
,
"type"
:
"java.lang.String[]"
,
"sourceType"
:
"org.springframework.boot.actuate.context.properties.ConfigurationPropertiesReportEndpoint"
,
"description"
:
"Keys that should be sanitized. Keys can be simple strings that the property ends with or regex expressions."
,
"defaultValue"
:
[
"defaultValue"
:
[
"password"
,
"password"
,
"secret"
,
"secret"
,
...
...
spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/context/properties/ConfigurationPropertiesReportEndpointAutoConfigurationTests.java
View file @
bb622292
...
@@ -16,11 +16,20 @@
...
@@ -16,11 +16,20 @@
package
org
.
springframework
.
boot
.
actuate
.
autoconfigure
.
context
.
properties
;
package
org
.
springframework
.
boot
.
actuate
.
autoconfigure
.
context
.
properties
;
import
java.util.Map
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.springframework.boot.actuate.context.properties.ConfigurationPropertiesReportEndpoint
;
import
org.springframework.boot.actuate.context.properties.ConfigurationPropertiesReportEndpoint
;
import
org.springframework.boot.actuate.context.properties.ConfigurationPropertiesReportEndpoint.ConfigurationPropertiesDescriptor
;
import
org.springframework.boot.autoconfigure.AutoConfigurations
;
import
org.springframework.boot.autoconfigure.AutoConfigurations
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.boot.test.context.assertj.AssertableApplicationContext
;
import
org.springframework.boot.test.context.runner.ApplicationContextRunner
;
import
org.springframework.boot.test.context.runner.ApplicationContextRunner
;
import
org.springframework.boot.test.context.runner.ContextConsumer
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
@@ -37,8 +46,8 @@ public class ConfigurationPropertiesReportEndpointAutoConfigurationTests {
...
@@ -37,8 +46,8 @@ public class ConfigurationPropertiesReportEndpointAutoConfigurationTests {
@Test
@Test
public
void
runShouldHaveEndpointBean
()
{
public
void
runShouldHaveEndpointBean
()
{
this
.
contextRunner
.
run
((
context
)
->
assertThat
(
context
)
this
.
contextRunner
.
withUserConfiguration
(
Config
.
class
)
.
hasSingleBean
(
ConfigurationPropertiesReportEndpoint
.
class
));
.
run
(
validateTestProperties
(
"******"
,
"654321"
));
}
}
@Test
@Test
...
@@ -49,4 +58,64 @@ public class ConfigurationPropertiesReportEndpointAutoConfigurationTests {
...
@@ -49,4 +58,64 @@ public class ConfigurationPropertiesReportEndpointAutoConfigurationTests {
.
doesNotHaveBean
(
ConfigurationPropertiesReportEndpoint
.
class
));
.
doesNotHaveBean
(
ConfigurationPropertiesReportEndpoint
.
class
));
}
}
@Test
public
void
keysToSanitizeCanBeConfiguredViaTheEnvironment
()
throws
Exception
{
this
.
contextRunner
.
withUserConfiguration
(
Config
.
class
)
.
withPropertyValues
(
"endpoints.configprops.keys-to-sanitize: .*pass.*, property"
)
.
run
(
validateTestProperties
(
"******"
,
"******"
));
}
private
ContextConsumer
<
AssertableApplicationContext
>
validateTestProperties
(
String
dbPassword
,
String
myTestProperty
)
{
return
context
->
{
assertThat
(
context
).
hasSingleBean
(
ConfigurationPropertiesReportEndpoint
.
class
);
ConfigurationPropertiesReportEndpoint
endpoint
=
context
.
getBean
(
ConfigurationPropertiesReportEndpoint
.
class
);
ConfigurationPropertiesDescriptor
properties
=
endpoint
.
configurationProperties
();
Map
<
String
,
Object
>
nestedProperties
=
properties
.
getBeans
()
.
get
(
"testProperties"
).
getProperties
();
assertThat
(
nestedProperties
).
isNotNull
();
assertThat
(
nestedProperties
.
get
(
"dbPassword"
)).
isEqualTo
(
dbPassword
);
assertThat
(
nestedProperties
.
get
(
"myTestProperty"
)).
isEqualTo
(
myTestProperty
);
};
}
@Configuration
@EnableConfigurationProperties
public
static
class
Config
{
@Bean
public
TestProperties
testProperties
()
{
return
new
TestProperties
();
}
}
@ConfigurationProperties
(
"test"
)
private
static
class
TestProperties
{
private
String
dbPassword
=
"123456"
;
private
String
myTestProperty
=
"654321"
;
public
String
getDbPassword
()
{
return
this
.
dbPassword
;
}
public
void
setDbPassword
(
String
dbPassword
)
{
this
.
dbPassword
=
dbPassword
;
}
public
String
getMyTestProperty
()
{
return
this
.
myTestProperty
;
}
public
void
setMyTestProperty
(
String
myTestProperty
)
{
this
.
myTestProperty
=
myTestProperty
;
}
}
}
}
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java
View file @
bb622292
...
@@ -66,7 +66,6 @@ import org.springframework.util.StringUtils;
...
@@ -66,7 +66,6 @@ import org.springframework.util.StringUtils;
* @since 2.0.0
* @since 2.0.0
*/
*/
@Endpoint
(
id
=
"configprops"
)
@Endpoint
(
id
=
"configprops"
)
@ConfigurationProperties
(
"endpoints.configprops"
)
public
class
ConfigurationPropertiesReportEndpoint
implements
ApplicationContextAware
{
public
class
ConfigurationPropertiesReportEndpoint
implements
ApplicationContextAware
{
private
static
final
String
CGLIB_FILTER_ID
=
"cglibFilter"
;
private
static
final
String
CGLIB_FILTER_ID
=
"cglibFilter"
;
...
...
spring-boot-actuator/src/test/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpointParentTests.java
View file @
bb622292
...
@@ -48,7 +48,7 @@ public class ConfigurationPropertiesReportEndpointParentTests {
...
@@ -48,7 +48,7 @@ public class ConfigurationPropertiesReportEndpointParentTests {
ConfigurationPropertiesDescriptor
result
=
endpoint
ConfigurationPropertiesDescriptor
result
=
endpoint
.
configurationProperties
();
.
configurationProperties
();
assertThat
(
result
.
getBeans
().
keySet
())
assertThat
(
result
.
getBeans
().
keySet
())
.
containsExactlyInAnyOrder
(
"
endpoint"
,
"
someProperties"
);
.
containsExactlyInAnyOrder
(
"someProperties"
);
assertThat
((
result
.
getParent
().
getBeans
().
keySet
()))
assertThat
((
result
.
getParent
().
getBeans
().
keySet
()))
.
containsExactly
(
"testProperties"
);
.
containsExactly
(
"testProperties"
);
});
});
...
@@ -68,7 +68,7 @@ public class ConfigurationPropertiesReportEndpointParentTests {
...
@@ -68,7 +68,7 @@ public class ConfigurationPropertiesReportEndpointParentTests {
ConfigurationPropertiesDescriptor
result
=
endpoint
ConfigurationPropertiesDescriptor
result
=
endpoint
.
configurationProperties
();
.
configurationProperties
();
assertThat
(
result
.
getBeans
().
keySet
())
assertThat
(
result
.
getBeans
().
keySet
())
.
containsExactlyInAnyOrder
(
"
endpoint"
,
"
otherProperties"
);
.
containsExactlyInAnyOrder
(
"otherProperties"
);
assertThat
((
result
.
getParent
().
getBeans
().
keySet
()))
assertThat
((
result
.
getParent
().
getBeans
().
keySet
()))
.
containsExactly
(
"testProperties"
);
.
containsExactly
(
"testProperties"
);
});
});
...
...
spring-boot-actuator/src/test/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpointTests.java
View file @
bb622292
...
@@ -100,25 +100,6 @@ public class ConfigurationPropertiesReportEndpointTests {
...
@@ -100,25 +100,6 @@ public class ConfigurationPropertiesReportEndpointTests {
});
});
}
}
@Test
public
void
keysToSanitizeCanBeConfiguredViaTheEnvironment
()
throws
Exception
{
ApplicationContextRunner
tester
=
new
ApplicationContextRunner
()
.
withPropertyValues
(
"endpoints.configprops.keys-to-sanitize: .*pass.*, property"
)
.
withUserConfiguration
(
Config
.
class
);
tester
.
run
((
context
)
->
{
ConfigurationPropertiesReportEndpoint
endpoint
=
context
.
getBean
(
ConfigurationPropertiesReportEndpoint
.
class
);
ConfigurationPropertiesDescriptor
properties
=
endpoint
.
configurationProperties
();
Map
<
String
,
Object
>
nestedProperties
=
properties
.
getBeans
()
.
get
(
"testProperties"
).
getProperties
();
assertThat
(
nestedProperties
).
isNotNull
();
assertThat
(
nestedProperties
.
get
(
"dbPassword"
)).
isEqualTo
(
"******"
);
assertThat
(
nestedProperties
.
get
(
"myTestProperty"
)).
isEqualTo
(
"******"
);
});
}
@Test
@Test
@SuppressWarnings
(
"unchecked"
)
@SuppressWarnings
(
"unchecked"
)
public
void
keySanitizationWithCustomPatternUsingCompositeKeys
()
throws
Exception
{
public
void
keySanitizationWithCustomPatternUsingCompositeKeys
()
throws
Exception
{
...
...
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