001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    
018    package org.apache.commons.configuration;
019    
020    import java.util.Iterator;
021    
022    /**
023     * A configuration based on the system properties.
024     *
025     * @author Emmanuel Bourg
026     * @version $Revision: 727834 $, $Date: 2008-12-18 23:16:32 +0100 (Do, 18 Dez 2008) $
027     * @since 1.1
028     */
029    public class SystemConfiguration extends MapConfiguration
030    {
031        /**
032         * Create a Configuration based on the system properties.
033         *
034         * @see System#getProperties
035         */
036        public SystemConfiguration()
037        {
038            super(System.getProperties());
039        }
040    
041        /**
042         * The method allows system properties to be set from a property file.
043         * @param fileName The name of the property file.
044         * @throws Exception if an error occurs.
045         */
046        public static void setSystemProperties(String fileName) throws Exception
047        {
048            PropertiesConfiguration config = fileName.endsWith(".xml")
049                ? new XMLPropertiesConfiguration(fileName) : new PropertiesConfiguration(fileName);
050            setSystemProperties(config);
051        }
052    
053        /**
054         * Set System properties from a configuration file.
055         * @param systemConfig The configuration containing the properties to be set.
056         */
057        public static void setSystemProperties(PropertiesConfiguration systemConfig)
058        {
059            Iterator iter = systemConfig.getKeys();
060            while (iter.hasNext())
061            {
062                String key = (String) iter.next();
063                String value = (String) systemConfig.getProperty(key);
064                System.setProperty(key, value);
065            }
066        }
067    }