/* * Copyright (c) 2006 Rogério Liesenfeld * This file is subject to the terms of the MIT license (see LICENSE.txt). */ package mockit.internal.injection; import java.lang.reflect.*; import java.util.*; import javax.annotation.*; import static mockit.internal.util.Utilities.getClassType; final class MultiValuedProvider extends InjectionPointProvider { @Nonnull private final List<InjectionPointProvider> individualProviders; MultiValuedProvider(@Nonnull Type elementType) { super(elementType, ""); individualProviders = new ArrayList<InjectionPointProvider>(); } void addInjectable(@Nonnull InjectionPointProvider provider) { individualProviders.add(provider); } @Nonnull @Override public Class<?> getClassOfDeclaredType() { return getClassType(declaredType); } @Nullable @Override public Object getValue(@Nullable Object owner) { List<Object> values = new ArrayList<Object>(individualProviders.size()); for (InjectionPointProvider provider : individualProviders) { Object value = provider.getValue(owner); values.add(value); } return values; } }