private static void duplicateCseConfigToServicecomb(ConcurrentCompositeConfiguration compositeConfiguration, AbstractConfiguration source, String sourceName) { duplicateCseConfigToServicecomb(source); compositeConfiguration.addConfiguration(source, sourceName); }
public static ConcurrentCompositeConfiguration createLocalConfig(List<ConfigModel> configModelList) { ConcurrentCompositeConfiguration config = new ConcurrentCompositeConfiguration(); duplicateCseConfigToServicecomb(config, new ConcurrentMapConfiguration(new SystemConfiguration()), "configFromSystem"); duplicateCseConfigToServicecomb(config, convertEnvVariable(new ConcurrentMapConfiguration(new EnvironmentConfiguration())), "configFromEnvironment"); // If there is extra configurations, add it into config. EXTRA_CONFIG_MAP.entrySet() .stream() .filter(mapEntry -> !mapEntry.getValue().isEmpty()) .forEachOrdered(configMapEntry -> duplicateCseConfigToServicecomb(config, new ConcurrentMapConfiguration(configMapEntry.getValue()), configMapEntry.getKey())); // we have already copy the cse config to the serviceComb config when we load the config from local yaml files // hence, we do not need duplicate copy it. config.addConfiguration( new DynamicConfiguration( new MicroserviceConfigurationSource(configModelList), new NeverStartPollingScheduler()), "configFromYamlFile"); duplicateCseConfigToServicecombAtFront(config, new ConcurrentMapConfiguration(ConfigMapping.getConvertedMap(config)), "configFromMapping"); return config; }
/** * Add a child configuration without a name. Make a call to {@link #addConfiguration(AbstractConfiguration, String)} * with the name being null. * * @param config the configuration to add */ public final void addConfiguration(AbstractConfiguration config) { addConfiguration(config, null); }
/** * Add a child configuration without a name. Make a call to {@link #addConfiguration(AbstractConfiguration, String)} * with the name being null. * * @param config the configuration to add */ public final void addConfiguration(AbstractConfiguration config) { addConfiguration(config, null); }
/** * Creates a ConcurrentCompositeConfiguration with a specified <em>container * configuration</em>, and then adds the given collection of configurations. * * @param containerConfiguration container configuration to use * @param configurations the collection of configurations to add */ public ConcurrentCompositeConfiguration(AbstractConfiguration containerConfiguration, Collection<? extends AbstractConfiguration> configurations) { this(containerConfiguration); if (configurations != null) { for (AbstractConfiguration c : configurations) { addConfiguration(c); } } }
/** * Creates a ConcurrentCompositeConfiguration with a specified <em>container * configuration</em>, and then adds the given collection of configurations. * * @param containerConfiguration container configuration to use * @param configurations the collection of configurations to add */ public ConcurrentCompositeConfiguration(AbstractConfiguration containerConfiguration, Collection<? extends AbstractConfiguration> configurations) { this(containerConfiguration); if (configurations != null) { for (AbstractConfiguration c : configurations) { addConfiguration(c); } } }
private static void initializeArchaius() throws ConfigurationException { // Default configuration from classpath of this bundle AbstractConfiguration defaultConfig = new PropertiesConfiguration(ArchaiusConfig.class.getResource(DEFAULT_CONFIGURATION)); ConcurrentCompositeConfiguration finalConfig = new ConcurrentCompositeConfiguration(); // inject OSGi config which is filled via {@link ArchaiusOsgiProperties} finalConfig.addConfiguration(OSGI_CONFIG); finalConfig.addConfiguration(defaultConfig); ConfigurationManager.install(finalConfig); log.debug("Initialized archaius configuration."); }
private static void duplicateCseConfigToServicecomb(ConcurrentCompositeConfiguration compositeConfiguration, AbstractConfiguration source, String sourceName) { duplicateCseConfigToServicecomb(source); compositeConfiguration.addConfiguration(source, sourceName); }
private ConcurrentCompositeConfiguration buildConfiguration() { ConcurrentCompositeConfiguration configuration = new ConcurrentCompositeConfiguration(); configuration.addConfiguration(new ConcurrentMapConfiguration(new SystemConfiguration())); configuration.addConfiguration(this.configuration); configuration.addConfiguration(defaults); return configuration; }
@PostConstruct public void init() { if (init) { return; } if (GLOBAL_DEFAULT == null) { throw new IllegalStateException("setGlobalDefaults() must be set before init() is called"); } baseConfig = new ConcurrentCompositeConfiguration(); baseConfig.addConfiguration(new MapConfiguration(getOverride())); baseConfig.addConfiguration(new MapConfiguration(GLOBAL_DEFAULT)); DynamicPropertyFactory.initWithConfigurationSource(baseConfig); init = true; }
private static AbstractConfiguration createDefaultConfigInstance() { ConcurrentCompositeConfiguration config = new ConcurrentCompositeConfiguration(); try { DynamicURLConfiguration defaultURLConfig = new DynamicURLConfiguration(); config.addConfiguration(defaultURLConfig, URL_CONFIG_NAME); } catch (Throwable e) { logger.warn("Failed to create default dynamic configuration", e); } if (!Boolean.getBoolean(DISABLE_DEFAULT_SYS_CONFIG)) { SystemConfiguration sysConfig = new SystemConfiguration(); config.addConfiguration(sysConfig, SYS_CONFIG_NAME); } if (!Boolean.getBoolean(DISABLE_DEFAULT_ENV_CONFIG)) { EnvironmentConfiguration envConfig = new EnvironmentConfiguration(); config.addConfiguration(envConfig, ENV_CONFIG_NAME); } ConcurrentCompositeConfiguration appOverrideConfig = new ConcurrentCompositeConfiguration(); config.addConfiguration(appOverrideConfig, APPLICATION_PROPERTIES); config.setContainerConfigurationIndex(config.getIndexOfConfiguration(appOverrideConfig)); return config; }
private static AbstractConfiguration createDefaultConfigInstance() { ConcurrentCompositeConfiguration config = new ConcurrentCompositeConfiguration(); try { DynamicURLConfiguration defaultURLConfig = new DynamicURLConfiguration(); config.addConfiguration(defaultURLConfig, URL_CONFIG_NAME); } catch (Throwable e) { logger.warn("Failed to create default dynamic configuration", e); } if (!Boolean.getBoolean(DISABLE_DEFAULT_SYS_CONFIG)) { SystemConfiguration sysConfig = new SystemConfiguration(); config.addConfiguration(sysConfig, SYS_CONFIG_NAME); } if (!Boolean.getBoolean(DISABLE_DEFAULT_ENV_CONFIG)) { EnvironmentConfiguration envConfig = new EnvironmentConfiguration(); config.addConfiguration(envConfig, ENV_CONFIG_NAME); } ConcurrentCompositeConfiguration appOverrideConfig = new ConcurrentCompositeConfiguration(); config.addConfiguration(appOverrideConfig, APPLICATION_PROPERTIES); config.setContainerConfigurationIndex(config.getIndexOfConfiguration(appOverrideConfig)); return config; }
/** * Convert CombinedConfiguration into {@link ConcurrentCompositeConfiguration} as the later has better performance * and thread safety. * * @param config Configuration to be converted */ public static ConcurrentCompositeConfiguration convertToConcurrentCompositeConfiguration(CombinedConfiguration config) { ConcurrentCompositeConfiguration root = new ConcurrentCompositeConfiguration(); IdentityHashMap<Configuration, String> reverseMap = new IdentityHashMap<Configuration, String>(); for (String name: (Set<String>) config.getConfigurationNames()) { Configuration child = config.getConfiguration(name); reverseMap.put(child, name); } for (int i = 0; i < config.getNumberOfConfigurations(); i++) { Configuration child = config.getConfiguration(i); String name = reverseMap.get(child); if (child instanceof CombinedConfiguration) { CombinedConfiguration combinedConf = (CombinedConfiguration) child; ConcurrentCompositeConfiguration newConf = convertToConcurrentCompositeConfiguration(combinedConf); root.addConfiguration(newConf, name); } else { Configuration conf = new ConcurrentMapConfiguration(child); root.addConfiguration((AbstractConfiguration) conf, name); } } return root; }
private static void addArchaiusConfiguration(ConcurrentCompositeConfiguration config) { if (ConfigurationManager.isConfigurationInstalled()) { AbstractConfiguration installedConfiguration = ConfigurationManager .getConfigInstance(); if (installedConfiguration instanceof ConcurrentCompositeConfiguration) { ConcurrentCompositeConfiguration configInstance = (ConcurrentCompositeConfiguration) installedConfiguration; configInstance.addConfiguration(config); } else { installedConfiguration.append(config); if (!(installedConfiguration instanceof AggregatedConfiguration)) { log.warn( "Appending a configuration to an existing non-aggregated installed configuration will have no effect"); } } } else { ConfigurationManager.install(config); } }
public static void main(String[] args) { new SampleApplication(); ConcurrentCompositeConfiguration myConfiguration = (ConcurrentCompositeConfiguration) DynamicPropertyFactory.getInstance().getBackingConfigurationSource(); ConcurrentMapConfiguration subConfig = new ConcurrentMapConfiguration(); subConfig.setProperty("com.netflix.config.samples.SampleApp.SampleBean.name", "A Coffee Bean from Cuba"); myConfiguration.setProperty("com.netflix.config.samples.sampleapp.prop1", "value1"); myConfiguration.addConfiguration(subConfig); System.out.println("Started SampleApplication. Launch JConsole to inspect and update properties."); System.out.println("To see how callback work, update property com.netflix.config.samples.SampleApp.SampleBean.sensitiveBeanData from BaseConfigBean in JConsole"); SampleBean sampleBean = new SampleBean(); // this should show the bean taking properties from two different sources // property "com.netflix.config.samples.SampleApp.SampleBean.numSeeds" is from sampleapp.properites // property "com.netflix.config.samples.SampleApp.SampleBean.name" is from subConfig added above System.out.println("SampleBean:" + sampleBean); System.out.println(sampleBean.getName()); } }
public static void main(String[] args) { new SampleApplication(); ConcurrentCompositeConfiguration myConfiguration = (ConcurrentCompositeConfiguration) DynamicPropertyFactory.getInstance().getBackingConfigurationSource(); ConcurrentMapConfiguration subConfig = new ConcurrentMapConfiguration(); subConfig.setProperty("com.netflix.config.samples.SampleApp.SampleBean.name", "A Coffee Bean from Cuba"); myConfiguration.setProperty("com.netflix.config.samples.sampleapp.prop1", "value1"); myConfiguration.addConfiguration(subConfig); System.out.println("Started SampleApplication. Launch JConsole to inspect and update properties."); System.out.println("To see how callback work, update property com.netflix.config.samples.SampleApp.SampleBean.sensitiveBeanData from BaseConfigBean in JConsole"); SampleBean sampleBean = new SampleBean(); // this should show the bean taking properties from two different sources // property "com.netflix.config.samples.SampleApp.SampleBean.numSeeds" is from sampleapp.properites // property "com.netflix.config.samples.SampleApp.SampleBean.name" is from subConfig added above System.out.println("SampleBean:" + sampleBean); System.out.println(sampleBean.getName()); } }
private void addArchaiusConfiguration(ConcurrentCompositeConfiguration config) { if (ConfigurationManager.isConfigurationInstalled()) { AbstractConfiguration installedConfiguration = ConfigurationManager .getConfigInstance(); if (installedConfiguration instanceof ConcurrentCompositeConfiguration) { ConcurrentCompositeConfiguration configInstance = (ConcurrentCompositeConfiguration) installedConfiguration; configInstance.addConfiguration(config); } else { installedConfiguration.append(config); // if (!(installedConfiguration instanceof AggregatedConfiguration)) { // //log.warn( // // "Appending a configuration to an existing non-aggregated // //installed configuration will have no effect"); // } } } else { ConfigurationManager.install(config); } }
/** * @see ConfigurationProvider#getApplicationConfiguration(String, String, String, com.kixeye.chassis.bootstrap.aws.ServerInstanceContext) */ @Override public AbstractConfiguration getApplicationConfiguration(String environment, String applicationName, String applicationVersion, ServerInstanceContext serverInstanceContext) { String instanceId = serverInstanceContext == null ? "local" : serverInstanceContext.getInstanceId(); String configRoot = getPath(environment, applicationName, applicationVersion); String primaryConfigPath = configRoot += "/config"; String instanceConfigNode = instanceId + "-config"; checkPath(primaryConfigPath); ZooKeeperConfigurationSource source = new ZooKeeperConfigurationSource(curatorFramework, primaryConfigPath); try { source.start(); } catch (Exception e) { source.close(); BootstrapException.zookeeperInitializationFailed(zookeeperConnectionString, primaryConfigPath, e); } logger.debug("Initializing zookeeper configuration from host " + zookeeperConnectionString + " at path " + primaryConfigPath); ConcurrentCompositeConfiguration configuration = new ConcurrentCompositeConfiguration(); configuration.addConfiguration(getServerInstanceSpecificApplicationConfiguration(configRoot, instanceConfigNode)); configuration.addConfiguration(new DynamicWatchedConfiguration(source)); return configuration; }
public static ConcurrentCompositeConfiguration createLocalConfig(List<ConfigModel> configModelList) { ConcurrentCompositeConfiguration config = new ConcurrentCompositeConfiguration(); duplicateCseConfigToServicecomb(config, new ConcurrentMapConfiguration(new SystemConfiguration()), "configFromSystem"); duplicateCseConfigToServicecomb(config, convertEnvVariable(new ConcurrentMapConfiguration(new EnvironmentConfiguration())), "configFromEnvironment"); // If there is extra configurations, add it into config. EXTRA_CONFIG_MAP.entrySet() .stream() .filter(mapEntry -> !mapEntry.getValue().isEmpty()) .forEachOrdered(configMapEntry -> duplicateCseConfigToServicecomb(config, new ConcurrentMapConfiguration(configMapEntry.getValue()), configMapEntry.getKey())); // we have already copy the cse config to the serviceComb config when we load the config from local yaml files // hence, we do not need duplicate copy it. config.addConfiguration( new DynamicConfiguration( new MicroserviceConfigurationSource(configModelList), new NeverStartPollingScheduler()), "configFromYamlFile"); duplicateCseConfigToServicecombAtFront(config, new ConcurrentMapConfiguration(ConfigMapping.getConvertedMap(config)), "configFromMapping"); return config; }
protected void load(boolean refresh) { List<AbstractConfiguration> configs = extensionManager.getExtensionList(CONFIG_KEY, AbstractConfiguration.class); for (AbstractConfiguration config : configs) { config.setDelimiterParsingDisabled(true); } if (refresh) { for (AbstractConfiguration config : configs) { refresh(config); } } baseConfig.clear(); for (AbstractConfiguration config : configs) { baseConfig.addConfiguration(config); } if (refresh) { for (RefreshableFixedDelayPollingScheduler scheduler : schedulers) { scheduler.refresh(); } ArchaiusUtil.addSchedulers(schedulers); } }