// Path: jetty-bootstrap/src/main/java/org/teknux/jettybootstrap/utils/PropertiesUtil.java
// public class PropertiesUtil {
// 
// 	private PropertiesUtil() {
// 	}
// 
// 	/**
// 	 * @param p Properties
// 	 * @param key String
// 	 * @return the {@link Long} or <code>null</code>
// 	 */
// 	public static Long parseLong(Properties p, String key) {
// 		if (p == null || key == null) {
// 			return null;
// 		}
// 
// 		String value = p.getProperty(key);
// 		if (value == null) {
// 			return null;
// 		}
// 
// 		return Long.parseLong(value);
// 	}
// 
// 	/**
// 	 * @param p Properties
// 	 * @param key Key
// 	 * @return {@link Integer} or <code>null</code>
// 	 */
// 	public static Integer parseInt(Properties p, String key) {
// 		if (p == null || key == null) {
// 			return null;
// 		}
// 
// 		String value = p.getProperty(key);
// 		if (value == null) {
// 			return null;
// 		}
// 
// 		return Integer.parseInt(value);
// 	}
// 
// 	/**
// 	 * @param p Properties
// 	 * @param key String
// 	 * @param separator String
// 	 * @return an array of {@link String} or
// 	 *         <code>null</code>
// 	 */
// 	public static String[] parseArray(Properties p, String key, String separator) {
// 		if (p == null || key == null || separator == null || separator.isEmpty()) {
// 			return null;
// 		}
// 
// 		String value = p.getProperty(key);
// 		if (value == null) {
// 			return null;
// 		}
// 
// 		return value.contains(separator) ? value.split(separator) : new String[] { value };
// 	}
// 
// 	/**
// 	 * @param p Properties
// 	 * @param key String
// 	 * @return {@link Boolean} or <code>null</code>
// 	 */
// 	public static Boolean parseBoolean(Properties p, String key) {
// 		if (p == null || key == null) {
// 			return null;
// 		}
// 
// 		String value = p.getProperty(key);
// 		if (value == null) {
// 			return null;
// 		}
// 
// 		return Boolean.parseBoolean(value);
// 	}
// }


import org.teknux.jettybootstrap.utils.PropertiesUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
     * 
     * @param properties
     *            Properties
     */
    public PropertiesJettyConfiguration(Properties properties) {
        this(properties, false);
    }

    /**
     * First load the given {@link Properties} to map jetty configuration, system properties are applied after. This means system properties have higher priorities that the
     * provided ones.
     * 
     * @param properties
     *            Properties
     * @param ignoreSystemProperties
     *            boolean
     */
    public PropertiesJettyConfiguration(Properties properties, boolean ignoreSystemProperties) {
        if (properties != null) {
            //load given properties first
            loadProperties(properties);
        }

        if (!ignoreSystemProperties) {
            //load system properties
            loadProperties(System.getProperties());
        }
    }

    private void loadProperties(Properties properties) {
// Path: jetty-bootstrap/src/main/java/org/teknux/jettybootstrap/utils/PropertiesUtil.java
// public class PropertiesUtil {
// 
// 	private PropertiesUtil() {
// 	}
// 
// 	/**
// 	 * @param p Properties
// 	 * @param key String
// 	 * @return the {@link Long} or <code>null</code>
// 	 */
// 	public static Long parseLong(Properties p, String key) {
// 		if (p == null || key == null) {
// 			return null;
// 		}
// 
// 		String value = p.getProperty(key);
// 		if (value == null) {
// 			return null;
// 		}
// 
// 		return Long.parseLong(value);
// 	}
// 
// 	/**
// 	 * @param p Properties
// 	 * @param key Key
// 	 * @return {@link Integer} or <code>null</code>
// 	 */
// 	public static Integer parseInt(Properties p, String key) {
// 		if (p == null || key == null) {
// 			return null;
// 		}
// 
// 		String value = p.getProperty(key);
// 		if (value == null) {
// 			return null;
// 		}
// 
// 		return Integer.parseInt(value);
// 	}
// 
// 	/**
// 	 * @param p Properties
// 	 * @param key String
// 	 * @param separator String
// 	 * @return an array of {@link String} or
// 	 *         <code>null</code>
// 	 */
// 	public static String[] parseArray(Properties p, String key, String separator) {
// 		if (p == null || key == null || separator == null || separator.isEmpty()) {
// 			return null;
// 		}
// 
// 		String value = p.getProperty(key);
// 		if (value == null) {
// 			return null;
// 		}
// 
// 		return value.contains(separator) ? value.split(separator) : new String[] { value };
// 	}
// 
// 	/**
// 	 * @param p Properties
// 	 * @param key String
// 	 * @return {@link Boolean} or <code>null</code>
// 	 */
// 	public static Boolean parseBoolean(Properties p, String key) {
// 		if (p == null || key == null) {
// 			return null;
// 		}
// 
// 		String value = p.getProperty(key);
// 		if (value == null) {
// 			return null;
// 		}
// 
// 		return Boolean.parseBoolean(value);
// 	}
// }


// Path: jetty-bootstrap/src/main/java/org/teknux/jettybootstrap/configuration/PropertiesJettyConfiguration.java
import org.teknux.jettybootstrap.utils.PropertiesUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

     * 
     * @param properties
     *            Properties
     */
    public PropertiesJettyConfiguration(Properties properties) {
        this(properties, false);
    }

    /**
     * First load the given {@link Properties} to map jetty configuration, system properties are applied after. This means system properties have higher priorities that the
     * provided ones.
     * 
     * @param properties
     *            Properties
     * @param ignoreSystemProperties
     *            boolean
     */
    public PropertiesJettyConfiguration(Properties properties, boolean ignoreSystemProperties) {
        if (properties != null) {
            //load given properties first
            loadProperties(properties);
        }

        if (!ignoreSystemProperties) {
            //load system properties
            loadProperties(System.getProperties());
        }
    }

    private void loadProperties(Properties properties) {
        Boolean autoJoin = PropertiesUtil.parseBoolean(properties, KEY_AUTO_JOIN_ON_START);