Skip to content

Commit afb6788

Browse files
Restore deprecated class required by Spring Cloud
See gh-19860
1 parent cbacab5 commit afb6788

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
/*
2+
* Copyright 2012-2020 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.springframework.boot.context.properties;
18+
19+
import java.lang.annotation.Annotation;
20+
import java.lang.reflect.Method;
21+
import java.util.HashMap;
22+
import java.util.Map;
23+
24+
import org.springframework.beans.BeansException;
25+
import org.springframework.beans.factory.config.BeanDefinition;
26+
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
27+
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
28+
import org.springframework.beans.factory.support.GenericBeanDefinition;
29+
import org.springframework.beans.factory.support.RootBeanDefinition;
30+
import org.springframework.context.ApplicationContext;
31+
import org.springframework.context.ApplicationContextAware;
32+
import org.springframework.context.ConfigurableApplicationContext;
33+
import org.springframework.core.annotation.AnnotationUtils;
34+
35+
/**
36+
* Utility class to memorize {@code @Bean} definition metadata during initialization of
37+
* the bean factory.
38+
*
39+
* @author Dave Syer
40+
* @since 1.1.0
41+
* @deprecated since 2.2.0 in favor of {@link ConfigurationPropertiesBean}
42+
*/
43+
@Deprecated
44+
public class ConfigurationBeanFactoryMetadata implements ApplicationContextAware {
45+
46+
/**
47+
* The bean name that this class is registered with.
48+
*/
49+
public static final String BEAN_NAME = ConfigurationBeanFactoryMetadata.class.getName();
50+
51+
private ConfigurableApplicationContext applicationContext;
52+
53+
public <A extends Annotation> Map<String, Object> getBeansWithFactoryAnnotation(Class<A> type) {
54+
Map<String, Object> result = new HashMap<>();
55+
for (String name : this.applicationContext.getBeanFactory().getBeanDefinitionNames()) {
56+
if (findFactoryAnnotation(name, type) != null) {
57+
result.put(name, this.applicationContext.getBean(name));
58+
}
59+
}
60+
return result;
61+
}
62+
63+
public <A extends Annotation> A findFactoryAnnotation(String beanName, Class<A> type) {
64+
Method method = findFactoryMethod(beanName);
65+
return (method != null) ? AnnotationUtils.findAnnotation(method, type) : null;
66+
}
67+
68+
public Method findFactoryMethod(String beanName) {
69+
ConfigurableListableBeanFactory beanFactory = this.applicationContext.getBeanFactory();
70+
if (beanFactory.containsBeanDefinition(beanName)) {
71+
BeanDefinition beanDefinition = beanFactory.getMergedBeanDefinition(beanName);
72+
if (beanDefinition instanceof RootBeanDefinition) {
73+
return ((RootBeanDefinition) beanDefinition).getResolvedFactoryMethod();
74+
}
75+
}
76+
return null;
77+
}
78+
79+
@Override
80+
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
81+
this.applicationContext = (ConfigurableApplicationContext) applicationContext;
82+
}
83+
84+
static void register(BeanDefinitionRegistry registry) {
85+
if (!registry.containsBeanDefinition(BEAN_NAME)) {
86+
GenericBeanDefinition definition = new GenericBeanDefinition();
87+
definition.setBeanClass(ConfigurationBeanFactoryMetadata.class);
88+
definition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
89+
registry.registerBeanDefinition(ConfigurationBeanFactoryMetadata.BEAN_NAME, definition);
90+
}
91+
}
92+
93+
}

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/EnableConfigurationPropertiesRegistrar.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ static void registerInfrastructureBeans(BeanDefinitionRegistry registry) {
5151
ConfigurationPropertiesBindingPostProcessor.register(registry);
5252
BoundConfigurationProperties.register(registry);
5353
ConfigurationPropertiesBeanDefinitionValidator.register(registry);
54+
ConfigurationBeanFactoryMetadata.register(registry);
5455
}
5556

5657
}

0 commit comments

Comments
 (0)