/**
* Copyright 2016 Netflix, Inc.
* <p/>
* 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
* <p/>
* http://www.apache.org/licenses/LICENSE-2.0
* <p/>
* 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.hystrix.strategy.properties.archaius;
import com.netflix.config.PropertyWrapper;
import com.netflix.hystrix.strategy.properties.HystrixDynamicProperties;
import com.netflix.hystrix.strategy.properties.HystrixDynamicProperty;
/**
* This class should not be imported from any class in core or else Archaius will be loaded.
* @author agentgt
* @ExcludeFromJavadoc
*/
/* package */ public class HystrixDynamicPropertiesArchaius implements HystrixDynamicProperties {
/**
* @ExcludeFromJavadoc
*/
@Override
public HystrixDynamicProperty<String> getString(String name, String fallback) {
return new StringDynamicProperty(name, fallback);
}
/**
* @ExcludeFromJavadoc
*/
@Override
public HystrixDynamicProperty<Integer> getInteger(String name, Integer fallback) {
return new IntegerDynamicProperty(name, fallback);
}
/**
* @ExcludeFromJavadoc
*/
@Override
public HystrixDynamicProperty<Long> getLong(String name, Long fallback) {
return new LongDynamicProperty(name, fallback);
}
/**
* @ExcludeFromJavadoc
*/
@Override
public HystrixDynamicProperty<Boolean> getBoolean(String name, Boolean fallback) {
return new BooleanDynamicProperty(name, fallback);
}
private abstract static class ArchaiusDynamicProperty<T>
extends PropertyWrapper<T> implements HystrixDynamicProperty<T> {
protected ArchaiusDynamicProperty(String propName, T defaultValue) {
super(propName, defaultValue);
}
@Override
public T get() {
return getValue();
}
}
private static class StringDynamicProperty extends ArchaiusDynamicProperty<String> {
protected StringDynamicProperty(String propName, String defaultValue) {
super(propName, defaultValue);
}
@Override
public String getValue() {
return prop.getString(defaultValue);
}
}
private static class IntegerDynamicProperty extends ArchaiusDynamicProperty<Integer> {
protected IntegerDynamicProperty(String propName, Integer defaultValue) {
super(propName, defaultValue);
}
@Override
public Integer getValue() {
return prop.getInteger(defaultValue);
}
}
private static class LongDynamicProperty extends ArchaiusDynamicProperty<Long> {
protected LongDynamicProperty(String propName, Long defaultValue) {
super(propName, defaultValue);
}
@Override
public Long getValue() {
return prop.getLong(defaultValue);
}
}
private static class BooleanDynamicProperty extends ArchaiusDynamicProperty<Boolean> {
protected BooleanDynamicProperty(String propName, Boolean defaultValue) {
super(propName, defaultValue);
}
@Override
public Boolean getValue() {
return prop.getBoolean(defaultValue);
}
}
}