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

com.netflix.archaius.test.Archaius2TestConfig Maven / Gradle / Ivy

There is a newer version: 2.8.3
Show newest version
package com.netflix.archaius.test;

import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.function.BiConsumer;

import org.apache.commons.lang3.ClassUtils;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;

import com.netflix.archaius.api.Config;
import com.netflix.archaius.api.ConfigListener;
import com.netflix.archaius.api.Decoder;
import com.netflix.archaius.api.StrInterpolator;
import com.netflix.archaius.api.config.SettableConfig;
import com.netflix.archaius.config.DefaultSettableConfig;

/***
 * JUnit rule which builds an Archaius2 {@link Config} instance using
 * annotations.
 * 
 * 
 *  {@literal @}Rule
 *  public Archaius2TestConfig config = new Archaius2TestConfig();
 *
 *  {@literal @}Test 
 *  {@literal @}TestPropertyOverride({"propName=propValue"})
 *  public void testBasicPropertyResolution() {
 *      assertEquals("propValue", config.getString("propName"));
 *  }
 * 
* * See {@link TestPropertyOverride} for additional usage information. */ public class Archaius2TestConfig implements TestRule, SettableConfig { private TestCompositeConfig testCompositeConfig; private final TestPropertyOverrideAnnotationReader annotationReader = new TestPropertyOverrideAnnotationReader(); @Override public Statement apply(final Statement base, final Description description) { return new Statement() { @Override public void evaluate() throws Throwable { SettableConfig runtimeLevelProperties = new DefaultSettableConfig(); SettableConfig classLevelProperties = new DefaultSettableConfig(); SettableConfig methodLevelProperties = new DefaultSettableConfig(); List> allSuperclasses = ClassUtils.getAllSuperclasses(description.getTestClass()); Collections.reverse(allSuperclasses); for(Class parentClass : allSuperclasses) { classLevelProperties.setProperties(annotationReader.getPropertiesForAnnotation(parentClass.getAnnotation(TestPropertyOverride.class))); } classLevelProperties.setProperties(annotationReader.getPropertiesForAnnotation(description.getTestClass().getAnnotation(TestPropertyOverride.class))); methodLevelProperties.setProperties(annotationReader.getPropertiesForAnnotation(description.getAnnotation(TestPropertyOverride.class))); testCompositeConfig = new TestCompositeConfig(runtimeLevelProperties, classLevelProperties, methodLevelProperties); base.evaluate(); } }; } private String getKey(Description description) { return description.getClassName() + description.getMethodName() + description.getDisplayName(); } @Override public void addListener(ConfigListener listener) { testCompositeConfig.addListener(listener); } @Override public void removeListener(ConfigListener listener) { testCompositeConfig.removeListener(listener); } @Override public Object getRawProperty(String key) { return testCompositeConfig.getRawProperty(key); } @Override public Long getLong(String key) { return testCompositeConfig.getLong(key); } @Override public Long getLong(String key, Long defaultValue) { return testCompositeConfig.getLong(key, defaultValue); } @Override public String getString(String key) { return testCompositeConfig.getString(key); } @Override public String getString(String key, String defaultValue) { return testCompositeConfig.getString(key, defaultValue); } @Override public Double getDouble(String key) { return testCompositeConfig.getDouble(key); } @Override public Double getDouble(String key, Double defaultValue) { return testCompositeConfig.getDouble(key, defaultValue); } @Override public Integer getInteger(String key) { return testCompositeConfig.getInteger(key); } @Override public Integer getInteger(String key, Integer defaultValue) { return testCompositeConfig.getInteger(key, defaultValue); } @Override public Boolean getBoolean(String key) { return testCompositeConfig.getBoolean(key); } @Override public Boolean getBoolean(String key, Boolean defaultValue) { return testCompositeConfig.getBoolean(key, defaultValue); } @Override public Short getShort(String key) { return testCompositeConfig.getShort(key); } @Override public Short getShort(String key, Short defaultValue) { return testCompositeConfig.getShort(key, defaultValue); } @Override public BigInteger getBigInteger(String key) { return testCompositeConfig.getBigInteger(key); } @Override public BigInteger getBigInteger(String key, BigInteger defaultValue) { return testCompositeConfig.getBigInteger(key, defaultValue); } @Override public BigDecimal getBigDecimal(String key) { return testCompositeConfig.getBigDecimal(key); } @Override public BigDecimal getBigDecimal(String key, BigDecimal defaultValue) { return testCompositeConfig.getBigDecimal(key, defaultValue); } @Override public Float getFloat(String key) { return testCompositeConfig.getFloat(key); } @Override public Float getFloat(String key, Float defaultValue) { return testCompositeConfig.getFloat(key, defaultValue); } @Override public Byte getByte(String key) { return testCompositeConfig.getByte(key); } @Override public Byte getByte(String key, Byte defaultValue) { return testCompositeConfig.getByte(key, defaultValue); } @Override public List getList(String key) { return testCompositeConfig.getList(key); } @Override public List getList(String key, Class type) { return testCompositeConfig.getList(key, type); } @Override public List getList(String key, List defaultValue) { return testCompositeConfig.getList(key, defaultValue); } @Override public T get(Class type, String key) { return testCompositeConfig.get(type, key); } @Override public T get(Class type, String key, T defaultValue) { return testCompositeConfig.get(type, key, defaultValue); } @Override public T get(Type type, String key) { return testCompositeConfig.get(type, key); } @Override public T get(Type type, String key, T defaultValue) { return testCompositeConfig.get(type, key, defaultValue); } @Override public boolean containsKey(String key) { return testCompositeConfig.containsKey(key); } @Override public boolean isEmpty() { return testCompositeConfig.isEmpty(); } @Override public Iterator getKeys() { return testCompositeConfig.getKeys(); } @Override public Iterator getKeys(String prefix) { return testCompositeConfig.getKeys(prefix); } @Override public Config getPrefixedView(String prefix) { return testCompositeConfig.getPrefixedView(prefix); } @Override public Config getPrivateView() { return testCompositeConfig.getPrivateView(); } @Override public void setStrInterpolator(StrInterpolator interpolator) { testCompositeConfig.setStrInterpolator(interpolator); } @Override public StrInterpolator getStrInterpolator() { return testCompositeConfig.getStrInterpolator(); } @Override public void setDecoder(Decoder decoder) { testCompositeConfig.setDecoder(decoder); } @Override public Decoder getDecoder() { return testCompositeConfig.getDecoder(); } @Override public T accept(Visitor visitor) { return testCompositeConfig.accept(visitor); } @Override public void setProperties(Config config) { testCompositeConfig.setProperties(config); } @Override public void setProperties(Properties properties) { testCompositeConfig.setProperties(properties); } @Override public void setProperty(String propName, T propValue) { testCompositeConfig.setProperty(propName, propValue); } @Override public void clearProperty(String propName) { testCompositeConfig.clearProperty(propName); } @Override public void forEachProperty(BiConsumer consumer) { testCompositeConfig.forEachProperty(consumer); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy