public void configure()

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);
                    }
                }
            }
        }
    }