package org.arquillian.cube.impl.util; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Map; import static org.arquillian.cube.impl.util.SystemEnvironmentVariables.getPropertyOrEnvironmentVariable; public class ConfigUtil { /** * Gets a property from system, environment or an external map. * The lookup order is system > env > map > defaultValue. * * @param name * The name of the property. * @param map * The external map. * @param defaultValue * The value that should be used if property is not found. */ public static String getStringProperty(String name, Map<String, String> map, String defaultValue) { if (map.containsKey(name)) { return map.get(name); } else { return getPropertyOrEnvironmentVariable(name, defaultValue); } } /** * Gets a property from system, environment or an external map. This method supports also passing an alternative * name. * The reason for supporting multiple names, is to support multiple keys for the same property (e.g. adding a new and * deprecating the old). * The lookup order is system[name] > env[name] > map[name] > system[alternativeName] > env[alternativeName] > * map[alternativeName] > defaultValue. * * @param name * The name of the property. * @param alternativeName * An alternate name to use. * @param map * The external map. * @param defaultValue * The value that should be used if property is not found. */ public static String getStringProperty(String name, String alternativeName, Map<String, String> map, String defaultValue) { return getStringProperty(name, map, getStringProperty(alternativeName, map, defaultValue)); } public static Boolean getBooleanProperty(String name, Map<String, String> map, Boolean defaultValue) { if (map.containsKey(name)) { return Boolean.parseBoolean(map.get(name)); } else { return getPropertyOrEnvironmentVariable(name, defaultValue); } } public static Long getLongProperty(String name, Map<String, String> map, Long defaultValue) { if (map.containsKey(name)) { return Long.parseLong(map.get(name)); } else { return Long.parseLong(getPropertyOrEnvironmentVariable(name, String.valueOf(defaultValue))); } } public static URL[] asURL(List<String> stringUrls) { List<URL> urls = new ArrayList<>(); for (String stringUrl : stringUrls) { try { urls.add(new URL(stringUrl)); } catch (MalformedURLException e) { //Just ignore } } return urls.toArray(new URL[urls.size()]); } }