All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.netflix.config.ConfigurationWithPollingSource Maven / Gradle / Ivy

There is a newer version: 2.0.0-rc.7
Show newest version
/**
 * Copyright 2014 Netflix, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.netflix.config;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;

/**
 * This class delegates property read/write to an another configuration but is also attached with 
 * a dynamic configuration source and polling scheduler so that its properties can be changed dynamically
 * at runtime. In other words, if the same property is defined in both the original configuration 
 * and the dynamic configuration source, the value in the original configuration will be overridden.
 * 

* This class can be served as a decorator to an existing configuration to make the property values * dynamic. * * @author awang * */ public class ConfigurationWithPollingSource implements Configuration { private final Configuration config; private final AbstractPollingScheduler scheduler; /** * Create an instance and start polling the configuration source * * @param config Configuration to delegate to * @param source {@link PolledConfigurationSource} to poll get new/changed properties * @param scheduler AbstractPollingScheduler to provide the polling schedule */ public ConfigurationWithPollingSource(Configuration config, PolledConfigurationSource source, AbstractPollingScheduler scheduler) { this.config = config; this.scheduler = scheduler; scheduler.startPolling(source, this); } public final Configuration getConfiguration() { return config; } public final void stopPolling() { scheduler.stop(); } /** * Delegates to the underlying configuration. */ @Override public void addProperty(String key, Object value) { config.addProperty(key, value); } /** * Delegates to the underlying configuration. */ @Override public void clear() { config.clear(); } /** * Delegates to the underlying configuration. */ @Override public void clearProperty(String key) { config.clearProperty(key); } /** * Delegates to the underlying configuration. */ @Override public boolean containsKey(String arg0) { return config.containsKey(arg0); } /** * Delegates to the underlying configuration. */ @Override public BigDecimal getBigDecimal(String key, BigDecimal defaultValue) { return config.getBigDecimal(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public BigDecimal getBigDecimal(String key) { return config.getBigDecimal(key); } /** * Delegates to the underlying configuration. */ @Override public BigInteger getBigInteger(String key, BigInteger defaultValue) { return config.getBigInteger(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public BigInteger getBigInteger(String key) { return config.getBigInteger(key); } /** * Delegates to the underlying configuration. */ @Override public boolean getBoolean(String key, boolean defaultValue) { return config.getBoolean(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public Boolean getBoolean(String key, Boolean defaultValue) { return config.getBoolean(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public boolean getBoolean(String key) { return config.getBoolean(key); } /** * Delegates to the underlying configuration. */ @Override public byte getByte(String key, byte defaultValue) { return config.getByte(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public Byte getByte(String key, Byte defaultValue) { return config.getByte(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public byte getByte(String key) { return config.getByte(key); } /** * Delegates to the underlying configuration. */ @Override public double getDouble(String key, double defaultValue) { return config.getDouble(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public Double getDouble(String key, Double defaultValue) { return config.getDouble(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public double getDouble(String key) { return config.getDouble(key); } /** * Delegates to the underlying configuration. */ @Override public float getFloat(String key, float defaultValue) { return config.getFloat(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public Float getFloat(String key, Float defaultValue) { return config.getFloat(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public float getFloat(String key) { return config.getFloat(key); } /** * Delegates to the underlying configuration. */ @Override public int getInt(String key, int defaultValue) { return config.getInt(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public int getInt(String key) { return config.getInt(key); } /** * Delegates to the underlying configuration. */ @Override public Integer getInteger(String key, Integer defaultValue) { return config.getInteger(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public Iterator getKeys() { return config.getKeys(); } /** * Delegates to the underlying configuration. */ @Override public Iterator getKeys(String prefix) { return config.getKeys(prefix); } /** * Delegates to the underlying configuration. */ @Override public List getList(String key, List defaultValue) { return config.getList(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public List getList(String key) { return config.getList(key); } /** * Delegates to the underlying configuration. */ @Override public long getLong(String key, long defaultValue) { return config.getLong(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public Long getLong(String key, Long defaultValue) { return config.getLong(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public long getLong(String key) { return config.getLong(key); } /** * Delegates to the underlying configuration. */ @Override public Properties getProperties(String key) { return config.getProperties(key); } /** * Delegates to the underlying configuration. */ @Override public Object getProperty(String arg0) { return config.getProperty(arg0); } /** * Delegates to the underlying configuration. */ @Override public short getShort(String key, short defaultValue) { return config.getShort(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public Short getShort(String key, Short defaultValue) { return config.getShort(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public short getShort(String key) { return config.getShort(key); } /** * Delegates to the underlying configuration. */ @Override public String getString(String key, String defaultValue) { return config.getString(key, defaultValue); } /** * Delegates to the underlying configuration. */ @Override public String getString(String key) { return config.getString(key); } /** * Delegates to the underlying configuration. */ @Override public String[] getStringArray(String key) { return config.getStringArray(key); } /** * Delegates to the underlying configuration. */ @Override public boolean isEmpty() { return config.isEmpty(); } /** * Delegates to the underlying configuration. */ @Override public void setProperty(String key, Object value) { config.setProperty(key, value); } /** * Delegates to the underlying configuration. */ @Override public Configuration subset(String prefix) { return config.subset(prefix); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy