All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mockit.internal.injection.MultiValuedProvider Maven / Gradle / Ivy

Go to download

JMockit is a Java toolkit for automated developer testing. It contains APIs for the creation of the objects to be tested, for mocking dependencies, and for faking external APIs; JUnit (4 & 5) and TestNG test runners are supported. It also contains an advanced code coverage tool.

The newest version!
/*
 * Copyright (c) 2006 JMockit developers
 * This file is subject to the terms of the MIT license (see LICENSE.txt).
 */
package mockit.internal.injection;

import static mockit.internal.util.Utilities.getClassType;

import edu.umd.cs.findbugs.annotations.NonNull;
import edu.umd.cs.findbugs.annotations.Nullable;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

final class MultiValuedProvider extends InjectionProvider {
    @NonNull
    private final List individualProviders;

    MultiValuedProvider(@NonNull Type elementType) {
        super(elementType, "");
        individualProviders = new ArrayList<>();
    }

    void addInjectable(@NonNull InjectionProvider provider) {
        individualProviders.add(provider);
    }

    @NonNull
    @Override
    public Class getClassOfDeclaredType() {
        return getClassType(declaredType);
    }

    @NonNull
    @Override
    public Object getValue(@Nullable Object owner) {
        List values = new ArrayList<>(individualProviders.size());

        for (InjectionProvider provider : individualProviders) {
            Object value = provider.getValue(owner);
            values.add(value);
        }

        return values;
    }
}