1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.openehealth.ipf.commons.spring.core.config;
17
18 import java.util.Map;
19 import java.util.Objects;
20
21 import org.openehealth.ipf.commons.core.config.ContextFacade;
22 import org.openehealth.ipf.commons.core.config.Registry;
23 import org.springframework.beans.BeansException;
24 import org.springframework.beans.factory.BeanFactory;
25 import org.springframework.beans.factory.BeanFactoryAware;
26 import org.springframework.beans.factory.BeanFactoryUtils;
27 import org.springframework.beans.factory.ListableBeanFactory;
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 public class SpringRegistry implements Registry, BeanFactoryAware {
47
48 private ListableBeanFactory beanFactory;
49
50 public SpringRegistry() {
51 }
52
53 @Override
54 public Object bean(String name) {
55 return beanFactory.getBean(name);
56 }
57
58 @Override
59 public <T> T bean(Class<T> requiredType) {
60 return beanFactory.getBean(requiredType);
61 }
62
63 @Override
64 public <T> Map<String, T> beans(Class<T> requiredType) {
65 return BeanFactoryUtils.beansOfTypeIncludingAncestors(beanFactory,
66 ProxyUtils.isJDKDynamicProxy(requiredType) ?
67 ProxyUtils.getFirstProxiedInterface(requiredType) :
68 requiredType);
69 }
70
71
72
73
74
75
76 @Override
77 public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
78 this.beanFactory = (ListableBeanFactory) beanFactory;
79 ContextFacade.setRegistry(this);
80 }
81
82 @Override
83 public boolean equals(Object o) {
84 if (this == o) return true;
85 if (!(o instanceof SpringRegistry)) return false;
86 SpringRegistry that = (SpringRegistry) o;
87 return Objects.equals(beanFactory, that.beanFactory);
88 }
89
90 @Override
91 public int hashCode() {
92 return Objects.hash(beanFactory);
93 }
94 }