// Path: src/main/java/pl/domzal/junit/docker/rule/ex/InvalidVolumeFrom.java
// public class InvalidVolumeFrom extends IllegalStateException {
// 
//     public InvalidVolumeFrom(String message) {
//         super(message);
//     }
// 
// }
// 
// Path: src/main/java/pl/domzal/junit/docker/rule/wait/StartCondition.java
// public interface StartCondition {
//     /**
//      * Create {@link StartConditionCheck} instances for current {@link DockerRule}.
//      */
//     StartConditionCheck build(DockerRule currentRule);
// }


import java.io.File;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.spotify.docker.client.messages.HostConfig;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.junit.rules.RuleChain;
import com.spotify.docker.client.messages.PortBinding;
import pl.domzal.junit.docker.rule.ex.InvalidVolumeFrom;
import pl.domzal.junit.docker.rule.wait.StartCondition;
package pl.domzal.junit.docker.rule;





public class DockerRuleBuilder {

    static final int WAIT_FOR_DEFAULT_SECONDS = 30;

    private String imageName;
    private String name;
    private List<String> binds = new ArrayList<>();
    private List<String> env = new ArrayList<>();
    private List<String> staticLinks = new ArrayList<>();
    private List<Pair<DockerRule,String>> dynamicLinks = new ArrayList<>();
    private Map<String,String> labels = new HashMap<>();
    private List<HostConfig.Ulimit> ulimits = new ArrayList<>();
    private ExposePortBindingBuilder exposeBuilder = ExposePortBindingBuilder.builder();
    private boolean publishAllPorts = true;
    private String[] entrypoint;
    private String[] cmd;
    private String[] extraHosts;
    private boolean imageAlwaysPull = false;
    private PrintStream stdoutWriter;
    private PrintStream stderrWriter;

// Path: src/main/java/pl/domzal/junit/docker/rule/ex/InvalidVolumeFrom.java
// public class InvalidVolumeFrom extends IllegalStateException {
// 
//     public InvalidVolumeFrom(String message) {
//         super(message);
//     }
// 
// }
// 
// Path: src/main/java/pl/domzal/junit/docker/rule/wait/StartCondition.java
// public interface StartCondition {
//     /**
//      * Create {@link StartConditionCheck} instances for current {@link DockerRule}.
//      */
//     StartConditionCheck build(DockerRule currentRule);
// }


// Path: src/main/java/pl/domzal/junit/docker/rule/DockerRuleBuilder.java
import java.io.File;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.spotify.docker.client.messages.HostConfig;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.junit.rules.RuleChain;
import com.spotify.docker.client.messages.PortBinding;
import pl.domzal.junit.docker.rule.ex.InvalidVolumeFrom;
import pl.domzal.junit.docker.rule.wait.StartCondition;

package pl.domzal.junit.docker.rule;





public class DockerRuleBuilder {

    static final int WAIT_FOR_DEFAULT_SECONDS = 30;

    private String imageName;
    private String name;
    private List<String> binds = new ArrayList<>();
    private List<String> env = new ArrayList<>();
    private List<String> staticLinks = new ArrayList<>();
    private List<Pair<DockerRule,String>> dynamicLinks = new ArrayList<>();
    private Map<String,String> labels = new HashMap<>();
    private List<HostConfig.Ulimit> ulimits = new ArrayList<>();
    private ExposePortBindingBuilder exposeBuilder = ExposePortBindingBuilder.builder();
    private boolean publishAllPorts = true;
    private String[] entrypoint;
    private String[] cmd;
    private String[] extraHosts;
    private boolean imageAlwaysPull = false;
    private PrintStream stdoutWriter;
    private PrintStream stderrWriter;

    private List<StartCondition> waitConditions = new ArrayList<>();