Config getConfig()

in archaius2-guice/src/main/java/com/netflix/archaius/guice/InternalArchaiusModule.java [154:194]


    Config getConfig(ConfigParameters params, @Raw CompositeConfig config, ConfigLoader loader) throws Exception {
        CompositeConfig applicationLayer = new DefaultCompositeConfig();
        CompositeConfig remoteLayer = new DefaultCompositeConfig();
        
        config.addConfig(RUNTIME_LAYER_NAME,      params.runtimeLayer);
        config.addConfig(REMOTE_LAYER_NAME,       remoteLayer);
        config.addConfig(SYSTEM_LAYER_NAME,       SystemConfig.INSTANCE);
        config.addConfig(ENVIRONMENT_LAYER_NAME,  EnvironmentConfig.INSTANCE);
        config.addConfig(APPLICATION_LAYER_NAME,  applicationLayer);
        config.addConfig(LIBRARIES_LAYER_NAME,    params.librariesLayer);
        
        // Load defaults layer
        if (params.hasDefaultConfigs()) {
            CompositeConfig defaultLayer = new DefaultCompositeConfig();
            config.addConfig(DEFAULT_LAYER_NAME,      defaultLayer);
            for (Config c : params.defaultConfigs) {
                defaultLayer.addConfig(getUniqueName("default"), c);
            }
        }

        if (params.hasOverrideResources()) {
            for (String resourceName : params.overrideResources) {
                applicationLayer.addConfig(resourceName, loader.newLoader().load(resourceName));
            }
        }

        if (params.hasApplicationOverride()) {
            applicationLayer.addConfig(getUniqueName("override"), params.applicationOverride);
        }
        
        applicationLayer.addConfig(params.getConfigName(), loader
                .newLoader()
                .load(params.getConfigName()));

        // Load remote properties
        if (params.hasRemoteLayer()) {
            remoteLayer.addConfig(getUniqueName("remote"), params.remoteLayerProvider.get());
        }
        
        return config;
    }