001: /* PropertiesLoaderSupport.java
002: *
003: * DDSteps - Data Driven JUnit Test Steps
004: * Copyright (C) 2005 Jayway AB
005: * www.ddsteps.org
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License version 2.1 as published by the Free Software Foundation.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, visit
018: * http://www.opensource.org/licenses/lgpl-license.php
019: */
020:
021: package org.ddsteps.properties;
022:
023: import java.io.IOException;
024: import java.util.Properties;
025:
026: import org.springframework.beans.factory.InitializingBean;
027: import org.springframework.core.io.support.PropertiesLoaderSupport;
028:
029: /**
030: * Uses the system properties as default (local) properties.
031: *
032: * @author adam
033: * @version $Id: PropertiesLoaderSupport.java,v 1.1 2005/12/03 12:51:41
034: * adamskogman Exp $
035: */
036: public class SystemPropertiesLoaderSupport extends
037: PropertiesLoaderSupport implements InitializingBean {
038:
039: /**
040: * The set of merged, cached properties.
041: */
042: protected Properties properties;
043:
044: /**
045: * Default constructor. Sets defaults.
046: */
047: public SystemPropertiesLoaderSupport() {
048: super ();
049: }
050:
051: /**
052: * Merges properties once.
053: *
054: * @throws IOException
055: * If there were error loading the properties.
056: *
057: * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
058: */
059: public void afterPropertiesSet() throws IOException {
060:
061: // Set to system properties
062: setProperties(getSystemProperties());
063:
064: // Merge properties before we add the system props
065: properties = mergeProperties();
066:
067: }
068:
069: /**
070: * For testing purposes, isolate getting the system properties.
071: *
072: * @return The System Properties
073: */
074: Properties getSystemProperties() {
075: return System.getProperties();
076: }
077:
078: /**
079: * Determine if properties are overridden by system properties, or if the
080: * loaded (and local) properties override the system properties.
081: * <p>
082: * Default is that the loaded properties are overridden by system
083: * properties.
084: *
085: * @param systemPropertiesOverride
086: * True or false.
087: */
088: public void setSystemPropertiesOverride(
089: boolean systemPropertiesOverride) {
090: setLocalOverride(systemPropertiesOverride);
091: }
092:
093: /**
094: * Testing accessor.
095: *
096: * @return Returns the properties.
097: */
098: Properties getProperties() {
099: return properties;
100: }
101:
102: }
|