JingDAO Tutorial: DAO Configuration

By using the Avalon configuration API, you can also perform per-DAO configuration. An example is given in the DaoConfTestCase unit test and uses our SimpleDao . The configuration file looks like this:

<?xml version="1.0" encoding="ISO-8859-1"?>
<container>
    <manager id="default">
      <daos>
         <dao name="simple" uri="class://org.jadetower.dao.test.daos.impl.SimpleConfDaoImpl">
           <name>Hello World!</name>
         </dao>
      </daos>
    </manager>
</container>
     

Notice the "simple" DAO has it's one XML content. This XML configuration can be in any form and accessed by the DAO implementation via the Avalon configuration API:

package org.jadetower.dao.test.daos.impl;

import org.jadetower.dao.test.daos.SimpleDAO;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;

public class SimpleConfDaoImpl
    implements SimpleDAO, Configurable
{
  protected String m_name = "unconfigured";

  public SimpleConfDaoImpl() {
  }

  public String getName() {
    return m_name;
  }

  public void configure(Configuration configuration) {
    Configuration nameElement = configuration.getChild("name",true);
    m_name = nameElement.getValue(null);
  }
}
     

This allows for more specific configuration for each DAO. In general, using the map-based context provides a simplier, global configuration scheme, but in some cases for complex DAO's or services, you may want to take advantage of the Avalon API.