Browse Source
Update the `ConfigurationMetadataAnnotationProcessor` so that `@Name` annotated parameters generate the correct meta-data. Closes gh-22492pull/22532/head
9 changed files with 168 additions and 10 deletions
@ -0,0 +1,41 @@
@@ -0,0 +1,41 @@
|
||||
/* |
||||
* Copyright 2012-2020 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.configurationprocessor; |
||||
|
||||
import org.junit.jupiter.api.Test; |
||||
|
||||
import org.springframework.boot.configurationprocessor.metadata.ConfigurationMetadata; |
||||
import org.springframework.boot.configurationprocessor.metadata.Metadata; |
||||
import org.springframework.boot.configurationsample.immutable.ImmutableNameAnnotationProperties; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
|
||||
/** |
||||
* Metadata generation tests for immutable properties using {@code @Name}. |
||||
* |
||||
* @author Phillip Webb |
||||
*/ |
||||
public class ImmutableNameAnnotationPropertiesTests extends AbstractMetadataGenerationTests { |
||||
|
||||
@Test |
||||
void immutableNameAnnotationProperties() { |
||||
ConfigurationMetadata metadata = compile(ImmutableNameAnnotationProperties.class); |
||||
assertThat(metadata).has(Metadata.withProperty("named.import", String.class) |
||||
.fromSource(ImmutableNameAnnotationProperties.class)); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
|
||||
/* |
||||
* Copyright 2012-2020 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; |
||||
|
||||
import java.lang.annotation.Documented; |
||||
import java.lang.annotation.ElementType; |
||||
import java.lang.annotation.Retention; |
||||
import java.lang.annotation.RetentionPolicy; |
||||
import java.lang.annotation.Target; |
||||
|
||||
/** |
||||
* Alternative to Spring Boot's {@code @Name} for testing (removes the need for a |
||||
* dependency on the real annotation). |
||||
* |
||||
* @author Phillip Webb |
||||
*/ |
||||
@Target(ElementType.PARAMETER) |
||||
@Retention(RetentionPolicy.RUNTIME) |
||||
@Documented |
||||
public @interface Name { |
||||
|
||||
String value(); |
||||
|
||||
} |
||||
@ -0,0 +1,42 @@
@@ -0,0 +1,42 @@
|
||||
/* |
||||
* Copyright 2012-2020 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.immutable; |
||||
|
||||
import org.springframework.boot.configurationsample.ConfigurationProperties; |
||||
import org.springframework.boot.configurationsample.ConstructorBinding; |
||||
import org.springframework.boot.configurationsample.Name; |
||||
|
||||
/** |
||||
* Immutable properties making use of {@code @Name}. |
||||
* |
||||
* @author Phillip Webb |
||||
*/ |
||||
@ConfigurationProperties("named") |
||||
@ConstructorBinding |
||||
public class ImmutableNameAnnotationProperties { |
||||
|
||||
private String imports; |
||||
|
||||
public ImmutableNameAnnotationProperties(@Name("import") String imports) { |
||||
this.imports = imports; |
||||
} |
||||
|
||||
public String getImports() { |
||||
return this.imports; |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue