1
2
3
4
5 package mockit.internal.injection;
6
7 import static mockit.internal.util.Utilities.getClassType;
8
9 import edu.umd.cs.findbugs.annotations.NonNull;
10 import edu.umd.cs.findbugs.annotations.Nullable;
11
12 import java.lang.reflect.Type;
13 import java.util.ArrayList;
14 import java.util.List;
15
16 final class MultiValuedProvider extends InjectionProvider {
17 @NonNull
18 private final List<InjectionProvider> individualProviders;
19
20 MultiValuedProvider(@NonNull Type elementType) {
21 super(elementType, "");
22 individualProviders = new ArrayList<>();
23 }
24
25 void addInjectable(@NonNull InjectionProvider provider) {
26 individualProviders.add(provider);
27 }
28
29 @NonNull
30 @Override
31 public Class<?> getClassOfDeclaredType() {
32 return getClassType(declaredType);
33 }
34
35 @NonNull
36 @Override
37 public Object getValue(@Nullable Object owner) {
38 List<Object> values = new ArrayList<>(individualProviders.size());
39
40 for (InjectionProvider provider : individualProviders) {
41 Object value = provider.getValue(owner);
42 values.add(value);
43 }
44
45 return values;
46 }
47 }