Good fix.. However, ins;t there a class in commons lang that does that for
us?

Eric

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Sent: Monday, October 18, 2004 11:45 AM
> To: [EMAIL PROTECTED]
> Subject: cvs commit:
> jakarta-commons/configuration/src/test/org/apache/commons/configuration
> TestBaseConfiguration.java
>
>
> ebourg      2004/10/18 03:44:31
>
>   Modified:    configuration/xdocs changes.xml
>                configuration/src/java/org/apache/commons/configuration
>                         PropertyConverter.java
>                configuration/src/test/org/apache/commons/configuration
>                         TestBaseConfiguration.java
>   Log:
>   Numeric properties can now be specified in hexadecimal format
> (bug 28026)
>
>   Revision  Changes    Path
>   1.58      +4 -0      jakarta-commons/configuration/xdocs/changes.xml
>
>   Index: changes.xml
>   ===================================================================
>   RCS file: /home/cvs/jakarta-commons/configuration/xdocs/changes.xml,v
>   retrieving revision 1.57
>   retrieving revision 1.58
>   diff -u -r1.57 -r1.58
>   --- changes.xml     18 Oct 2004 10:19:26 -0000      1.57
>   +++ changes.xml     18 Oct 2004 10:44:31 -0000      1.58
>   @@ -8,6 +8,10 @@
>      <body>
>
>        <release version="1.1-dev" date="in CVS">
>   +      <action dev="ebourg" type="add" issue="28026">
>   +        Numeric properties can now be specified in hexadecimal format,
>   +        for example "number = 0xC5F0".
>   +      </action>
>          <action dev="oheger" type="fix" issue="31745">
>            Fixed HierarchicalConfiguration.getKeys(String), it
> returned an empty
>            iterator if the prefix string contained indices.
>
>
>
>   1.2       +47 -6
> jakarta-commons/configuration/src/java/org/apache/commons/configur
> ation/PropertyConverter.java
>
>   Index: PropertyConverter.java
>   ===================================================================
>   RCS file:
> /home/cvs/jakarta-commons/configuration/src/java/org/apache/common
> s/configuration/PropertyConverter.java,v
>   retrieving revision 1.1
>   retrieving revision 1.2
>   diff -u -r1.1 -r1.2
>   --- PropertyConverter.java  18 Oct 2004 09:54:37 -0000      1.1
>   +++ PropertyConverter.java  18 Oct 2004 10:44:31 -0000      1.2
>   @@ -84,7 +84,15 @@
>            {
>                try
>                {
>   -                return new Byte((String) value);
>   +                String string = (String) value;
>   +                if (string.startsWith("0x"))
>   +                {
>   +                    return new Byte((byte)
> Integer.parseInt(string.substring(2), 16));
>   +                }
>   +                else
>   +                {
>   +                    return new Byte(string);
>   +                }
>                }
>                catch (NumberFormatException e)
>                {
>   @@ -113,7 +121,16 @@
>            {
>                try
>                {
>   -                return new Short((String) value);
>   +                String string = (String) value;
>   +                if (string.startsWith("0x"))
>   +                {
>   +                    return new Short((short)
> Integer.parseInt(string.substring(2), 16));
>   +                }
>   +                else
>   +                {
>   +                    return new Short(string);
>   +                }
>   +
>                }
>                catch (NumberFormatException e)
>                {
>   @@ -142,7 +159,15 @@
>            {
>                try
>                {
>   -                return new Integer((String) value);
>   +                String string = (String) value;
>   +                if (string.startsWith("0x"))
>   +                {
>   +                    return new Integer((int)
> Long.parseLong(string.substring(2), 16));
>   +                }
>   +                else
>   +                {
>   +                    return new Integer(string);
>   +                }
>                }
>                catch (NumberFormatException e)
>                {
>   @@ -171,7 +196,15 @@
>            {
>                try
>                {
>   -                return new Long((String) value);
>   +                String string = (String) value;
>   +                if (string.startsWith("0x"))
>   +                {
>   +                    return new Long(new
> BigInteger(string.substring(2), 16).longValue());
>   +                }
>   +                else
>   +                {
>   +                    return new Long(string);
>   +                }
>                }
>                catch (NumberFormatException e)
>                {
>   @@ -258,7 +291,15 @@
>            {
>                try
>                {
>   -                return new BigInteger((String) value);
>   +                String string = (String) value;
>   +                if (string.startsWith("0x"))
>   +                {
>   +                    return new BigInteger(string.substring(2), 16);
>   +                }
>   +                else
>   +                {
>   +                    return new BigInteger(string);
>   +                }
>                }
>                catch (NumberFormatException e)
>                {
>
>
>
>   1.16      +570 -504
> jakarta-commons/configuration/src/test/org/apache/commons/configur
> ation/TestBaseConfiguration.java
>
>   Index: TestBaseConfiguration.java
>   ===================================================================
>   RCS file:
> /home/cvs/jakarta-commons/configuration/src/test/org/apache/common
> s/configuration/TestBaseConfiguration.java,v
>   retrieving revision 1.15
>   retrieving revision 1.16
>   diff -u -r1.15 -r1.16
>   --- TestBaseConfiguration.java      19 Sep 2004 22:01:50 -0000      1.15
>   +++ TestBaseConfiguration.java      18 Oct 2004 10:44:31 -0000      1.16
>   @@ -1,5 +1,3 @@
>   -package org.apache.commons.configuration;
>   -
>    /*
>     * Copyright 2001-2004 The Apache Software Foundation.
>     *
>   @@ -16,6 +14,8 @@
>     * limitations under the License.
>     */
>
>   +package org.apache.commons.configuration;
>   +
>    import java.math.BigDecimal;
>    import java.math.BigInteger;
>    import java.util.Iterator;
>   @@ -35,510 +35,560 @@
>     */
>    public class TestBaseConfiguration extends TestCase
>    {
>   -        protected BaseConfiguration config = null;
>   +    protected BaseConfiguration config = null;
>   +
>   +    protected static Class missingElementException =
> NoSuchElementException.class;
>   +    protected static Class incompatibleElementException =
> ConversionException.class;
>   +
>   +    protected void setUp() throws Exception
>   +    {
>   +        config = new BaseConfiguration();
>   +        config.setThrowExceptionOnMissing(true);
>   +    }
>   +
>   +    public void testThrowExceptionOnMissing()
>   +    {
>   +        assertTrue("Throw Exception Property is not set!",
> config.isThrowExceptionOnMissing());
>   +    }
>   +
>   +    public void testGetProperty()
>   +    {
>   +        /* should be empty and return null */
>   +        assertEquals("This returns null",
> config.getProperty("foo"), null);
>   +
>   +        /* add a real value, and get it two different ways */
>   +        config.setProperty("number", "1");
>   +        assertEquals("This returns '1'",
> config.getProperty("number"), "1");
>   +        assertEquals("This returns '1'",
> config.getString("number"), "1");
>   +    }
>   +
>   +    public void testGetByte()
>   +    {
>   +        config.setProperty("number", "1");
>   +        byte oneB = 1;
>   +        byte twoB = 2;
>   +        assertEquals("This returns 1(byte)", oneB,
> config.getByte("number"));
>   +        assertEquals("This returns 1(byte)", oneB,
> config.getByte("number", twoB));
>   +        assertEquals("This returns 2(default byte)", twoB,
> config.getByte("numberNotInConfig", twoB));
>   +        assertEquals("This returns 1(Byte)", new Byte(oneB),
> config.getByte("number", new Byte("2")));
>   +
>   +        // missing key without default value
>   +        Throwable t = null;
>   +        try
>   +        {
>   +            config.getByte("numberNotInConfig");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for missing keys", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   +
>   +        // existing key with an incompatible value
>   +        config.setProperty("test.empty", "");
>   +        t = null;
>   +        try
>   +        {
>   +            config.getByte("test.empty");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for incompatible
> values", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   +    }
>
>   -   protected static Class missingElementException =
> NoSuchElementException.class;
>   -   protected static Class incompatibleElementException =
> ConversionException.class;
>   +    public void testGetShort()
>   +    {
>   +        config.setProperty("numberS", "1");
>   +        short oneS = 1;
>   +        short twoS = 2;
>   +        assertEquals("This returns 1(short)", oneS,
> config.getShort("numberS"));
>   +        assertEquals("This returns 1(short)", oneS,
> config.getShort("numberS", twoS));
>   +        assertEquals("This returns 2(default short)", twoS,
> config.getShort("numberNotInConfig", twoS));
>   +        assertEquals("This returns 1(Short)", new Short(oneS),
> config.getShort("numberS", new Short("2")));
>   +
>   +        // missing key without default value
>   +        Throwable t = null;
>   +        try
>   +        {
>   +            config.getShort("numberNotInConfig");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for missing keys", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>
>   -        protected void setUp()
>   -            throws Exception
>   +        // existing key with an incompatible value
>   +        config.setProperty("test.empty", "");
>   +        t = null;
>   +        try
>            {
>   -            config = new BaseConfiguration();
>   -            config.setThrowExceptionOnMissing(true);
>   -        }
>   -
>   -        public void testThrowExceptionOnMissing()
>   -        {
>   -            assertTrue("Throw Exception Property is not set!",
> config.isThrowExceptionOnMissing());
>   -        }
>   -
>   -   public void testGetProperty()
>   -   {
>   -           /* should be empty and return null */
>   -           assertEquals("This returns null",
> config.getProperty("foo"), null);
>   -
>   -           /* add a real value, and get it two different ways */
>   -           config.setProperty("number", "1");
>   -           assertEquals("This returns '1'",
> config.getProperty("number"), "1");
>   -           assertEquals("This returns '1'",
> config.getString("number"), "1");
>   -   }
>   -
>   -   public void testGetByte()
>   -   {
>   -           config.setProperty("number", "1");
>   -           byte oneB = 1;
>   -           byte twoB = 2;
>   -           assertEquals("This returns 1(byte)", oneB,
> config.getByte("number"));
>   -           assertEquals("This returns 1(byte)", oneB,
> config.getByte("number", twoB));
>   -           assertEquals("This returns 2(default byte)", twoB,
> config.getByte("numberNotInConfig", twoB));
>   -           assertEquals("This returns 1(Byte)", new
> Byte(oneB), config.getByte("number", new Byte("2")));
>   -
>   -           // missing key without default value
>   -           Throwable t = null;
>   -           try {
>   -                   config.getByte("numberNotInConfig");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for missing keys", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   -
>   -           // existing key with an incompatible value
>   -           config.setProperty("test.empty", "");
>   -           t = null;
>   -           try {
>   -                   config.getByte("test.empty");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for incompatible
> values", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   -   }
>   -
>   -   public void testGetShort()
>   -   {
>   -           config.setProperty("numberS", "1");
>   -           short oneS = 1;
>   -           short twoS = 2;
>   -           assertEquals("This returns 1(short)", oneS,
> config.getShort("numberS"));
>   -           assertEquals("This returns 1(short)", oneS,
> config.getShort("numberS", twoS));
>   -           assertEquals("This returns 2(default short)", twoS,
> config.getShort("numberNotInConfig", twoS));
>   -           assertEquals("This returns 1(Short)", new
> Short(oneS), config.getShort("numberS", new Short("2")));
>   -
>   -           // missing key without default value
>   -           Throwable t = null;
>   -           try {
>   -                   config.getShort("numberNotInConfig");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for missing keys", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   -
>   -           // existing key with an incompatible value
>   -           config.setProperty("test.empty", "");
>   -           t = null;
>   -           try {
>   -                   config.getShort("test.empty");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for incompatible
> values", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   -   }
>   -
>   -   public void testGetLong()
>   -   {
>   -           config.setProperty("numberL", "1");
>   -           long oneL = 1;
>   -           long twoL = 2;
>   -           assertEquals("This returns 1(long)", oneL,
> config.getLong("numberL"));
>   -           assertEquals("This returns 1(long)", oneL,
> config.getLong("numberL", twoL));
>   -           assertEquals("This returns 2(default long)", twoL,
> config.getLong("numberNotInConfig", twoL));
>   -           assertEquals("This returns 1(Long)", new
> Long(oneL), config.getLong("numberL", new Long("2")));
>   -
>   -           // missing key without default value
>   -           Throwable t = null;
>   -           try {
>   -                   config.getLong("numberNotInConfig");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for missing keys", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   -
>   -           // existing key with an incompatible value
>   -           config.setProperty("test.empty", "");
>   -           t = null;
>   -           try {
>   -                   config.getLong("test.empty");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for incompatible
> values", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   -   }
>   -
>   -   public void testGetFloat()
>   -   {
>   -           config.setProperty("numberF", "1.0");
>   -           float oneF = 1;
>   -           float twoF = 2;
>   -           assertEquals("This returns 1(float)", oneF,
> config.getFloat("numberF"), 0);
>   -           assertEquals("This returns 1(float)", oneF,
> config.getFloat("numberF", twoF), 0);
>   -           assertEquals("This returns 2(default float)", twoF,
> config.getFloat("numberNotInConfig", twoF), 0);
>   -           assertEquals("This returns 1(Float)", new
> Float(oneF), config.getFloat("numberF", new Float("2")));
>   -
>   -           // missing key without default value
>   -           Throwable t = null;
>   -           try {
>   -                   config.getFloat("numberNotInConfig");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for missing keys", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   -
>   -           // existing key with an incompatible value
>   -           config.setProperty("test.empty", "");
>   -           t = null;
>   -           try {
>   -                   config.getFloat("test.empty");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for incompatible
> values", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   -   }
>   -
>   -   public void testGetDouble()
>   -   {
>   -           config.setProperty("numberD", "1.0");
>   -           double oneD = 1;
>   -           double twoD = 2;
>   -           assertEquals("This returns 1(double)", oneD,
> config.getDouble("numberD"), 0);
>   -           assertEquals("This returns 1(double)", oneD,
> config.getDouble("numberD", twoD), 0);
>   -           assertEquals("This returns 2(default double)",
> twoD, config.getDouble("numberNotInConfig", twoD), 0);
>   -           assertEquals("This returns 1(Double)", new
> Double(oneD), config.getDouble("numberD", new Double("2")));
>   -
>   -           // missing key without default value
>   -           Throwable t = null;
>   -           try {
>   -                   config.getDouble("numberNotInConfig");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for missing keys", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   -
>   -           // existing key with an incompatible value
>   -           config.setProperty("test.empty", "");
>   -           t = null;
>   -           try {
>   -                   config.getDouble("test.empty");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for incompatible
> values", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   -   }
>   -
>   -   public void testGetBigDecimal()
>   -   {
>   -           config.setProperty("numberBigD", "123.456");
>   -           BigDecimal number = new BigDecimal("123.456");
>   -           BigDecimal defaultValue = new BigDecimal("654.321");
>   -
>   -           assertEquals("Existing key", number,
> config.getBigDecimal("numberBigD"));
>   -           assertEquals("Existing key with default value",
> number, config.getBigDecimal("numberBigD", defaultValue));
>   -           assertEquals("Missing key with default value",
> defaultValue, config.getBigDecimal("numberNotInConfig", defaultValue));
>   -
>   -           // missing key without default value
>   -           Throwable t = null;
>   -           try {
>   -                   config.getBigDecimal("numberNotInConfig");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for missing keys", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   -
>   -           // existing key with an incompatible value
>   -           config.setProperty("test.empty", "");
>   -           t = null;
>   -           try {
>   -                   config.getBigDecimal("test.empty");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for incompatible
> values", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   -   }
>   -
>   -   public void testGetBigInteger()
>   -   {
>   -           config.setProperty("numberBigI", "1234567890");
>   -           BigInteger number = new BigInteger("1234567890");
>   -           BigInteger defaultValue = new BigInteger("654321");
>   -
>   -           assertEquals("Existing key", number,
> config.getBigInteger("numberBigI"));
>   -           assertEquals("Existing key with default value",
> number, config.getBigInteger("numberBigI", defaultValue));
>   -           assertEquals("Missing key with default value",
> defaultValue, config.getBigInteger("numberNotInConfig", defaultValue));
>   -
>   -           // missing key without default value
>   -           Throwable t = null;
>   -           try {
>   -                   config.getBigInteger("numberNotInConfig");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for missing keys", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   -
>   -           // existing key with an incompatible value
>   -           config.setProperty("test.empty", "");
>   -           t = null;
>   -           try {
>   -                   config.getBigInteger("test.empty");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for incompatible
> values", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   -   }
>   -
>   -   public void testGetString()
>   -   {
>   -           config.setProperty("testString", "The quick brown fox");
>   -           String string = new String("The quick brown fox");
>   -           String defaultValue = new String("jumps over the lazy dog");
>   -
>   -           assertEquals("Existing key", string,
> config.getString("testString"));
>   -           assertEquals("Existing key with default value",
> string, config.getString("testString", defaultValue));
>   -           assertEquals("Missing key with default value",
> defaultValue, config.getString("stringNotInConfig", defaultValue));
>   -
>   -           // missing key without default value
>   -           Throwable t = null;
>   -           try {
>   -                   config.getString("stringNotInConfig");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for missing keys", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   -   }
>   -
>   -   public void testGetBoolean()
>   -   {
>   -           config.setProperty("boolA", Boolean.TRUE);
>   -           boolean boolT = true, boolF = false;
>   -           assertEquals("This returns true", boolT,
> config.getBoolean("boolA"));
>   -           assertEquals("This returns true, not the default",
> boolT, config.getBoolean("boolA", boolF));
>   -           assertEquals("This returns false(default)", boolF,
> config.getBoolean("boolNotInConfig", boolF));
>   -           assertEquals("This returns true(Boolean)", new
> Boolean(boolT), config.getBoolean("boolA", new Boolean(boolF)));
>   -
>   -           // missing key without default value
>   -           Throwable t = null;
>   -           try {
>   -                   config.getBoolean("numberNotInConfig");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for missing keys", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   -
>   -           // existing key with an incompatible value
>   -           config.setProperty("test.empty", "");
>   -           t = null;
>   -           try {
>   -                   config.getBoolean("test.empty");
>   -           } catch (Throwable T) {
>   -                   t = T;
>   -           }
>   -           assertNotNull("No exception thrown for incompatible
> values", t);
>   -           ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   -   }
>   -
>   -   public void testGetList()
>   -   {
>   -           config.addProperty("number", "1");
>   -           config.addProperty("number", "2");
>   -           List list = config.getList("number");
>   -           assertNotNull("The list is null", list);
>   -           assertEquals("List size", 2, list.size());
>   -           assertTrue("The number 1 is missing from the list",
> list.contains("1"));
>   -           assertTrue("The number 2 is missing from the list",
> list.contains("2"));
>   -
>   -           /*
>   -            *  now test dan's new fix where we get the first scalar
>   -            *  when we access a list valued property
>   -            */
>   -           try
>   -           {
>   -                   config.getString("number");
>   -           }
>   -           catch (NoSuchElementException nsse)
>   -           {
>   -                   fail("Should return a string");
>   -           }
>   -   }
>   -
>   -   public void testGetVector()
>   -   {
>   -           config.addProperty("number", "1");
>   -           config.addProperty("number", "2");
>   -           Vector vector = config.getVector("number");
>   -           assertNotNull("The vector is null", vector);
>   -           assertEquals("Vector size", 2, vector.size());
>   -           assertTrue("The number 1 is missing from the
> vector", vector.contains("1"));
>   -           assertTrue("The number 2 is missing from the
> vector", vector.contains("2"));
>   -
>   -           /*
>   -            *  now test dan's new fix where we get the first scalar
>   -            *  when we access a vector valued property
>   -            */
>   -           try
>   -           {
>   -                   config.getString("number");
>   -           }
>   -           catch (NoSuchElementException nsse)
>   -           {
>   -                   fail("Should return a string");
>   -           }
>   -   }
>   -
>   -   public void testCommaSeparatedString()
>   -   {
>   -           String prop = "hey, that's a test";
>   -           config.setProperty("prop.string", prop);
>   -           try
>   -           {
>   -                   config.getList("prop.string");
>   -           }
>   -           catch (NoSuchElementException nsse)
>   -           {
>   -                   fail("Should return a list");
>   -           }
>   -
>   -           String prop2 = "hey\\, that's a test";
>   -           config.clearProperty("prop.string");
>   -           config.setProperty("prop.string", prop2);
>   -           try
>   -           {
>   -                   config.getString("prop.string");
>   -           }
>   -           catch (NoSuchElementException nsse)
>   -           {
>   -                   fail("Should return a list");
>   -           }
>   -
>   -   }
>   -
>   -   public void testPropertyAccess()
>   -   {
>   -           config.clearProperty("prop.properties");
>   -           config.setProperty("prop.properties", "");
>   -           assertEquals(
>   -                   "This returns an empty Properties object",
>   -                   config.getProperties("prop.properties"),
>   -                   new Properties());
>   -           config.clearProperty("prop.properties");
>   -           config.setProperty("prop.properties", "foo=bar,
> baz=moo, seal=clubber");
>   -
>   -           Properties p = new Properties();
>   -           p.setProperty("foo", "bar");
>   -           p.setProperty("baz", "moo");
>   -           p.setProperty("seal", "clubber");
>   -           assertEquals(
>   -                   "This returns a filled in Properties object",
>   -                   config.getProperties("prop.properties"),
>   -                   p);
>   -   }
>   -
>   -   public void testSubset()
>   -   {
>   -           /*
>   -            * test subset : assure we don't reprocess the data elements
>   -            * when generating the subset
>   -            */
>   -
>   -           String prop = "hey, that's a test";
>   -           String prop2 = "hey\\, that's a test";
>   -           config.setProperty("prop.string", prop2);
>   -           config.setProperty("property.string", "hello");
>   -
>   -           Configuration subEprop = config.subset("prop");
>   -
>   -           assertEquals(
>   -                   "Returns the full string",
>   -                   prop,
>   -                   subEprop.getString("string"));
>   -           try
>   -           {
>   -                   subEprop.getString("string");
>   -           }
>   -           catch (NoSuchElementException nsse)
>   -           {
>   -                   fail("Should return a string");
>   -           }
>   -           try
>   -           {
>   -                   subEprop.getList("string");
>   -           }
>   -           catch (NoSuchElementException nsse)
>   -           {
>   -                   fail("Should return a list");
>   -           }
>   -
>   -           Iterator it = subEprop.getKeys();
>   -           it.next();
>   -           assertFalse(it.hasNext());
>   -
>   -           subEprop = config.subset("prop.");
>   -           it = subEprop.getKeys();
>   -           assertFalse(it.hasNext());
>   -   }
>   -
>   -   public void testInterpolation() throws Exception
>   -   {
>   -           config.setProperty("applicationRoot",
> "/home/applicationRoot");
>   -           config.setProperty("db",
> "${applicationRoot}/db/hypersonic");
>   -           String unInterpolatedValue =
> "${applicationRoot2}/db/hypersonic";
>   -           config.setProperty("dbFailedInterpolate",
> unInterpolatedValue);
>   -           String dbProp = "/home/applicationRoot/db/hypersonic";
>   -
>   -           //construct a new config, using config as the
> defaults config for it.
>   -           BaseConfiguration superProp = config;
>   -
>   -           assertEquals(
>   -                   "Checking interpolated variable",dbProp,
>   -                   superProp.getString("db"));
>   -           assertEquals(
>   -                   "lookup fails, leave variable as is",
>   -                   superProp.getString("dbFailedInterpolate"),
>   -                   unInterpolatedValue);
>   -
>   -           superProp.setProperty("arrayInt", "${applicationRoot}/1");
>   -           String[] arrayInt = superProp.getStringArray("arrayInt");
>   -           assertEquals(
>   -                   "check first entry was interpolated",
>   -                   "/home/applicationRoot/1",
>   -                   arrayInt[0]);
>   -   }
>   -
>   -   public void testMultipleInterpolation() throws Exception
>   -   {
>   -           config.setProperty("test.base-level", "/base-level");
>   -           config.setProperty("test.first-level",
> "${test.base-level}/first-level");
>   -           config.setProperty(
>   -                   "test.second-level",
>   -                   "${test.first-level}/second-level");
>   -           config.setProperty(
>   -                   "test.third-level",
>   -                   "${test.second-level}/third-level");
>   -
>   -           String expectedValue =
>   -                   "/base-level/first-level/second-level/third-level";
>   -
>   -           assertEquals(config.getString("test.third-level"),
> expectedValue);
>   -   }
>   -
>   -   public void testInterpolationLoop() throws Exception
>   -   {
>   -           config.setProperty("test.a", "${test.b}");
>   -           config.setProperty("test.b", "${test.a}");
>   -
>   -           try
>   -           {
>   -                   config.getString("test.a");
>   -           }
>   -           catch (IllegalStateException e)
>   -           {
>   -                   return;
>   -           }
>   +            config.getShort("test.empty");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for incompatible
> values", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   +    }
>
>   -           fail("IllegalStateException should have been thrown
> for looped property references");
>   -   }
>   +    public void testGetLong()
>   +    {
>   +        config.setProperty("numberL", "1");
>   +        long oneL = 1;
>   +        long twoL = 2;
>   +        assertEquals("This returns 1(long)", oneL,
> config.getLong("numberL"));
>   +        assertEquals("This returns 1(long)", oneL,
> config.getLong("numberL", twoL));
>   +        assertEquals("This returns 2(default long)", twoL,
> config.getLong("numberNotInConfig", twoL));
>   +        assertEquals("This returns 1(Long)", new Long(oneL),
> config.getLong("numberL", new Long("2")));
>   +
>   +        // missing key without default value
>   +        Throwable t = null;
>   +        try
>   +        {
>   +            config.getLong("numberNotInConfig");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for missing keys", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   +
>   +        // existing key with an incompatible value
>   +        config.setProperty("test.empty", "");
>   +        t = null;
>   +        try
>   +        {
>   +            config.getLong("test.empty");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for incompatible
> values", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   +    }
>   +
>   +    public void testGetFloat()
>   +    {
>   +        config.setProperty("numberF", "1.0");
>   +        float oneF = 1;
>   +        float twoF = 2;
>   +        assertEquals("This returns 1(float)", oneF,
> config.getFloat("numberF"), 0);
>   +        assertEquals("This returns 1(float)", oneF,
> config.getFloat("numberF", twoF), 0);
>   +        assertEquals("This returns 2(default float)", twoF,
> config.getFloat("numberNotInConfig", twoF), 0);
>   +        assertEquals("This returns 1(Float)", new Float(oneF),
> config.getFloat("numberF", new Float("2")));
>   +
>   +        // missing key without default value
>   +        Throwable t = null;
>   +        try
>   +        {
>   +            config.getFloat("numberNotInConfig");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for missing keys", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   +
>   +        // existing key with an incompatible value
>   +        config.setProperty("test.empty", "");
>   +        t = null;
>   +        try
>   +        {
>   +            config.getFloat("test.empty");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for incompatible
> values", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   +    }
>   +
>   +    public void testGetDouble()
>   +    {
>   +        config.setProperty("numberD", "1.0");
>   +        double oneD = 1;
>   +        double twoD = 2;
>   +        assertEquals("This returns 1(double)", oneD,
> config.getDouble("numberD"), 0);
>   +        assertEquals("This returns 1(double)", oneD,
> config.getDouble("numberD", twoD), 0);
>   +        assertEquals("This returns 2(default double)", twoD,
> config.getDouble("numberNotInConfig", twoD), 0);
>   +        assertEquals("This returns 1(Double)", new
> Double(oneD), config.getDouble("numberD", new Double("2")));
>   +
>   +        // missing key without default value
>   +        Throwable t = null;
>   +        try
>   +        {
>   +            config.getDouble("numberNotInConfig");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for missing keys", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   +
>   +        // existing key with an incompatible value
>   +        config.setProperty("test.empty", "");
>   +        t = null;
>   +        try
>   +        {
>   +            config.getDouble("test.empty");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for incompatible
> values", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   +    }
>   +
>   +    public void testGetBigDecimal()
>   +    {
>   +        config.setProperty("numberBigD", "123.456");
>   +        BigDecimal number = new BigDecimal("123.456");
>   +        BigDecimal defaultValue = new BigDecimal("654.321");
>   +
>   +        assertEquals("Existing key", number,
> config.getBigDecimal("numberBigD"));
>   +        assertEquals("Existing key with default value",
> number, config.getBigDecimal("numberBigD", defaultValue));
>   +        assertEquals("Missing key with default value",
> defaultValue, config.getBigDecimal("numberNotInConfig", defaultValue));
>   +
>   +        // missing key without default value
>   +        Throwable t = null;
>   +        try
>   +        {
>   +            config.getBigDecimal("numberNotInConfig");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for missing keys", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   +
>   +        // existing key with an incompatible value
>   +        config.setProperty("test.empty", "");
>   +        t = null;
>   +        try
>   +        {
>   +            config.getBigDecimal("test.empty");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for incompatible
> values", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   +    }
>   +
>   +    public void testGetBigInteger()
>   +    {
>   +        config.setProperty("numberBigI", "1234567890");
>   +        BigInteger number = new BigInteger("1234567890");
>   +        BigInteger defaultValue = new BigInteger("654321");
>   +
>   +        assertEquals("Existing key", number,
> config.getBigInteger("numberBigI"));
>   +        assertEquals("Existing key with default value",
> number, config.getBigInteger("numberBigI", defaultValue));
>   +        assertEquals("Missing key with default value",
> defaultValue, config.getBigInteger("numberNotInConfig", defaultValue));
>   +
>   +        // missing key without default value
>   +        Throwable t = null;
>   +        try
>   +        {
>   +            config.getBigInteger("numberNotInConfig");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for missing keys", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   +
>   +        // existing key with an incompatible value
>   +        config.setProperty("test.empty", "");
>   +        t = null;
>   +        try
>   +        {
>   +            config.getBigInteger("test.empty");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for incompatible
> values", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   +    }
>   +
>   +    public void testGetString()
>   +    {
>   +        config.setProperty("testString", "The quick brown fox");
>   +        String string = new String("The quick brown fox");
>   +        String defaultValue = new String("jumps over the lazy dog");
>   +
>   +        assertEquals("Existing key", string,
> config.getString("testString"));
>   +        assertEquals("Existing key with default value",
> string, config.getString("testString", defaultValue));
>   +        assertEquals("Missing key with default value",
> defaultValue, config.getString("stringNotInConfig", defaultValue));
>   +
>   +        // missing key without default value
>   +        Throwable t = null;
>   +        try
>   +        {
>   +            config.getString("stringNotInConfig");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for missing keys", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   +    }
>   +
>   +    public void testGetBoolean()
>   +    {
>   +        config.setProperty("boolA", Boolean.TRUE);
>   +        boolean boolT = true, boolF = false;
>   +        assertEquals("This returns true", boolT,
> config.getBoolean("boolA"));
>   +        assertEquals("This returns true, not the default",
> boolT, config.getBoolean("boolA", boolF));
>   +        assertEquals("This returns false(default)", boolF,
> config.getBoolean("boolNotInConfig", boolF));
>   +        assertEquals("This returns true(Boolean)", new
> Boolean(boolT), config.getBoolean("boolA", new Boolean(boolF)));
>   +
>   +        // missing key without default value
>   +        Throwable t = null;
>   +        try
>   +        {
>   +            config.getBoolean("numberNotInConfig");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for missing keys", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> missing keys", missingElementException, t);
>   +
>   +        // existing key with an incompatible value
>   +        config.setProperty("test.empty", "");
>   +        t = null;
>   +        try
>   +        {
>   +            config.getBoolean("test.empty");
>   +        }
>   +        catch (Throwable T)
>   +        {
>   +            t = T;
>   +        }
>   +        assertNotNull("No exception thrown for incompatible
> values", t);
>   +        ObjectAssert.assertInstanceOf("Exception thrown for
> incompatible values", incompatibleElementException, t);
>   +    }
>   +
>   +    public void testGetList()
>   +    {
>   +        config.addProperty("number", "1");
>   +        config.addProperty("number", "2");
>   +        List list = config.getList("number");
>   +        assertNotNull("The list is null", list);
>   +        assertEquals("List size", 2, list.size());
>   +        assertTrue("The number 1 is missing from the list",
> list.contains("1"));
>   +        assertTrue("The number 2 is missing from the list",
> list.contains("2"));
>   +
>   +        /*
>   +         *  now test dan's new fix where we get the first scalar
>   +         *  when we access a list valued property
>   +         */
>   +        try
>   +        {
>   +            config.getString("number");
>   +        }
>   +        catch (NoSuchElementException nsse)
>   +        {
>   +            fail("Should return a string");
>   +        }
>   +    }
>   +
>   +    public void testGetVector()
>   +    {
>   +        config.addProperty("number", "1");
>   +        config.addProperty("number", "2");
>   +        Vector vector = config.getVector("number");
>   +        assertNotNull("The vector is null", vector);
>   +        assertEquals("Vector size", 2, vector.size());
>   +        assertTrue("The number 1 is missing from the vector",
> vector.contains("1"));
>   +        assertTrue("The number 2 is missing from the vector",
> vector.contains("2"));
>   +
>   +        /*
>   +         *  now test dan's new fix where we get the first scalar
>   +         *  when we access a vector valued property
>   +         */
>   +        try
>   +        {
>   +            config.getString("number");
>   +        }
>   +        catch (NoSuchElementException nsse)
>   +        {
>   +            fail("Should return a string");
>   +        }
>   +    }
>   +
>   +    public void testCommaSeparatedString()
>   +    {
>   +        String prop = "hey, that's a test";
>   +        config.setProperty("prop.string", prop);
>   +        try
>   +        {
>   +            config.getList("prop.string");
>   +        }
>   +        catch (NoSuchElementException nsse)
>   +        {
>   +            fail("Should return a list");
>   +        }
>   +
>   +        String prop2 = "hey\\, that's a test";
>   +        config.clearProperty("prop.string");
>   +        config.setProperty("prop.string", prop2);
>   +        try
>   +        {
>   +            config.getString("prop.string");
>   +        }
>   +        catch (NoSuchElementException nsse)
>   +        {
>   +            fail("Should return a list");
>   +        }
>   +
>   +    }
>   +
>   +    public void testPropertyAccess()
>   +    {
>   +        config.clearProperty("prop.properties");
>   +        config.setProperty("prop.properties", "");
>   +        assertEquals(
>   +                "This returns an empty Properties object",
>   +                config.getProperties("prop.properties"),
>   +                new Properties());
>   +        config.clearProperty("prop.properties");
>   +        config.setProperty("prop.properties", "foo=bar,
> baz=moo, seal=clubber");
>   +
>   +        Properties p = new Properties();
>   +        p.setProperty("foo", "bar");
>   +        p.setProperty("baz", "moo");
>   +        p.setProperty("seal", "clubber");
>   +        assertEquals(
>   +                "This returns a filled in Properties object",
>   +                config.getProperties("prop.properties"),
>   +                p);
>   +    }
>   +
>   +    public void testSubset()
>   +    {
>   +        /*
>   +         * test subset : assure we don't reprocess the data elements
>   +         * when generating the subset
>   +         */
>   +
>   +        String prop = "hey, that's a test";
>   +        String prop2 = "hey\\, that's a test";
>   +        config.setProperty("prop.string", prop2);
>   +        config.setProperty("property.string", "hello");
>   +
>   +        Configuration subEprop = config.subset("prop");
>   +
>   +        assertEquals(
>   +                "Returns the full string",
>   +                prop,
>   +                subEprop.getString("string"));
>   +        try
>   +        {
>   +            subEprop.getString("string");
>   +        }
>   +        catch (NoSuchElementException nsse)
>   +        {
>   +            fail("Should return a string");
>   +        }
>   +        try
>   +        {
>   +            subEprop.getList("string");
>   +        }
>   +        catch (NoSuchElementException nsse)
>   +        {
>   +            fail("Should return a list");
>   +        }
>   +
>   +        Iterator it = subEprop.getKeys();
>   +        it.next();
>   +        assertFalse(it.hasNext());
>   +
>   +        subEprop = config.subset("prop.");
>   +        it = subEprop.getKeys();
>   +        assertFalse(it.hasNext());
>   +    }
>   +
>   +    public void testInterpolation() throws Exception
>   +    {
>   +        config.setProperty("applicationRoot", "/home/applicationRoot");
>   +        config.setProperty("db", "${applicationRoot}/db/hypersonic");
>   +        String unInterpolatedValue =
> "${applicationRoot2}/db/hypersonic";
>   +        config.setProperty("dbFailedInterpolate", unInterpolatedValue);
>   +        String dbProp = "/home/applicationRoot/db/hypersonic";
>   +
>   +        //construct a new config, using config as the defaults
> config for it.
>   +        BaseConfiguration superProp = config;
>   +
>   +        assertEquals(
>   +                "Checking interpolated variable", dbProp,
>   +                superProp.getString("db"));
>   +        assertEquals(
>   +                "lookup fails, leave variable as is",
>   +                superProp.getString("dbFailedInterpolate"),
>   +                unInterpolatedValue);
>   +
>   +        superProp.setProperty("arrayInt", "${applicationRoot}/1");
>   +        String[] arrayInt = superProp.getStringArray("arrayInt");
>   +        assertEquals(
>   +                "check first entry was interpolated",
>   +                "/home/applicationRoot/1",
>   +                arrayInt[0]);
>   +    }
>   +
>   +    public void testMultipleInterpolation() throws Exception
>   +    {
>   +        config.setProperty("test.base-level", "/base-level");
>   +        config.setProperty("test.first-level",
> "${test.base-level}/first-level");
>   +        config.setProperty(
>   +                "test.second-level",
>   +                "${test.first-level}/second-level");
>   +        config.setProperty(
>   +                "test.third-level",
>   +                "${test.second-level}/third-level");
>   +
>   +        String expectedValue =
>   +                "/base-level/first-level/second-level/third-level";
>   +
>   +        assertEquals(config.getString("test.third-level"),
> expectedValue);
>   +    }
>   +
>   +    public void testInterpolationLoop() throws Exception
>   +    {
>   +        config.setProperty("test.a", "${test.b}");
>   +        config.setProperty("test.b", "${test.a}");
>   +
>   +        try
>   +        {
>   +            config.getString("test.a");
>   +        }
>   +        catch (IllegalStateException e)
>   +        {
>   +            return;
>   +        }
>   +
>   +        fail("IllegalStateException should have been thrown
> for looped property references");
>   +    }
>
>        public void testSplit()
>        {
>   @@ -554,5 +604,21 @@
>            assertEquals("1st token for '" + s2 + "'", "abc,xyz",
> tokens.get(0));
>        }
>
>   -}
>   +    public void testGetHexadecimalValue()
>   +    {
>   +        config.setProperty("number", "0xFF");
>   +        assertEquals("byte value", (byte) 0xFF,
> config.getByte("number"));
>   +
>   +        config.setProperty("number", "0xFFFF");
>   +        assertEquals("short value", (short) 0xFFFF,
> config.getShort("number"));
>
>   +        config.setProperty("number", "0xFFFFFFFF");
>   +        assertEquals("int value", 0xFFFFFFFF, config.getInt("number"));
>   +
>   +        config.setProperty("number", "0xFFFFFFFFFFFFFFFF");
>   +        assertEquals("long value", 0xFFFFFFFFFFFFFFFFL,
> config.getLong("number"));
>   +
>   +        assertEquals("long value", 0xFFFFFFFFFFFFFFFFL,
> config.getBigInteger("number").longValue());
>   +    }
>   +
>   +}
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to