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

com.tngtech.jgiven.config.ConfigurationUtil Maven / Gradle / Ivy

There is a newer version: 2.0.2
Show newest version
package com.tngtech.jgiven.config;

import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.tngtech.jgiven.annotation.JGivenConfiguration;
import com.tngtech.jgiven.impl.util.ReflectionUtil;
import java.util.Optional;
import java.util.concurrent.ExecutionException;


public class ConfigurationUtil {

    private static final LoadingCache, AbstractJGivenConfiguration> configurations =
        CacheBuilder.newBuilder().build(
            new CacheLoader, AbstractJGivenConfiguration>() {
                @Override
                public AbstractJGivenConfiguration load(Class key) {
                    AbstractJGivenConfiguration result = (AbstractJGivenConfiguration) ReflectionUtil.newInstance(key);
                    result.configure();
                    return result;
                }
            });

    @SuppressWarnings({"unchecked"})
    public static  AbstractJGivenConfiguration getConfiguration(
        Class testClass) {
        Class configuration = Optional.ofNullable(testClass)
            .map(content -> content.getAnnotation(JGivenConfiguration.class))
            .map(content -> (Class) content.value())
            .orElse((Class) DefaultConfiguration.class);

        try {
            return configurations.get(configuration);
        } catch (ExecutionException e) {
            throw new RuntimeException(e.getCause());
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy