You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ep...@apache.org on 2004/07/24 18:26:10 UTC

cvs commit: jakarta-commons/configuration/src/java/org/apache/commons/configuration DatabaseConfiguration.java

epugh       2004/07/24 09:26:10

  Modified:    configuration/src/test/org/apache/commons/configuration
                        TestDatabaseConfiguration.java
               configuration/conf testdb.script dataset.xml
               configuration/src/java/org/apache/commons/configuration
                        DatabaseConfiguration.java
  Log:
  BUG29734 DatabaseConfiguration doesn't support List properties
  
  Revision  Changes    Path
  1.6       +30 -3     jakarta-commons/configuration/src/test/org/apache/commons/configuration/TestDatabaseConfiguration.java
  
  Index: TestDatabaseConfiguration.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/configuration/src/test/org/apache/commons/configuration/TestDatabaseConfiguration.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TestDatabaseConfiguration.java	27 Feb 2004 17:41:34 -0000	1.5
  +++ TestDatabaseConfiguration.java	24 Jul 2004 16:26:10 -0000	1.6
  @@ -19,6 +19,8 @@
   import java.io.FileInputStream;
   import java.sql.SQLException;
   import java.util.Iterator;
  +import java.util.List;
  +
   import javax.sql.DataSource;
   
   import junit.framework.TestCase;
  @@ -30,17 +32,25 @@
   import org.dbunit.operation.DatabaseOperation;
   
   /**
  - * Test for database stored configurations.
  + * Test for database stored configurations.  Note, when running this Unit 
  + * Test in Eclipse it sometimes takes a couple tries.  Otherwise you ma get
  + * database is already in use by another process errors.
    *
    * @version $Revision$, $Date$
    */
   public class TestDatabaseConfiguration extends TestCase
   {
       private DataSource datasource;
  -    private IDataSet dataSet;
  +    private IDataSet dataSet;	
   
       protected void setUp() throws Exception
       {
  +    	/*
  +    	 * Thread.sleep may or may not help with the database is already in
  +    	 * use exception.
  +    	 */
  +    	//Thread.sleep(1000);
  +    	
           // set up the datasource
           BasicDataSource datasource = new BasicDataSource();
           datasource.setDriverClassName("org.hsqldb.jdbcDriver");
  @@ -166,5 +176,22 @@
           DatabaseConfiguration config2 = new DatabaseConfiguration(datasource, "configurations", "name", "key", "value", "testIsEmpty");
           assertTrue("The configuration named 'testIsEmpty' is not empty", config2.isEmpty());
       }
  +    
  +    public void testGetList()
  +    {
  +        DatabaseConfiguration config1 = new DatabaseConfiguration(datasource, "configurationList", "key", "value");
  +        List list = config1.getList("key3");
  +        assertEquals(3,list.size());
  +    }    
  +    
  +    public void testGetKeys()
  +    {
  +        DatabaseConfiguration config1 = new DatabaseConfiguration(datasource, "configurationList", "key", "value");
  +        Iterator i = config1.getKeys();
  +        assertTrue(i.hasNext());
  +        Object key = i.next();
  +        assertEquals("key3",key.toString());
  +        assertFalse(i.hasNext());
  +    }     
   
   }
  
  
  
  1.2       +1 -0      jakarta-commons/configuration/conf/testdb.script
  
  Index: testdb.script
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/configuration/conf/testdb.script,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- testdb.script	18 Jan 2004 16:15:46 -0000	1.1
  +++ testdb.script	24 Jul 2004 16:26:10 -0000	1.2
  @@ -1,5 +1,6 @@
   CREATE TABLE CONFIGURATION(KEY VARCHAR NOT NULL PRIMARY KEY,VALUE VARCHAR)
   CREATE TABLE CONFIGURATIONS(NAME VARCHAR NOT NULL,KEY VARCHAR NOT NULL,VALUE VARCHAR,CONSTRAINT SYS_PK_CONFIGURATIONS PRIMARY KEY(NAME,KEY))
  +CREATE TABLE CONFIGURATIONLIST(ID VARCHAR NOT NULL PRIMARY KEY, KEY VARCHAR NOT NULL,VALUE VARCHAR)
   GRANT ALL ON CLASS "java.lang.Math" TO PUBLIC
   GRANT ALL ON CLASS "org.hsqldb.Library" TO PUBLIC
   CREATE USER SA PASSWORD "" ADMIN
  
  
  
  1.2       +21 -1     jakarta-commons/configuration/conf/dataset.xml
  
  Index: dataset.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/configuration/conf/dataset.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- dataset.xml	18 Jan 2004 16:15:46 -0000	1.1
  +++ dataset.xml	24 Jul 2004 16:26:10 -0000	1.2
  @@ -14,7 +14,7 @@
           <row>
               <value>key2</value>
               <value>value2</value>
  -        </row>
  +        </row>		
       </table>
   
       <table name="configurations">
  @@ -32,5 +32,25 @@
               <value>value2</value>
           </row>
       </table>
  +    <table name="configurationList">
  +		<column>id</column>
  +        <column>key</column>
  +        <column>value</column>
  +        <row>
  +			<value>1</value>
  +            <value>key3</value>
  +            <value>value1</value>
  +        </row>		
  +        <row>
  +			<value>2</value>
  +            <value>key3</value>
  +            <value>value2</value>
  +        </row>			
  +        <row>
  +			<value>3</value>			
  +            <value>key3</value>
  +            <value>value3</value>
  +        </row>			
  +    </table>	
   
   </dataset>
  
  
  
  1.8       +13 -2     jakarta-commons/configuration/src/java/org/apache/commons/configuration/DatabaseConfiguration.java
  
  Index: DatabaseConfiguration.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/configuration/src/java/org/apache/commons/configuration/DatabaseConfiguration.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DatabaseConfiguration.java	24 Jun 2004 14:01:03 -0000	1.7
  +++ DatabaseConfiguration.java	24 Jul 2004 16:26:10 -0000	1.8
  @@ -24,6 +24,8 @@
   import java.util.ArrayList;
   import java.util.Collection;
   import java.util.Iterator;
  +import java.util.List;
  +
   import javax.sql.DataSource;
   
   import org.apache.commons.logging.Log;
  @@ -129,6 +131,15 @@
               {
                   result = rs.getObject(valueColumn);
               }
  +            if(rs.next()){
  +            	List results = new ArrayList();
  +            	results.add(result);
  +            	results.add(rs.getObject(valueColumn));
  +            	while (rs.next()){
  +            		results.add(rs.getObject(valueColumn));
  +            	}
  +            	result = results;
  +            }
           }
           catch (SQLException e)
           {
  @@ -330,7 +341,7 @@
           Collection keys = new ArrayList();
   
           // build the query
  -        StringBuffer query = new StringBuffer("SELECT " + keyColumn + " FROM " + table);
  +        StringBuffer query = new StringBuffer("SELECT DISTINCT " + keyColumn + " FROM " + table);
           if (nameColumn != null)
           {
               query.append(" WHERE " + nameColumn + "=?");
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org