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

ch.abertschi.sct.arquillian.ExtensionConfiguration Maven / Gradle / Ivy

package ch.abertschi.sct.arquillian;

import ch.abertschi.sct.arquillian.annotation.RecordConfiguration;
import ch.abertschi.sct.arquillian.annotation.ReplayConfiguration;
import com.github.underscore.$;
import com.thoughtworks.xstream.XStream;

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

/**
 * Created by abertschi on 01/06/16.
 */
public class ExtensionConfiguration
{
    private List recordConfigurations = new ArrayList<>();

    private List replayConfigurations = new ArrayList<>();

    public List getAllRecordConfigurations()
    {
        List recordings = new ArrayList<>();
        for (RecordTestConfiguration testConfig : recordConfigurations)
        {
            if (testConfig.getClassConfiguration() != null)
            {
                recordings.add(testConfig.getClassConfiguration());
            }
            if (!$.isEmpty(testConfig.getMethodConfigurations()))
            {
                recordings.addAll(testConfig.getMethodConfigurations());
            }
        }
        return recordings;
    }

    public List getAllReplayingConfigurations()
    {
        List replayings = new ArrayList<>();
        for (ReplayTestConfiguration testConfig : replayConfigurations)
        {
            if (testConfig.getClassConfiguration() != null)
            {
                replayings.add(testConfig.getClassConfiguration());
            }
            if (!$.isEmpty(testConfig.getMethodConfigurations()))
            {
                replayings.addAll(testConfig.getMethodConfigurations());
            }
        }
        return replayings;
    }

    public ReplayTestConfiguration getReplayTestConfiguration(Class testClass)
    {
        List config = $.filter(replayConfigurations, replayConfig -> replayConfig.isTestClass(testClass));
        return $.isEmpty(config) ? null : config.get(0);
    }

    public RecordTestConfiguration getRecordTestConfiguration(Class testClass)
    {
        List config = $.filter(recordConfigurations, recordConfig -> recordConfig.isTestClass(testClass));
        return $.isEmpty(config) ? null : config.get(0);
    }

    public ReplayConfiguration getReplayConfiguration(Class testClass, Method testMethod)
    {
        ReplayConfiguration result = null;

        ReplayTestConfiguration testConfig = getReplayTestConfiguration(testClass);
        if (testConfig != null)
        {
            ReplayConfiguration methodConfig = testConfig.getMethodConfiguration(testClass, testMethod);
            if (methodConfig != null)
            {
                result = methodConfig;
            }
            else
            {
                result = testConfig.getClassConfiguration();
            }
        }
        return result;
    }

    public RecordConfiguration getRecordConfiguration(Class testClass, Method testMethod)
    {
        RecordConfiguration result = null;

        RecordTestConfiguration testConfig = getRecordTestConfiguration(testClass);
        if (testConfig != null)
        {
            RecordConfiguration methodConfig = testConfig.getMethodConfiguration(testClass, testMethod);
            if (methodConfig != null)
            {
                result = methodConfig;
            }
            else
            {
                result = testConfig.getClassConfiguration();
            }
        }
        return result;
    }

    public String toXml()
    {
        return new XStream().toXML(this);
    }

    public static ExtensionConfiguration fromXml(String xml)
    {
        return (ExtensionConfiguration) new XStream().fromXML(xml);
    }

    public List getRecordConfigurations()
    {
        return recordConfigurations;
    }

    public ExtensionConfiguration setRecordConfigurations(List recordConfigurations)
    {
        this.recordConfigurations = recordConfigurations;
        return this;
    }

    public List getReplayConfigurations()
    {
        return replayConfigurations;
    }

    public ExtensionConfiguration setReplayConfigurations(List replayConfigurations)
    {
        this.replayConfigurations = replayConfigurations;
        return this;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy