Search in sources :

Example 1 with ConfigurationListener

use of org.commonjava.propulsor.config.ConfigurationListener in project indy by Commonjava.

the class DefaultIndyConfigFactory method load.

// private static String configPath = System.getProperty( CONFIG_PATH_PROP, DEFAULT_CONFIG_PATH );
// 
// public static void setConfigPath( final String path )
// {
// configPath = path;
// }
// 
// @PostConstruct
@Override
public synchronized void load(final String configPath) throws ConfigurationException {
    logger.info("\n\n\n\n[CONFIG] Reading Indy configuration in: '{}'\n\nAdding configuration section listeners:", Thread.currentThread().getName());
    logger.info("Adding configuration sections...");
    if (configSections != null) {
        for (final IndyConfigInfo section : configSections) {
            String sectionName = ConfigUtils.getSectionName(section.getClass());
            logger.info("Adding configuration section: {}", sectionName);
            with(sectionName, section);
        }
    }
    final String config = configPath(configPath);
    logger.info("\n\n[CONFIG] Reading configuration in: '{}'\n\nfrom {}", Thread.currentThread().getName(), config);
    File configFile = new File(config);
    if (configFile.isDirectory()) {
        configFile = new File(configFile, "main.conf");
    }
    if (!configFile.exists()) {
        File dir = configFile;
        if (dir.getName().equals("main.conf")) {
            dir = dir.getParentFile();
        }
        logger.warn("Cannot find configuration in: {}. Writing default configurations there for future modification.", dir);
        if (!dir.exists() && !dir.mkdirs()) {
            throw new ConfigurationException("Failed to create configuration directory: %s, in order to write defaults.", dir);
        }
        writeDefaultConfigs(dir);
    }
    List<ConfigurationListener> listeners = new ArrayList<>();
    listeners.add(this);
    if (configListeners != null) {
        configListeners.forEach((listener) -> listeners.add(listener));
    }
    InputStream stream = null;
    try {
        Properties props = getBaseSystemProperties();
        configSections.forEach((section) -> {
            if (section instanceof SystemPropertyProvider) {
                Properties p = ((SystemPropertyProvider) section).getSystemPropertyAdditions();
                p.stringPropertyNames().forEach((name) -> props.setProperty(name, p.getProperty(name)));
            }
        });
        stream = ConfigFileUtils.readFileWithIncludes(config);
        new DotConfConfigurationReader(listeners).loadConfiguration(stream, props);
        System.setProperties(props);
    } catch (final IOException e) {
        throw new ConfigurationException("Cannot open configuration file: {}. Reason: {}", e, configPath, e.getMessage());
    } finally {
        closeQuietly(stream);
    }
    logger.info("[CONFIG] Indy configuration complete for: '{}'.\n\n\n\n", Thread.currentThread().getName());
}
Also used : DefaultConfigurationListener(org.commonjava.propulsor.config.DefaultConfigurationListener) ConfigurationListener(org.commonjava.propulsor.config.ConfigurationListener) SystemPropertyProvider(org.commonjava.indy.conf.SystemPropertyProvider) ConfigurationException(org.commonjava.propulsor.config.ConfigurationException) InputStream(java.io.InputStream) ArrayList(java.util.ArrayList) IOException(java.io.IOException) ConfigUtils.loadStandardConfigProperties(org.commonjava.propulsor.config.ConfigUtils.loadStandardConfigProperties) Properties(java.util.Properties) File(java.io.File) IndyConfigInfo(org.commonjava.indy.conf.IndyConfigInfo) DotConfConfigurationReader(org.commonjava.propulsor.config.dotconf.DotConfConfigurationReader)

Aggregations

File (java.io.File)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 ArrayList (java.util.ArrayList)1 Properties (java.util.Properties)1 IndyConfigInfo (org.commonjava.indy.conf.IndyConfigInfo)1 SystemPropertyProvider (org.commonjava.indy.conf.SystemPropertyProvider)1 ConfigUtils.loadStandardConfigProperties (org.commonjava.propulsor.config.ConfigUtils.loadStandardConfigProperties)1 ConfigurationException (org.commonjava.propulsor.config.ConfigurationException)1 ConfigurationListener (org.commonjava.propulsor.config.ConfigurationListener)1 DefaultConfigurationListener (org.commonjava.propulsor.config.DefaultConfigurationListener)1 DotConfConfigurationReader (org.commonjava.propulsor.config.dotconf.DotConfConfigurationReader)1