View Javadoc
1   /*
2    * MIT License
3    * Copyright (c) 2006-2025 JMockit developers
4    * See LICENSE file for full license text.
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  }