/*
- * Copyright (C) 2001, 2002 The Mir-coders group
+ * Copyright (C) 2001, 2002 The Mir-coders group
*
* This file is part of Mir.
*
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* In addition, as a special exception, The Mir-coders gives permission to link
- * the code of this program with the com.oreilly.servlet library, any library
- * licensed under the Apache Software License, The Sun (tm) Java Advanced
- * Imaging library (JAI), The Sun JIMI library (or with modified versions of
- * the above that use the same license as the above), and distribute linked
- * combinations including the two. You must obey the GNU General Public
- * License in all respects for all of the code used other than the above
- * mentioned libraries. If you modify this file, you may extend this exception
- * to your version of the file, but you are not obligated to do so. If you do
- * not wish to do so, delete this exception statement from your version.
+ * the code of this program with any library licensed under the Apache Software License,
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
+ * (or with modified versions of the above that use the same license as the above),
+ * and distribute linked combinations including the two. You must obey the
+ * GNU General Public License in all respects for all of the code used other than
+ * the above mentioned libraries. If you modify this file, you may extend this
+ * exception to your version of the file, but you are not obligated to do so.
+ * If you do not wish to do so, delete this exception statement from your version.
*/
package mir.config;
import multex.Exc;
import multex.Failure;
-import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.commons.collections.ExtendedProperties;
/**
* @author idefix
*/
-public class MirPropertiesConfiguration extends PropertiesConfiguration {
+public class MirPropertiesConfiguration extends ExtendedProperties {
private static MirPropertiesConfiguration instance;
private static ServletContext context;
private static String contextPath;
//if one of these properties is not present a new
//property is added with its default value;
- private static NeededProperty[] neededWithValue =
+ private static NeededProperty[] neededWithValue =
{
- new NeededProperty("Producer.DocRoot",""),
- new NeededProperty("Producer.ImageRoot",""),
- new NeededProperty("Producer.Image.Path",""),
- new NeededProperty("Producer.Media.Path",""),
- new NeededProperty("Producer.RealMedia.Path",""),
- new NeededProperty("Producer.Image.IconPath","")
+ new NeededProperty("Producer.DocRoot", ""),
+ new NeededProperty("Producer.ImageRoot", ""),
+ new NeededProperty("Producer.Image.Path", ""),
+ new NeededProperty("Producer.Media.Path", ""),
+ new NeededProperty("Producer.RealMedia.Path", ""),
+ new NeededProperty("Producer.Image.IconPath", "")
};
/**
*/
private MirPropertiesConfiguration(ServletContext ctx, String ctxPath)
throws IOException {
- super(ctx.getRealPath("/WEB-INF/etc/") + "/config.properties",
- ctx.getRealPath("/WEB-INF/") + "/default.properties");
+ //loading the defaults-config
+ super(ctx.getRealPath("/WEB-INF/") + "/default.properties");
+ //loading the user-config
+ ExtendedProperties userConfig =
+ new ExtendedProperties(ctx.getRealPath("/WEB-INF/etc/") + "/config.properties");
+ //merging them to one config while overriding the defaults
+ this.combine(userConfig);
addProperty("Home", ctx.getRealPath("/WEB-INF/") + "/");
checkMissing();
}
try {
instance = new MirPropertiesConfiguration(context, contextPath);
- } catch (IOException e) {
- e.printStackTrace();
+ }
+ catch (IOException e) {
+ throw new RuntimeException(e.toString());
}
}
return context;
}
- /**
- * Returns all properties in a Map
- * @return Map
- */
+ /**
+ * Returns all properties in a Map
+ * @return Map
+ */
public Map allSettings() {
Iterator iterator = this.getKeys();
Map returnMap = new HashMap();
-
while (iterator.hasNext()) {
String key = (String) iterator.next();
- Object o = this.getString(key);
+ Object o = this.getProperty(key);
if (o == null) {
o = new Object();
return returnMap;
}
-
/**
* Returns a String-property concatenated with the home-dir of the
* installation
* Checks if one property is missing and adds a default value
*/
private void checkMissing() {
- for (int i = 0; i < neededWithValue.length; i++) {
- if (super.getProperty(neededWithValue[i].getKey()) == null) {
- addProperty(neededWithValue[i].getKey(), neededWithValue[i].getValue());
- }
- }
+ for (int i = 0; i < neededWithValue.length; i++) {
+ if (super.getProperty(neededWithValue[i].getKey()) == null) {
+ addProperty(neededWithValue[i].getKey(), neededWithValue[i].getValue());
+ }
+ }
}
public File getFile(String key) throws FileNotFoundException {
}
/**
+ * @return the vlaue of this property as String
+ * @param key the key of this property
* @see org.apache.commons.configuration.Configuration#getString(java.lang.String)
*/
public String getString(String key) {
- if (super.getString(key) == null) {
- return new String();
- }
+ return getString(key, "");
+ }
+
- return super.getString(key);
+ /**
+ * @return the value of this property as String
+ * @param key the key of the property
+ * @param defaultValue the default value of this property if it is null
+ * @see org.apache.commons.collections.ExtendedProperties#getString(java.lang.String, java.lang.String)
+ */
+ public String getString(String key, String defaultValue) {
+ Object object = getProperty(key);
+ if(object == null){
+ if (defaultValue == null) {
+ return new String();
+ }
+ return defaultValue;
+ }
+ if (object instanceof String) {
+ return (String)object;
+ }
+ return object.toString();
}
/**
+ * Returns a property according to the given key
+ * @param key the key of the property
+ * @return the value of the property as Object, if no property available it returns a empty String
* @see org.apache.commons.configuration.Configuration#getString(java.lang.String)
*/
public Object getProperty(String key) {
public PropertiesConfigFailure(String msg, Throwable cause) {
super(msg, cause);
}
-
}
- /**
- * A Class for properties to be checked
- * @author idefix
- */
- private static class NeededProperty {
- private String _key;
- private String _value;
-
- public NeededProperty(String key, String value) {
- _key = key;
- _value = value;
- }
-
- public String getKey() {
- return _key;
- }
-
- public String getValue() {
- return _value;
- }
- }
+ /**
+ * A Class for properties to be checked
+ * @author idefix
+ */
+ private static class NeededProperty {
+ private String _key;
+ private String _value;
+
+ public NeededProperty(String key, String value) {
+ _key = key;
+ _value = value;
+ }
+
+ public String getKey() {
+ return _key;
+ }
+
+ public String getValue() {
+ return _value;
+ }
+ }
}