-
Notifications
You must be signed in to change notification settings - Fork 0
/
BeanLocator.java
148 lines (132 loc) · 3.6 KB
/
BeanLocator.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/*******************************************************************************
* Stefan Meyer, 2012
*
* 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
*
* http://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.atemsource.atem.api;
import java.util.Collection;
import java.util.Set;
import org.atemsource.atem.api.BeanReferenceData.BeanReference;
import org.atemsource.atem.api.infrastructure.bean.Bean;
// TODO: Auto-generated Javadoc
/**
*
* The BeanLocator is an application singleton that provides access to the
* dependency injection container components/beans.
*
* @author Stefan Meyer
*
*/
public abstract class BeanLocator {
/**
* get access to di components from a plain pojo.
*
* @return the singleton instance
*/
public static BeanLocator getInstance() {
return INSTANCE;
}
private static BeanLocator INSTANCE;
protected static void setInstance(BeanLocator beanLocator) {
INSTANCE=beanLocator;
}
/**
* get a bean reference by the bean reference definition.
*
* @param beanReferenceData
* the bean reference data
* @return a bean reference
*/
public abstract Bean<?> getBean(BeanReferenceData beanReferenceData);
/**
* get a bean reference by the bean's class.
*
* @param <T>
* the generic type
* @param beanType
* the bean type
* @return a bean reference
*/
public abstract <T> Bean<T> getBean(Class<T> beanType);
/**
* get a bean reference by the bean's name.
*
* @param beanName
* the bean name
* @return a bean reference
*/
public abstract Bean<?> getBean(String beanName);
/**
* get a bean' name.
*
* @param object
* the object
* @return the beans's name
*/
public abstract String getBeanName(Object object);
/**
* get all bean references for a certain bean class.
*
* @param <T>
* the generic type
* @param beanType
* the bean type
* @return the beans' references
*/
public abstract <T> Set<Bean<T>> getBeans(Class<T> beanType);
/**
* get the bean by the reference data.
*
* @param beanReferenceData
* the bean reference data
* @return the bean's instance
*/
public abstract Object getInstance(BeanReferenceData beanReferenceData);
/**
* get the bean by the bean's class.
*
* @param <T>
* the generic type
* @param beanType
* the bean type
* @return the bean's instance
*/
public abstract <T> T getInstance(Class<T> beanType);
/**
* get the bean by the bean's name.
*
* @param <T>
* the generic type
* @param beanName
* the bean name
* @return the bean's instance
*/
public abstract <T> T getInstance(String beanName);
/**
* get all beans of a certain class.
*
* @param <T>
* the generic type
* @param beanType
* the bean type
* @return the bean instances
*/
public abstract <T> Collection<T> getInstances(Class<T> beanType);
/**
* remove the bean from the container.
*
* @param bean
* the bean
*/
public abstract void remove(Bean<?> bean);
}