Lookup metadata bean from context instead of injecting
That way, if there is one, it will always be the right one (otherwise you might be processing teh parent context with metadata from the child). Fixes gh-1982
This commit is contained in:
@@ -21,7 +21,6 @@ import java.util.Map;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.boot.context.properties.ConfigurationBeanFactoryMetaData;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.boot.test.EnvironmentTestUtils;
|
||||
@@ -86,11 +85,8 @@ public class ConfigurationPropertiesReportEndpointMethodAnnotationsTests {
|
||||
public static class Config {
|
||||
|
||||
@Bean
|
||||
public ConfigurationPropertiesReportEndpoint endpoint(
|
||||
ConfigurationBeanFactoryMetaData beanFactoryMetaData) {
|
||||
ConfigurationPropertiesReportEndpoint endpoint = new ConfigurationPropertiesReportEndpoint();
|
||||
endpoint.setConfigurationBeanFactoryMetaData(beanFactoryMetaData);
|
||||
return endpoint;
|
||||
public ConfigurationPropertiesReportEndpoint endpoint() {
|
||||
return new ConfigurationPropertiesReportEndpoint();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -112,11 +108,8 @@ public class ConfigurationPropertiesReportEndpointMethodAnnotationsTests {
|
||||
public static class Other {
|
||||
|
||||
@Bean
|
||||
public ConfigurationPropertiesReportEndpoint endpoint(
|
||||
ConfigurationBeanFactoryMetaData beanFactoryMetaData) {
|
||||
ConfigurationPropertiesReportEndpoint endpoint = new ConfigurationPropertiesReportEndpoint();
|
||||
endpoint.setConfigurationBeanFactoryMetaData(beanFactoryMetaData);
|
||||
return endpoint;
|
||||
public ConfigurationPropertiesReportEndpoint endpoint() {
|
||||
return new ConfigurationPropertiesReportEndpoint();
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -20,6 +20,8 @@ import java.util.Map;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.context.properties.ConfigurationBeanFactoryMetaData;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
@@ -61,6 +63,23 @@ public class ConfigurationPropertiesReportEndpointParentTests {
|
||||
// System.err.println(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInvokeWithFactory() throws Exception {
|
||||
AnnotationConfigApplicationContext parent = new AnnotationConfigApplicationContext();
|
||||
parent.register(Parent.class);
|
||||
parent.refresh();
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
this.context.setParent(parent);
|
||||
this.context.register(Factory.class);
|
||||
this.context.refresh();
|
||||
ConfigurationPropertiesReportEndpoint endpoint = this.context
|
||||
.getBean(ConfigurationPropertiesReportEndpoint.class);
|
||||
Map<String, Object> result = endpoint.invoke();
|
||||
assertTrue(result.containsKey("parent"));
|
||||
assertEquals(3, result.size()); // the endpoint, the test props and the parent
|
||||
// System.err.println(result);
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@EnableConfigurationProperties
|
||||
public static class Parent {
|
||||
@@ -80,12 +99,35 @@ public class ConfigurationPropertiesReportEndpointParentTests {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public TestProperties testProperties() {
|
||||
public TestProperties someProperties() {
|
||||
return new TestProperties();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@EnableConfigurationProperties
|
||||
public static class Factory {
|
||||
|
||||
@Autowired
|
||||
private ConfigurationBeanFactoryMetaData beanFactoryMetaData;
|
||||
|
||||
@Bean
|
||||
public ConfigurationPropertiesReportEndpoint endpoint() {
|
||||
return new ConfigurationPropertiesReportEndpoint();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties(prefix = "other")
|
||||
public OtherProperties otherProperties() {
|
||||
return new OtherProperties();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class OtherProperties {
|
||||
}
|
||||
|
||||
@ConfigurationProperties(prefix = "test")
|
||||
public static class TestProperties {
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ import javax.sql.DataSource;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.boot.context.properties.ConfigurationBeanFactoryMetaData;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
@@ -78,11 +77,8 @@ public class ConfigurationPropertiesReportEndpointProxyTests {
|
||||
public static class Config {
|
||||
|
||||
@Bean
|
||||
public ConfigurationPropertiesReportEndpoint endpoint(
|
||||
ConfigurationBeanFactoryMetaData beanFactoryMetaData) {
|
||||
ConfigurationPropertiesReportEndpoint endpoint = new ConfigurationPropertiesReportEndpoint();
|
||||
endpoint.setConfigurationBeanFactoryMetaData(beanFactoryMetaData);
|
||||
return endpoint;
|
||||
public ConfigurationPropertiesReportEndpoint endpoint() {
|
||||
return new ConfigurationPropertiesReportEndpoint();
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -23,7 +23,6 @@ import java.util.Map;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.boot.context.properties.ConfigurationBeanFactoryMetaData;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.boot.test.EnvironmentTestUtils;
|
||||
@@ -238,10 +237,8 @@ public class ConfigurationPropertiesReportEndpointSerializationTests {
|
||||
public static class Base {
|
||||
|
||||
@Bean
|
||||
public ConfigurationPropertiesReportEndpoint endpoint(
|
||||
ConfigurationBeanFactoryMetaData beanFactoryMetaData) {
|
||||
public ConfigurationPropertiesReportEndpoint endpoint() {
|
||||
ConfigurationPropertiesReportEndpoint endpoint = new ConfigurationPropertiesReportEndpoint();
|
||||
endpoint.setConfigurationBeanFactoryMetaData(beanFactoryMetaData);
|
||||
endpoint.setMetadataLocations("classpath*:/test-metadata.json");
|
||||
return endpoint;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user