import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import java.util.Properties; import org.apache.commons.configuration.ConfigurationRuntimeException; import org.apache.commons.configuration.MapConfiguration; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.SystemUtils; /** * created 12.07.2007 *
* A configuration based on the environment variables. * * @author Vasily Ivanov */ public class EnvironmentConfiguration extends MapConfiguration { public EnvironmentConfiguration() throws IOException { super(getEnvVariables()); } private static Properties getEnvVariables() throws IOException { Process p; Runtime r = Runtime.getRuntime(); if (SystemUtils.IS_OS_WINDOWS_95 || SystemUtils.IS_OS_WINDOWS_98) { p = r.exec("command.com /c set"); } else if (SystemUtils.IS_OS_WINDOWS) { p = r.exec("cmd.exe /c set"); } else if (SystemUtils.IS_OS_UNIX) { p = r.exec("env"); } else { throw new ConfigurationRuntimeException("OS is not recognised"); } return readEnvVariables(p.getInputStream()); } private static Properties readEnvVariables(final InputStream in) throws IOException { Properties props = new Properties(); Iterator itr = IOUtils.readLines(in).iterator(); while (itr.hasNext()) { String[] var = StringUtils.split((String) itr.next(), '='); props.setProperty(var[0], var[1]); } return props; } }