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