Previously, serialization of a @ConfigurationProperties bean to JSON
would fail if:
- A property on the bean returned the bean (the bean was
self-referential)
- An exception was thrown when attempting to retrieve a property's
value.
This commit makes the serialization more defensive by skipping any
property that is affected by either of the problems described above.
Debug logging has been added to aid diagnosis of missing properties.
Closes gh-10846
@ -100,8 +101,8 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
@@ -100,8 +101,8 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
@ -114,8 +115,30 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
@@ -114,8 +115,30 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
@ -149,7 +172,6 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
@@ -149,7 +172,6 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
@ -190,7 +212,6 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
@@ -190,7 +212,6 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
@ -223,6 +244,20 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
@@ -223,6 +244,20 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
@ -248,24 +283,12 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
@@ -248,24 +283,12 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
@Configuration
@Import(Base.class)
publicstaticclassCycleConfig{
publicstaticclassSelfReferentialConfig{
@Bean
@ConfigurationProperties(prefix="foo")
publicCyclefoo(){
returnnewCycle();
}
}
@Configuration
@Import(Base.class)
publicstaticclassMetadataCycleConfig{
@Bean
@ConfigurationProperties(prefix="bar")
publicCyclefoo(){
returnnewCycle();
publicSelfReferentialfoo(){
returnnewSelfReferential();
}
}
@ -373,11 +396,11 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
@@ -373,11 +396,11 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
}
publicstaticclassCycleextendsFoo{
publicstaticclassSelfReferentialextendsFoo{
privateFooself;
publicCycle(){
publicSelfReferential(){
this.self=this;
}
@ -449,4 +472,57 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
@@ -449,4 +472,57 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {