// Path: options/src/main/java/org/openengsb/labs/paxexam/karaf/options/LogLevelOption.java
// public static enum LogLevel {
//     TRACE, DEBUG, INFO, WARN, ERROR
// }


import org.ops4j.pax.exam.options.extra.VMOption;
import static java.lang.String.format;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import org.openengsb.labs.paxexam.karaf.options.LogLevelOption.LogLevel;
import org.ops4j.pax.exam.Option;
    public static Option[] editConfigurationFileExtend(final String configurationFilePath, File source,
            String... keysToUseFromSource) {
        return createOptionListFromFile(source, new FileOptionFactory() {
            @Override
            public Option createOption(String key, String value) {
                return new KarafDistributionConfigurationFileExtendOption(configurationFilePath, key, value);
            }
        }, keysToUseFromSource);
    }

    /**
     * This option allows to simply replace an entire configuration file with your own one. Simply point to the
     * configuration file you would like to have replaced and add the source file which should replace it.
     */
    public static Option replaceConfigurationFile(String configurationFilePath, File source) {
        return new KarafDistributionConfigurationFileReplacementOption(configurationFilePath, source);
    }

    /**
     * Activates debugging on the embedded Karaf container using the standard 5005 port and holds the vm till you've
     * attached the debugger.
     */
    public static Option debugConfiguration() {
        return debugConfiguration("5005", true);
    }

    /**
     * A very simple and convinient method to set a specific log level without the need of configure the specific option
     * itself.
     */
// Path: options/src/main/java/org/openengsb/labs/paxexam/karaf/options/LogLevelOption.java
// public static enum LogLevel {
//     TRACE, DEBUG, INFO, WARN, ERROR
// }


// Path: options/src/main/java/org/openengsb/labs/paxexam/karaf/options/KarafDistributionOption.java
import org.ops4j.pax.exam.options.extra.VMOption;
import static java.lang.String.format;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import org.openengsb.labs.paxexam.karaf.options.LogLevelOption.LogLevel;
import org.ops4j.pax.exam.Option;

    public static Option[] editConfigurationFileExtend(final String configurationFilePath, File source,
            String... keysToUseFromSource) {
        return createOptionListFromFile(source, new FileOptionFactory() {
            @Override
            public Option createOption(String key, String value) {
                return new KarafDistributionConfigurationFileExtendOption(configurationFilePath, key, value);
            }
        }, keysToUseFromSource);
    }

    /**
     * This option allows to simply replace an entire configuration file with your own one. Simply point to the
     * configuration file you would like to have replaced and add the source file which should replace it.
     */
    public static Option replaceConfigurationFile(String configurationFilePath, File source) {
        return new KarafDistributionConfigurationFileReplacementOption(configurationFilePath, source);
    }

    /**
     * Activates debugging on the embedded Karaf container using the standard 5005 port and holds the vm till you've
     * attached the debugger.
     */
    public static Option debugConfiguration() {
        return debugConfiguration("5005", true);
    }

    /**
     * A very simple and convinient method to set a specific log level without the need of configure the specific option
     * itself.
     */
    public static Option logLevel(LogLevel logLevel) {