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

com.thoughtworks.webstub.stub.config.Configurations Maven / Gradle / Ivy

There is a newer version: 1.1.0
Show newest version
package com.thoughtworks.webstub.stub.config;

import com.thoughtworks.webstub.config.HttpConfiguration;
import com.thoughtworks.webstub.stub.matcher.RequestPartMatcher;
import com.thoughtworks.webstub.utils.Predicate;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import static org.apache.commons.collections.CollectionUtils.select;

public class Configurations {
    private final List configurations;

    public Configurations() {
        this.configurations = new ArrayList();
    }

    public Configurations(List configurations) {
        this.configurations = new ArrayList(configurations);
    }

    public void add(HttpConfiguration configuration) {
        configurations.add(configuration);
    }

    public Configurations filterBy(final RequestPartMatcher matcher) throws MissingMatchingConfigurationException {
        List filtered = (List) select(configurations, new Predicate() {
            @Override
            public boolean satisfies(HttpConfiguration configuration) {
                try {
                    return matcher.matches(configuration);
                } catch (IOException e) {
                    return false;
                }
            }
        });

        if (filtered.isEmpty())
            throw new MissingMatchingConfigurationException(matcher);

        return new Configurations(filtered);
    }


    public List all() {
        return Collections.unmodifiableList(configurations);
    }

    public HttpConfiguration first() {
        return configurations.get(0);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy