epugh 2004/02/12 04:59:19 Modified: configuration/xdocs changes.xml configuration/src/test/org/apache/commons/configuration TestConfigurationFactory.java TestJNDIConfiguration.java TestBaseConfiguration.java configuration/src/java/org/apache/commons/configuration HierarchicalConfigurationXMLReader.java CompositeConfiguration.java AbstractConfiguration.java Configuration.java BaseConfigurationXMLReader.java Log: Add in bignumber and biginteger. Revision Changes Path 1.8 +3 -0 jakarta-commons/configuration/xdocs/changes.xml Index: changes.xml =================================================================== RCS file: /home/cvs/jakarta-commons/configuration/xdocs/changes.xml,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- changes.xml 30 Jan 2004 14:53:11 -0000 1.7 +++ changes.xml 12 Feb 2004 12:59:19 -0000 1.8 @@ -7,6 +7,9 @@ <body> <release version="1.0-dev-4" date=""> + <action dev="ebourg" type="add"> + The Configuration interface now supports BigDecimal and BigInteger numbers. + </action> <action dev="epugh" type="add"> ConfigurationException is now thrown by public methods instead of Exception or IOException or whatnot. 1.6 +2 -2 jakarta-commons/configuration/src/test/org/apache/commons/configuration/TestConfigurationFactory.java Index: TestConfigurationFactory.java =================================================================== RCS file: /home/cvs/jakarta-commons/configuration/src/test/org/apache/commons/configuration/TestConfigurationFactory.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- TestConfigurationFactory.java 30 Jan 2004 14:46:37 -0000 1.5 +++ TestConfigurationFactory.java 12 Feb 2004 12:59:19 -0000 1.6 @@ -183,7 +183,7 @@ { configurationFactory.setConfigurationFileName(testDigesterBadXML.toString()); try { - Configuration c = configurationFactory.getConfiguration(); + configurationFactory.getConfiguration(); fail("Should have throw an Exception"); } catch (ConfigurationException cle){ 1.2 +2 -2 jakarta-commons/configuration/src/test/org/apache/commons/configuration/TestJNDIConfiguration.java Index: TestJNDIConfiguration.java =================================================================== RCS file: /home/cvs/jakarta-commons/configuration/src/test/org/apache/commons/configuration/TestJNDIConfiguration.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- TestJNDIConfiguration.java 16 Jan 2004 17:32:36 -0000 1.1 +++ TestJNDIConfiguration.java 12 Feb 2004 12:59:19 -0000 1.2 @@ -74,7 +74,7 @@ public void setUp() throws Exception { InitialContext context = new InitialContext(); - + assertNotNull(context); JNDIConfiguration jndiConfiguration = new JNDIConfiguration(); jndiConfiguration.setPrefix(""); 1.4 +24 -2 jakarta-commons/configuration/src/test/org/apache/commons/configuration/TestBaseConfiguration.java Index: TestBaseConfiguration.java =================================================================== RCS file: /home/cvs/jakarta-commons/configuration/src/test/org/apache/commons/configuration/TestBaseConfiguration.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TestBaseConfiguration.java 16 Jan 2004 14:23:39 -0000 1.3 +++ TestBaseConfiguration.java 12 Feb 2004 12:59:19 -0000 1.4 @@ -54,9 +54,11 @@ * <http://www.apache.org/>. */ +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.List; import java.util.NoSuchElementException; import java.util.Properties; -import java.util.List; import junit.framework.TestCase; @@ -160,6 +162,26 @@ assertEquals("This returns 1(Double)", eprop.getDouble("numberD",new Double("2")), new Double(oneD)); + } + + public void testGetBigDecimal() { + eprop.setProperty("numberBigD", "123.456"); + BigDecimal number = new BigDecimal("123.456"); + BigDecimal defaultValue = new BigDecimal("654.321"); + + assertEquals("Existing key", number, eprop.getBigDecimal("numberBigD")); + assertEquals("Existing key with default value", number, eprop.getBigDecimal("numberBigD", defaultValue)); + assertEquals("Missing key with default value", defaultValue, eprop.getBigDecimal("numberNotInConfig", defaultValue)); + } + + public void testGetBigInteger() { + eprop.setProperty("numberBigI", "1234567890"); + BigInteger number = new BigInteger("1234567890"); + BigInteger defaultValue = new BigInteger("654321"); + + assertEquals("Existing key", number, eprop.getBigInteger("numberBigI")); + assertEquals("Existing key with default value", number, eprop.getBigInteger("numberBigI", defaultValue)); + assertEquals("Missing key with default value", defaultValue, eprop.getBigInteger("numberNotInConfig", defaultValue)); } public void testGetBoolean() { 1.2 +2 -5 jakarta-commons/configuration/src/java/org/apache/commons/configuration/HierarchicalConfigurationXMLReader.java Index: HierarchicalConfigurationXMLReader.java =================================================================== RCS file: /home/cvs/jakarta-commons/configuration/src/java/org/apache/commons/configuration/HierarchicalConfigurationXMLReader.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- HierarchicalConfigurationXMLReader.java 23 Dec 2003 15:09:05 -0000 1.1 +++ HierarchicalConfigurationXMLReader.java 12 Feb 2004 12:59:19 -0000 1.2 @@ -54,11 +54,8 @@ * <http://www.apache.org/>. */ -import java.io.IOException; - import org.apache.commons.configuration.HierarchicalConfiguration.Node; import org.xml.sax.Attributes; -import org.xml.sax.SAXException; import org.xml.sax.helpers.AttributesImpl; /** @@ -137,7 +134,7 @@ * @throws IOException if no configuration has been specified * @throws SAXException if an error occurs during parsing */ - protected void processKeys() throws IOException, SAXException + protected void processKeys() { getConfiguration().getRoot().visit(new SAXVisitor(), null); } 1.5 +36 -1 jakarta-commons/configuration/src/java/org/apache/commons/configuration/CompositeConfiguration.java Index: CompositeConfiguration.java =================================================================== RCS file: /home/cvs/jakarta-commons/configuration/src/java/org/apache/commons/configuration/CompositeConfiguration.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- CompositeConfiguration.java 7 Feb 2004 13:43:15 -0000 1.4 +++ CompositeConfiguration.java 12 Feb 2004 12:59:19 -0000 1.5 @@ -53,6 +53,8 @@ * <http://www.apache.org/>. */ +import java.math.BigDecimal; +import java.math.BigInteger; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; @@ -654,6 +656,39 @@ return defaultValue; } } + + public BigDecimal getBigDecimal(String key) throws NoSuchElementException { + return getFirstMatchingConfig(key).getBigDecimal(key); + } + + public BigDecimal getBigDecimal(String key, BigDecimal defaultValue) + { + try + { + return getFirstMatchingConfig(key).getBigDecimal(key, defaultValue); + } + catch (NoSuchElementException nsee) + { + return defaultValue; + } + } + + public BigInteger getBigInteger(String key) throws NoSuchElementException { + return getFirstMatchingConfig(key).getBigInteger(key); + } + + public BigInteger getBigInteger(String key, BigInteger defaultValue) + { + try + { + return getFirstMatchingConfig(key).getBigInteger(key, defaultValue); + } + catch (NoSuchElementException nsee) + { + return defaultValue; + } + } + /** * Get a string associated with the given configuration key. * 1.4 +89 -1 jakarta-commons/configuration/src/java/org/apache/commons/configuration/AbstractConfiguration.java Index: AbstractConfiguration.java =================================================================== RCS file: /home/cvs/jakarta-commons/configuration/src/java/org/apache/commons/configuration/AbstractConfiguration.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- AbstractConfiguration.java 16 Jan 2004 14:27:57 -0000 1.3 +++ AbstractConfiguration.java 12 Feb 2004 12:59:19 -0000 1.4 @@ -61,6 +61,8 @@ import java.util.NoSuchElementException; import java.util.Properties; import java.util.StringTokenizer; +import java.math.BigDecimal; +import java.math.BigInteger; import org.apache.commons.lang.BooleanUtils; @@ -1200,6 +1202,92 @@ { throw new ClassCastException( '\'' + key + "' doesn't map to a Short object"); + } + } + + public BigDecimal getBigDecimal(String key) throws NoSuchElementException { + BigDecimal number = getBigDecimal(key, null); + if (number != null) + { + return number; + } + else + { + throw new NoSuchElementException( + '\'' + key + "' doesn't map to an existing object"); + } + } + + public BigDecimal getBigDecimal(String key, BigDecimal defaultValue) { + Object value = resolveContainerStore(key); + + if (value instanceof BigDecimal) + { + return (BigDecimal) value; + } + else if (value instanceof String) + { + BigDecimal number = new BigDecimal((String) value); + return number; + } + else if (value == null) + { + if (defaults != null) + { + return defaults.getBigDecimal(key, defaultValue); + } + else + { + return defaultValue; + } + } + else + { + throw new ClassCastException( + '\'' + key + "' doesn't map to a BigDecimal object"); + } + } + + public BigInteger getBigInteger(String key) throws NoSuchElementException { + BigInteger number = getBigInteger(key, null); + if (number != null) + { + return number; + } + else + { + throw new NoSuchElementException( + '\'' + key + "' doesn't map to an existing object"); + } + } + + public BigInteger getBigInteger(String key, BigInteger defaultValue) { + Object value = resolveContainerStore(key); + + if (value instanceof BigDecimal) + { + return (BigInteger) value; + } + else if (value instanceof String) + { + BigInteger number = new BigInteger((String) value); + return number; + } + else if (value == null) + { + if (defaults != null) + { + return defaults.getBigInteger(key, defaultValue); + } + else + { + return defaultValue; + } + } + else + { + throw new ClassCastException( + '\'' + key + "' doesn't map to a BigDecimal object"); } } 1.3 +50 -1 jakarta-commons/configuration/src/java/org/apache/commons/configuration/Configuration.java Index: Configuration.java =================================================================== RCS file: /home/cvs/jakarta-commons/configuration/src/java/org/apache/commons/configuration/Configuration.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Configuration.java 24 Dec 2003 14:28:22 -0000 1.2 +++ Configuration.java 12 Feb 2004 12:59:19 -0000 1.3 @@ -57,6 +57,9 @@ import java.util.Iterator; import java.util.List; import java.util.Properties; +import java.util.NoSuchElementException; +import java.math.BigDecimal; +import java.math.BigInteger; /** * Configuration interface. @@ -454,6 +457,52 @@ * map to an existing object. */ Short getShort(String key, Short defaultValue); + + /** + * Get a BigDecimal associated with the given configuration key. + * + * @param key The configuration key. + * + * @return The associated BigDecimal if key is found and has valid format + * + * @exception NoSuchElementException is thrown if the key doesn't + * map to an existing object. + */ + BigDecimal getBigDecimal(String key) throws NoSuchElementException; + + /** + * Get a BigDecimal associated with the given configuration key. + * + * @param key The configuration key. + * @param defaultValue The default value. + * + * @return The associated BigDecimal if key is found and has valid + * format, default value otherwise. + */ + BigDecimal getBigDecimal(String key, BigDecimal defaultValue); + + /** + * Get a BigInteger associated with the given configuration key. + * + * @param key The configuration key. + * + * @return The associated BigInteger if key is found and has valid format + * + * @exception NoSuchElementException is thrown if the key doesn't + * map to an existing object. + */ + BigInteger getBigInteger(String key) throws NoSuchElementException; + + /** + * Get a BigInteger associated with the given configuration key. + * + * @param key The configuration key. + * @param defaultValue The default value. + * + * @return The associated BigInteger if key is found and has valid + * format, default value otherwise. + */ + BigInteger getBigInteger(String key, BigInteger defaultValue); /** * Get a string associated with the given configuration key. 1.2 +2 -7 jakarta-commons/configuration/src/java/org/apache/commons/configuration/BaseConfigurationXMLReader.java Index: BaseConfigurationXMLReader.java =================================================================== RCS file: /home/cvs/jakarta-commons/configuration/src/java/org/apache/commons/configuration/BaseConfigurationXMLReader.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- BaseConfigurationXMLReader.java 23 Dec 2003 15:09:05 -0000 1.1 +++ BaseConfigurationXMLReader.java 12 Feb 2004 12:59:19 -0000 1.2 @@ -54,9 +54,6 @@ * <http://www.apache.org/>. */ -import java.io.IOException; - -import org.xml.sax.SAXException; /** * <p>A specialized SAX2 XML parser that processes configuration objects.</p> @@ -124,10 +121,8 @@ * <code>HierarchicalConfigurationConverter</code> object to iterate over * all keys in the actual configuration and to generate corresponding SAX * events. - * @throws IOException if no configuration object is specified - * @throws SAXException if a SAXException occurs during parsing */ - protected void processKeys() throws IOException, SAXException + protected void processKeys() { fireElementStart(getRootName(), null); new SAXConverter().process(getConfiguration());
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]