in contrib/java/org/apache/fulcrum/yaafi/framework/configuration/CommonsConfigurationCCPResolver.java [70:208]
public void configure(Configuration conf) throws ConfigurationException
{
super.configure(conf);
configuration = new CompositeConfiguration();
Configuration cfgs[] = conf.getChildren();
if ((cfgs != null && cfgs.length > 0))
{
for (int i=0; i<cfgs.length; i++)
{
Configuration c = cfgs[i];
String name = c.getName();
if (name.equals("resolver"))
{
// skip resolver entry
continue;
}
else if (name.equals("jndi"))
{
// <jndi prefix="java:comp/env"/>
String jndi_context = c.getAttribute("prefix", null);
if (jndi_context == null || jndi_context.length() == 0)
{
throw new ConfigurationException("JNDI Configuration should have a prefix", c);
}
try
{
InitialContext ctx = new InitialContext();
JNDIConfiguration jndi = new JNDIConfiguration(ctx, jndi_context);
configuration.addConfiguration(jndi);
}
catch (NamingException e)
{
throw new ConfigurationException("Could not create JNDI context", c, e);
}
}
else if (name.equals("properties"))
{
String fileName = c.getAttribute("fileName", null);
boolean optional = c.getAttributeAsBoolean("optional", false);
if (fileName == null || fileName.length() == 0)
{
throw new ConfigurationException("Property Configuration should have a file name", c);
}
File confFile = new File(fileName);
if(!confFile.exists())
{
confFile = new File(getApplicationRootDir(), fileName);
}
if (!confFile.exists() && !optional)
{
throw new ConfigurationException("Property Configuration file " + fileName + " does not exist", c);
}
if (confFile.exists())
{
try
{
PropertiesConfiguration prop = new PropertiesConfiguration(confFile);
configuration.addConfiguration(prop);
}
catch (org.apache.commons.configuration2.ConfigurationException e)
{
throw new ConfigurationException("Property Configuration could not be created", c, e);
}
}
}
else if (name.equals("xml"))
{
String fileName = c.getAttribute("fileName", null);
boolean optional = c.getAttributeAsBoolean("optional", false);
if (fileName == null || fileName.length() == 0)
{
throw new ConfigurationException("XML Configuration should have a file name", c);
}
File confFile = new File(fileName);
if(!confFile.exists())
{
confFile = new File(getApplicationRootDir(), fileName);
}
if (!confFile.exists() && !optional)
{
throw new ConfigurationException("XML Configuration file " + fileName + " does not exist", c);
}
if (confFile.exists())
{
try
{
XMLConfiguration xml = new XMLConfiguration(confFile);
configuration.addConfiguration(xml);
}
catch (org.apache.commons.configuration2.ConfigurationException e)
{
throw new ConfigurationException("XML Configuration could not be created", c, e);
}
}
}
else if (name.equals("system"))
{
SystemConfiguration system = new SystemConfiguration();
configuration.addConfiguration(system);
}
/*
else if (name.equals("database"))
{
// <database table="config" keyColumn="col_key" valueColumn="col_value" />
String table = c.getAttribute("table", null);
String keyColumn = c.getAttribute("keyColumn", null);
String valueColumn = c.getAttribute("valueColumn", null);
}
*/
else
{
String value = c.getValue();
if (value != null)
{
configuration.addProperty(name, value);
}
else
{
throw new ConfigurationException("Invalid configuration key: " + name, c);
}
}
}
}
}