001package org.kuali.common.util.spring.env;
002
003import java.util.Properties;
004
005import org.kuali.common.util.PropertyUtils;
006import org.kuali.common.util.property.ImmutableProperties;
007import org.springframework.core.env.AbstractEnvironment;
008import org.springframework.core.env.PropertiesPropertySource;
009
010public final class PropertiesEnvironment extends AbstractEnvironment {
011
012        private static final String NAME = "properties";
013
014        /**
015         * Default environment that uses system properties / environment variables (prefixed with <code>env</code>)
016         */
017        public PropertiesEnvironment() {
018                this(PropertyUtils.getGlobalProperties());
019        }
020
021        /**
022         * Create an environment based on <code>properties</code>
023         */
024        public PropertiesEnvironment(Properties properties) {
025                this(NAME, properties);
026        }
027
028        public PropertiesEnvironment(String name, Properties properties) {
029                this.properties = ImmutableProperties.copyOf(properties);
030                super.getPropertySources().addLast(new PropertiesPropertySource(name, properties));
031        }
032
033        private final Properties properties;
034
035        public Properties getProperties() {
036                return properties;
037        }
038
039}