Polish "Allow NestedConfigurationProperty on getters"

See gh-38844
This commit is contained in:
Stéphane Nicoll
2024-07-15 09:24:42 +02:00
parent 6c8987e0d8
commit 4415b4ab1c
9 changed files with 161 additions and 11 deletions

View File

@@ -22,6 +22,7 @@ import org.springframework.boot.configurationprocessor.metadata.ConfigurationMet
import org.springframework.boot.configurationprocessor.metadata.ItemMetadata;
import org.springframework.boot.configurationprocessor.metadata.Metadata;
import org.springframework.boot.configurationsample.deprecation.Dbcp2Configuration;
import org.springframework.boot.configurationsample.method.NestedPropertiesMethod;
import org.springframework.boot.configurationsample.record.ExampleRecord;
import org.springframework.boot.configurationsample.record.NestedPropertiesRecord;
import org.springframework.boot.configurationsample.record.RecordWithGetter;
@@ -337,8 +338,9 @@ class ConfigurationMetadataAnnotationProcessorTests extends AbstractMetadataGene
assertThat(metadata).has(Metadata.withProperty("config.third.value"));
assertThat(metadata).has(Metadata.withProperty("config.fourth"));
assertThat(metadata).isNotEqualTo(Metadata.withGroup("config.fourth"));
assertThat(metadata)
.has(Metadata.withGroup("config.fifth").ofType(DeprecatedSimplePojo.class).fromSource(InnerClassProperties.class));
assertThat(metadata).has(Metadata.withGroup("config.fifth")
.ofType(DeprecatedSimplePojo.class)
.fromSource(InnerClassProperties.class));
assertThat(metadata).has(Metadata.withProperty("config.fifth.value").withDeprecation());
}
@@ -362,6 +364,15 @@ class ConfigurationMetadataAnnotationProcessorTests extends AbstractMetadataGene
assertThat(metadata).isNotEqualTo(Metadata.withProperty("specific.foo"));
}
@Test
void nestedClassMethod() {
ConfigurationMetadata metadata = compile(NestedPropertiesMethod.class);
assertThat(metadata).has(Metadata.withGroup("method-nested.nested"));
assertThat(metadata).has(Metadata.withProperty("method-nested.nested.my-nested-property"));
assertThat(metadata).has(Metadata.withGroup("method-nested.inner.nested"));
assertThat(metadata).has(Metadata.withProperty("method-nested.inner.nested.my-nested-property"));
}
@Test
void nestedClassChildProperties() {
ConfigurationMetadata metadata = compile(ClassWithNestedProperties.class);

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2024 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.

View File

@@ -0,0 +1,69 @@
/*
* Copyright 2012-2024 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
*
* https://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.configurationsample.method;
import org.springframework.boot.configurationsample.ConfigurationProperties;
import org.springframework.boot.configurationsample.NestedConfigurationProperty;
@ConfigurationProperties("method-nested")
public class NestedPropertiesMethod {
private String myProperty;
private final NestedProperty nested = new NestedProperty();
private final Inner inner = new Inner();
public String getMyProperty() {
return this.myProperty;
}
public void setMyProperty(String myProperty) {
this.myProperty = myProperty;
}
@NestedConfigurationProperty
public NestedProperty getNested() {
return this.nested;
}
public Inner getInner() {
return this.inner;
}
public static class Inner {
private String myInnerProperty;
private final NestedProperty nested = new NestedProperty();
public String getMyInnerProperty() {
return this.myInnerProperty;
}
public void setMyInnerProperty(String myInnerProperty) {
this.myInnerProperty = myInnerProperty;
}
@NestedConfigurationProperty
public NestedProperty getNested() {
return this.nested;
}
}
}

View File

@@ -0,0 +1,31 @@
/*
* Copyright 2012-2024 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
*
* https://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.configurationsample.method;
public class NestedProperty {
private String myNestedProperty;
public String getMyNestedProperty() {
return this.myNestedProperty;
}
public void setMyNestedProperty(String myNestedProperty) {
this.myNestedProperty = myNestedProperty;
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2024 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.

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2024 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.