EnvironmentImpl.java

package io.github.jonloucks.variants.impl;

import io.github.jonloucks.variants.api.Environment;
import io.github.jonloucks.variants.api.Variant;
import io.github.jonloucks.variants.api.VariantSource;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import static io.github.jonloucks.contracts.api.Checks.configCheck;

/**
 * Responsibility: Environment implementation
 */
final class EnvironmentImpl implements Environment {

    @Override
    public <T> Optional<T> findVariance(Variant<T> variant) {
        return new FindVariantImpl<>(sources, variant).findVariance();
    }
    
    EnvironmentImpl(Environment.Config config) {
        sources.addAll(configCheck(config).getSources());
    }
    
    private final List<VariantSource> sources = new ArrayList<>();
}