Added a mechanism for retrieving a set of sub-properties (whose keys all

start with a particular prefix) from a configuration object.


git-svn-id: https://samskivert.googlecode.com/svn/trunk@688 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
mdb
2002-03-28 22:21:06 +00:00
parent 72079b8ef8
commit 9e29383ada
3 changed files with 44 additions and 3 deletions
@@ -1,5 +1,5 @@
//
// $Id: Config.java,v 1.10 2002/03/28 21:50:26 mdb Exp $
// $Id: Config.java,v 1.11 2002/03/28 22:21:06 mdb Exp $
//
// samskivert library - useful routines for java programs
// Copyright (C) 2001 Michael Bayne
@@ -305,6 +305,37 @@ public class Config
return Class.forName(getValue(name, defcname)).newInstance();
}
/**
* Returns a properties file containing all configuration values that
* start with the supplied prefix (plus a trailing "." which will be
* added if it doesn't already exist). The keys in the sub-properties
* file will have had the prefix stripped off.
*/
public Properties getSubProperties (String prefix)
{
// slap a trailing dot on if necessary
if (!prefix.endsWith(".")) {
prefix = prefix + ".";
}
// build the sub-properties
Properties props = new Properties();
Iterator iter = keys();
while (iter.hasNext()) {
String key = (String)iter.next();
if (!key.startsWith(prefix)) {
continue;
}
String value = getValue(key, (String)null);
if (value == null) {
continue;
}
props.put(key.substring(prefix.length()), value);
}
return props;
}
/**
* Returns an iterator that returns all of the configuration keys in
* this config object.
@@ -1,5 +1,5 @@
#
# $Id: test.properties,v 1.1 2001/07/12 02:44:34 mdb Exp $
# $Id: test.properties,v 1.2 2002/03/28 22:21:06 mdb Exp $
#
# A test properties file
@@ -8,3 +8,6 @@ prop2 = twenty five
prop3 = 9, 8, 7, 6
prop4 = one, two, three,, and a half, four
# prop5 = not defined
sub.sub1 = 5
sub.sub2 = whee!
@@ -1,9 +1,10 @@
//
// $Id: ConfigTest.java,v 1.2 2002/03/28 21:50:27 mdb Exp $
// $Id: ConfigTest.java,v 1.3 2002/03/28 22:21:06 mdb Exp $
package com.samskivert.util;
import java.util.Iterator;
import java.util.Properties;
import junit.framework.Test;
import junit.framework.TestCase;
@@ -43,6 +44,12 @@ public class ConfigTest extends TestCase
Iterator iter = config.keys();
System.out.println("Keys: " + StringUtil.toString(iter));
config.setValue("sub.sub3", "three");
Properties subprops = config.getSubProperties("sub");
System.out.println("Sub: " +
StringUtil.toString(subprops.propertyNames()));
}
public static Test suite ()