diff --git a/.idea/misc.xml b/.idea/misc.xml
index cc1e11c6..f9efc1d4 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,5 +1,6 @@
+
@@ -9,6 +10,7 @@
+
\ No newline at end of file
diff --git a/config-magic/pom.xml b/config-magic/pom.xml
index e390893b..38c09805 100644
--- a/config-magic/pom.xml
+++ b/config-magic/pom.xml
@@ -66,7 +66,7 @@
maven-surefire-plugin
-
+
diff --git a/config-magic/src/main/java/org/skife/config/AugmentedConfigurationObjectFactory.java b/config-magic/src/main/java/org/skife/config/AugmentedConfigurationObjectFactory.java
new file mode 100644
index 00000000..f63b4c06
--- /dev/null
+++ b/config-magic/src/main/java/org/skife/config/AugmentedConfigurationObjectFactory.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2020-2025 Equinix, Inc
+ * Copyright 2014-2025 The Billing Project, LLC
+ *
+ * The Billing Project licenses this file to you 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 org.skife.config;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.Properties;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Augmented version of {@link ConfigurationObjectFactory} that collects resolved config properties
+ * at runtime and registers them in {@link RuntimeConfigRegistry}.
+ */
+public class AugmentedConfigurationObjectFactory extends ConfigurationObjectFactory {
+
+ private static final Logger log = LoggerFactory.getLogger(AugmentedConfigurationObjectFactory.class);
+
+ public AugmentedConfigurationObjectFactory(final Properties props) {
+ super(new SimplePropertyConfigSource(props));
+ }
+
+ public AugmentedConfigurationObjectFactory(final ConfigSource configSource) {
+ super(configSource);
+ }
+
+ @Override
+ public T build(final Class configClass) {
+ final T instance = super.build(configClass);
+
+ collectConfigValues(configClass, instance);
+
+ return instance;
+ }
+
+ private void collectConfigValues(final Class configClass, final T instance) {
+ final String configSource = configClass.getSimpleName();
+
+ for (final Method method : configClass.getMethods()) {
+ final Config configAnnotation = method.getAnnotation(Config.class);
+
+ if (configAnnotation != null && method.getParameterCount() == 0) {
+ try {
+ final Object value = method.invoke(instance);
+ final String[] keys = configAnnotation.value();
+ Arrays.stream(keys)
+ .forEach(key -> RuntimeConfigRegistry.put(key, value));
+
+ Arrays.stream(keys)
+ .forEach(key -> RuntimeConfigRegistry.putWithSource(configSource, key, value));
+ } catch (final IllegalAccessException | InvocationTargetException e) {
+ log.warn("Failed to resolve config method: {}", method.getName(), e);
+ }
+ } else if (configAnnotation != null) {
+ log.debug("Skipping config method {} due to parameters", method.getName());
+ }
+ }
+ }
+}
diff --git a/config-magic/src/main/java/org/skife/config/ConfigReplacements.java b/config-magic/src/main/java/org/skife/config/ConfigReplacements.java
index e1bbbd53..fca721a8 100644
--- a/config-magic/src/main/java/org/skife/config/ConfigReplacements.java
+++ b/config-magic/src/main/java/org/skife/config/ConfigReplacements.java
@@ -24,7 +24,7 @@
/**
* If a configuration bean is created with mapped replacement values via
- * {@link ConfigurationObjectFactory#buildWithReplacements(Class, java.util.Map)},
+ * {@link AugmentedConfigurationObjectFactory#buildWithReplacements(Class, java.util.Map)},
* this annotation designates a method which should present the provided Map.
* The map may not be changed and is not necessarily the same instance as the original.
* If a key is provided, the return is instead the value for that key.
diff --git a/config-magic/src/main/java/org/skife/config/ConfigurationObjectFactory.java b/config-magic/src/main/java/org/skife/config/ConfigurationObjectFactory.java
index 50b421ec..abc31872 100755
--- a/config-magic/src/main/java/org/skife/config/ConfigurationObjectFactory.java
+++ b/config-magic/src/main/java/org/skife/config/ConfigurationObjectFactory.java
@@ -19,14 +19,17 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
+import java.util.concurrent.ConcurrentHashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,6 +47,8 @@ public class ConfigurationObjectFactory {
private static final Logger logger = LoggerFactory.getLogger(ConfigurationObjectFactory.class);
+ //private static final Map RUNTIME_CONFIGS = new ConcurrentHashMap<>();
+
private final ConfigSource config;
private final Bully bully;
@@ -66,6 +71,11 @@ public T buildWithReplacements(final Class configClass, final Map T build(final Class configClass) {
return internalBuild(configClass, null);
+
+ /*logger.info("Calling collectConfigValues");
+ collectConfigValues(configClass, t);*/
+
+
}
private T internalBuild(final Class configClass, @Nullable final Map mappedReplacements) {
@@ -112,6 +122,33 @@ private T internalBuild(final Class configClass, @Nullable final Map void collectConfigValues(final Class configClass, final T instance) {
+ //final String configSource = configClass.getSimpleName();
+
+ for (final Method method : configClass.getMethods()) {
+ final Config configAnnotation = method.getAnnotation(Config.class);
+
+ if (configAnnotation != null && method.getParameterCount() == 0) {
+ try {
+ final Object value = method.invoke(instance);
+ final String[] keys = configAnnotation.value();
+ Arrays.stream(keys)
+ .forEach(key -> RuntimeConfigRegistry.put(key, value == null ? "" : value.toString()));
+
+ *//*Arrays.stream(keys)
+ .forEach(key -> RuntimeConfigRegistry.putWithSource(configSource, key, value));*//*
+ } catch (final IllegalAccessException | InvocationTargetException e) {
+ logger.warn("Failed to resolve config method: {}", method.getName(), e);
+ }
+ } else if (configAnnotation != null) {
+ logger.debug("Skipping config method {} due to parameters", method.getName());
+ }
+ }
+
+ logger.info("RUNTIME_CONFIGS updated successfully");
+ //RuntimeConfigRegistry.getAll().forEach((s, s2) -> System.out.println(s + ": " + s2));
+ }*/
+
private Builder buildSimple(final Builder bbBuilder,
final Method method,
final Config annotation,
diff --git a/config-magic/src/main/java/org/skife/config/RuntimeConfigRegistry.java b/config-magic/src/main/java/org/skife/config/RuntimeConfigRegistry.java
new file mode 100644
index 00000000..65a546f7
--- /dev/null
+++ b/config-magic/src/main/java/org/skife/config/RuntimeConfigRegistry.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2020-2025 Equinix, Inc
+ * Copyright 2014-2025 The Billing Project, LLC
+ *
+ * The Billing Project licenses this file to you 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 org.skife.config;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
+
+/**
+ * Registry to capture and expose runtime configuration values.
+ */
+public class RuntimeConfigRegistry {
+
+ private static final Map RUNTIME_CONFIGS = new ConcurrentHashMap<>();
+
+ private static final Map> RUNTIME_CONFIGS_BY_SOURCE = new ConcurrentHashMap<>();
+
+ public static void put(final String key, final Object value) {
+ RUNTIME_CONFIGS.put(key, value == null ? "" : value.toString());
+ }
+
+ public static void putWithSource(final String configSource, final String key, final Object value) {
+ RUNTIME_CONFIGS_BY_SOURCE
+ .computeIfAbsent(configSource, k -> new ConcurrentHashMap<>())
+ .put(key, value == null ? "" : value.toString());
+ }
+
+ public static void putAllWithSource(final String configSource, final Map values) {
+ if (values == null || values.isEmpty()) {
+ return;
+ }
+
+ RUNTIME_CONFIGS_BY_SOURCE
+ .computeIfAbsent(configSource, k -> new ConcurrentHashMap<>())
+ .putAll(values.entrySet()
+ .stream()
+ .collect(Collectors.toMap(Map.Entry::getKey,
+ e -> e.getValue() == null ? "" : e.getValue().toString())));
+ }
+
+ public static String get(final String key) {
+ return RUNTIME_CONFIGS.getOrDefault(key, "");
+ }
+
+ public static Map getBySource(final String source) {
+ return Collections.unmodifiableMap(RUNTIME_CONFIGS_BY_SOURCE.getOrDefault(source, Map.of()));
+ }
+
+ public static Map getAll() {
+ return Collections.unmodifiableMap(RUNTIME_CONFIGS);
+ }
+
+ public static Map> getAllBySource() {
+ return Collections.unmodifiableMap(RUNTIME_CONFIGS_BY_SOURCE);
+ }
+
+ public static void clear() {
+ RUNTIME_CONFIGS.clear();
+ RUNTIME_CONFIGS_BY_SOURCE.clear();
+ }
+}
diff --git a/config-magic/src/test/java/org/skife/config/TestArrays.java b/config-magic/src/test/java/org/skife/config/TestArrays.java
index 74bfa7be..b8017055 100644
--- a/config-magic/src/test/java/org/skife/config/TestArrays.java
+++ b/config-magic/src/test/java/org/skife/config/TestArrays.java
@@ -28,11 +28,11 @@
@Category(ConfigMagicTests.class)
public class TestArrays {
- private ConfigurationObjectFactory cof;
+ private AugmentedConfigurationObjectFactory cof;
@Before
public void setUp() {
- cof = new ConfigurationObjectFactory(new Properties());
+ cof = new AugmentedConfigurationObjectFactory(new Properties());
}
@After
diff --git a/config-magic/src/test/java/org/skife/config/TestBadConfig.java b/config-magic/src/test/java/org/skife/config/TestBadConfig.java
index 7ea3beeb..4923d2e9 100644
--- a/config-magic/src/test/java/org/skife/config/TestBadConfig.java
+++ b/config-magic/src/test/java/org/skife/config/TestBadConfig.java
@@ -27,11 +27,11 @@
@Category(ConfigMagicTests.class)
public class TestBadConfig {
- ConfigurationObjectFactory c = null;
+ AugmentedConfigurationObjectFactory c = null;
@Before
public void setUp() {
- this.c = new ConfigurationObjectFactory(new Properties());
+ this.c = new AugmentedConfigurationObjectFactory(new Properties());
}
@After
diff --git a/config-magic/src/test/java/org/skife/config/TestCaseInsensitiveEnumCoercible.java b/config-magic/src/test/java/org/skife/config/TestCaseInsensitiveEnumCoercible.java
index f7448f11..040ac96f 100644
--- a/config-magic/src/test/java/org/skife/config/TestCaseInsensitiveEnumCoercible.java
+++ b/config-magic/src/test/java/org/skife/config/TestCaseInsensitiveEnumCoercible.java
@@ -29,7 +29,7 @@ public class TestCaseInsensitiveEnumCoercible {
@Test
public void testHappyPath() throws Exception {
- final ConfigurationObjectFactory cof = new ConfigurationObjectFactory(Props.of("creamer", "half_and_half"));
+ final AugmentedConfigurationObjectFactory cof = new AugmentedConfigurationObjectFactory(Props.of("creamer", "half_and_half"));
final Coffee coffee = cof.build(Coffee.class);
assertThat(coffee.getCreamer(), equalTo(Creamer.HALF_AND_HALF));
@@ -37,7 +37,7 @@ public void testHappyPath() throws Exception {
@Test(expected = IllegalStateException.class)
public void testNoMatch() throws Exception {
- final ConfigurationObjectFactory cof = new ConfigurationObjectFactory(Props.of("creamer", "goat_milk"));
+ final AugmentedConfigurationObjectFactory cof = new AugmentedConfigurationObjectFactory(Props.of("creamer", "goat_milk"));
final Coffee coffee = cof.build(Coffee.class);
fail("should have raised an illegal state exception");
@@ -45,7 +45,7 @@ public void testNoMatch() throws Exception {
@Test(expected = IllegalArgumentException.class)
public void testExactMatch() throws Exception {
- final ConfigurationObjectFactory cof = new ConfigurationObjectFactory(Props.of("creamer", "whole_milk"));
+ final ConfigurationObjectFactory cof = new AugmentedConfigurationObjectFactory(Props.of("creamer", "whole_milk"));
cof.addCoercible(new ExactMatchEnumCoercible());
final Coffee coffee = cof.build(Coffee.class);
diff --git a/config-magic/src/test/java/org/skife/config/TestClasses.java b/config-magic/src/test/java/org/skife/config/TestClasses.java
index 8406052b..c816584c 100644
--- a/config-magic/src/test/java/org/skife/config/TestClasses.java
+++ b/config-magic/src/test/java/org/skife/config/TestClasses.java
@@ -30,100 +30,100 @@ public class TestClasses {
@Test
public void testRawType() {
- final WithRawType config = new ConfigurationObjectFactory(Props.of("theClazz", Object.class.getName())).build(WithRawType.class);
+ final WithRawType config = new AugmentedConfigurationObjectFactory(Props.of("theClazz", Object.class.getName())).build(WithRawType.class);
Assert.assertEquals(config.getTheClazz(), Object.class);
}
@Test(expected = IllegalArgumentException.class)
public void testRawTypeNotFound() {
- new ConfigurationObjectFactory(Props.of("theClazz", "does.not.Exist")).build(WithRawType.class);
+ new AugmentedConfigurationObjectFactory(Props.of("theClazz", "does.not.Exist")).build(WithRawType.class);
}
@Test(expected = IllegalArgumentException.class)
public void testRawTypeIllegal() {
- new ConfigurationObjectFactory(Props.of("theClazz", "not a class")).build(WithRawType.class);
+ new AugmentedConfigurationObjectFactory(Props.of("theClazz", "not a class")).build(WithRawType.class);
}
@Test
public void testRawTypeWithDefault() {
- final WithRawTypeAndDefault config = new ConfigurationObjectFactory(new Properties()).build(WithRawTypeAndDefault.class);
+ final WithRawTypeAndDefault config = new AugmentedConfigurationObjectFactory(new Properties()).build(WithRawTypeAndDefault.class);
Assert.assertEquals(config.getTheClazz(), Object.class);
}
@Test
public void testRawTypeWithNullDefault() {
- final WithRawType config = new ConfigurationObjectFactory(new Properties()).build(WithRawType.class);
+ final WithRawType config = new AugmentedConfigurationObjectFactory(new Properties()).build(WithRawType.class);
Assert.assertNull(config.getTheClazz());
}
@Test(expected = IllegalArgumentException.class)
public void testRawTypeWithNotFoundDefault() {
- new ConfigurationObjectFactory(new Properties()).build(WithRawTypeAndUndefinedDefault.class);
+ new AugmentedConfigurationObjectFactory(new Properties()).build(WithRawTypeAndUndefinedDefault.class);
}
@Test(expected = IllegalArgumentException.class)
public void testRawTypeWithIllegalDefault() {
- new ConfigurationObjectFactory(new Properties()).build(WithRawTypeAndIllegalDefault.class);
+ new AugmentedConfigurationObjectFactory(new Properties()).build(WithRawTypeAndIllegalDefault.class);
}
@Test
public void testUnspecifiedType() {
- final WithUnspecifiedType config = new ConfigurationObjectFactory(Props.of("theClazz", Foo.class.getName())).build(WithUnspecifiedType.class);
+ final WithUnspecifiedType config = new AugmentedConfigurationObjectFactory(Props.of("theClazz", Foo.class.getName())).build(WithUnspecifiedType.class);
Assert.assertEquals(config.getTheClazz(), Foo.class);
}
@Test
public void testExtends() {
- final WithExtends config = new ConfigurationObjectFactory(Props.of("theClazz", Foo.class.getName())).build(WithExtends.class);
+ final WithExtends config = new AugmentedConfigurationObjectFactory(Props.of("theClazz", Foo.class.getName())).build(WithExtends.class);
Assert.assertEquals(config.getTheClazz(), Foo.class);
}
@Test
public void testExtendsWithSubClass() {
- final WithExtends config = new ConfigurationObjectFactory(Props.of("theClazz", FooSub.class.getName())).build(WithExtends.class);
+ final WithExtends config = new AugmentedConfigurationObjectFactory(Props.of("theClazz", FooSub.class.getName())).build(WithExtends.class);
Assert.assertEquals(config.getTheClazz(), FooSub.class);
}
@Test(expected = IllegalArgumentException.class)
public void testExtendsWithSuperClass() {
- new ConfigurationObjectFactory(Props.of("theClazz", FooSuper.class.getName())).build(WithExtends.class);
+ new AugmentedConfigurationObjectFactory(Props.of("theClazz", FooSuper.class.getName())).build(WithExtends.class);
}
@Test(expected = IllegalArgumentException.class)
public void testExtendsWithUnrelatedClass() {
- new ConfigurationObjectFactory(Props.of("theClazz", Properties.class.getName())).build(WithExtends.class);
+ new AugmentedConfigurationObjectFactory(Props.of("theClazz", Properties.class.getName())).build(WithExtends.class);
}
@Test
public void testNestedExtends() {
- final WithNestedExtends config = new ConfigurationObjectFactory(Props.of("theClazz", FooList.class.getName())).build(WithNestedExtends.class);
+ final WithNestedExtends config = new AugmentedConfigurationObjectFactory(Props.of("theClazz", FooList.class.getName())).build(WithNestedExtends.class);
Assert.assertEquals(config.getTheClazz(), FooList.class);
}
@Test
public void testNestedExtendsWithSubClass() {
- final WithNestedExtends config = new ConfigurationObjectFactory(Props.of("theClazz", FooSubList.class.getName())).build(WithNestedExtends.class);
+ final WithNestedExtends config = new AugmentedConfigurationObjectFactory(Props.of("theClazz", FooSubList.class.getName())).build(WithNestedExtends.class);
Assert.assertEquals(config.getTheClazz(), FooSubList.class);
}
@Test
public void testNestedExtendsWithSuperClass() {
- final WithNestedExtends config = new ConfigurationObjectFactory(Props.of("theClazz", FooSuperList.class.getName())).build(WithNestedExtends.class);
+ final WithNestedExtends config = new AugmentedConfigurationObjectFactory(Props.of("theClazz", FooSuperList.class.getName())).build(WithNestedExtends.class);
Assert.assertEquals(config.getTheClazz(), FooSuperList.class);
}
@Test
public void testNestedExtendsWithUnrelatedClass() {
- final WithNestedExtends config = new ConfigurationObjectFactory(Props.of("theClazz", StringList.class.getName())).build(WithNestedExtends.class);
+ final WithNestedExtends config = new AugmentedConfigurationObjectFactory(Props.of("theClazz", StringList.class.getName())).build(WithNestedExtends.class);
Assert.assertEquals(config.getTheClazz(), StringList.class);
}
diff --git a/config-magic/src/test/java/org/skife/config/TestCoercion.java b/config-magic/src/test/java/org/skife/config/TestCoercion.java
index e66dadac..f9d1fc62 100644
--- a/config-magic/src/test/java/org/skife/config/TestCoercion.java
+++ b/config-magic/src/test/java/org/skife/config/TestCoercion.java
@@ -31,11 +31,11 @@
@Category(ConfigMagicTests.class)
public class TestCoercion {
- private ConfigurationObjectFactory c = null;
+ private AugmentedConfigurationObjectFactory c = null;
@Before
public void setUp() {
- this.c = new ConfigurationObjectFactory(new Properties() {{
+ this.c = new AugmentedConfigurationObjectFactory(new Properties() {{
setProperty("the-url", "http://github.org/brianm/config-magic");
}});
}
diff --git a/config-magic/src/test/java/org/skife/config/TestCollections.java b/config-magic/src/test/java/org/skife/config/TestCollections.java
index 082aeb10..4293ef66 100644
--- a/config-magic/src/test/java/org/skife/config/TestCollections.java
+++ b/config-magic/src/test/java/org/skife/config/TestCollections.java
@@ -35,11 +35,11 @@
@Category(ConfigMagicTests.class)
public class TestCollections {
- private ConfigurationObjectFactory cof;
+ private AugmentedConfigurationObjectFactory cof;
@Before
public void setUp() {
- cof = new ConfigurationObjectFactory(new Properties());
+ cof = new AugmentedConfigurationObjectFactory(new Properties());
}
@After
diff --git a/config-magic/src/test/java/org/skife/config/TestConfigurationObjectFactory.java b/config-magic/src/test/java/org/skife/config/TestConfigurationObjectFactory.java
index 0ac2a097..f962ab72 100755
--- a/config-magic/src/test/java/org/skife/config/TestConfigurationObjectFactory.java
+++ b/config-magic/src/test/java/org/skife/config/TestConfigurationObjectFactory.java
@@ -36,7 +36,7 @@ public class TestConfigurationObjectFactory {
@Test
public void testMultipleReplacements() throws Exception {
- final ConfigurationObjectFactory c = new ConfigurationObjectFactory(new Properties() {{
+ final ConfigurationObjectFactory c = new AugmentedConfigurationObjectFactory(new Properties() {{
setProperty("another-option.a.1", "A1");
setProperty("another-option.a.2", "A2");
setProperty("another-option.b.1", "B1");
@@ -71,7 +71,7 @@ public void testMultipleReplacements() throws Exception {
public void testReplacement() throws Exception {
final Map replacementsMap = new HashMap();
replacementsMap.put("type", "first");
- final ConfigurationObjectFactory c = new ConfigurationObjectFactory(new Properties() {{
+ final ConfigurationObjectFactory c = new AugmentedConfigurationObjectFactory(new Properties() {{
setProperty("option.first", "1st");
setProperty("option.second", "2nd");
}});
@@ -85,7 +85,7 @@ public void testReplacement() throws Exception {
@Test
public void testFoo() throws Exception {
- final ConfigurationObjectFactory c = new ConfigurationObjectFactory(new Properties() {{
+ final ConfigurationObjectFactory c = new AugmentedConfigurationObjectFactory(new Properties() {{
setProperty("hello", "world");
setProperty("theValue", "value");
}});
@@ -95,7 +95,7 @@ public void testFoo() throws Exception {
@Test
public void testEnum() throws Exception {
- final ConfigurationObjectFactory c = new ConfigurationObjectFactory(new Properties() {{
+ final ConfigurationObjectFactory c = new AugmentedConfigurationObjectFactory(new Properties() {{
setProperty("option.one", "1");
setProperty("option.two", "2");
}});
@@ -107,7 +107,7 @@ public void testEnum() throws Exception {
@Test
public void testMultiParameters() throws Exception {
- final ConfigurationObjectFactory c = new ConfigurationObjectFactory(new Properties() {{
+ final ConfigurationObjectFactory c = new AugmentedConfigurationObjectFactory(new Properties() {{
setProperty("another-option.one.a", "1-x");
setProperty("another-option.two.b", "2-y");
}});
@@ -119,21 +119,21 @@ public void testMultiParameters() throws Exception {
@Test
public void testDefaultValue() throws Exception {
- final ConfigurationObjectFactory c = new ConfigurationObjectFactory(new Properties());
+ final ConfigurationObjectFactory c = new AugmentedConfigurationObjectFactory(new Properties());
final Thing t = c.build(Thing.class);
assertEquals(t.getName(), "woof");
}
@Test
public void testDefaultViaImpl() throws Exception {
- final ConfigurationObjectFactory c = new ConfigurationObjectFactory(new Properties());
+ final ConfigurationObjectFactory c = new AugmentedConfigurationObjectFactory(new Properties());
final Config2 config = c.build(Config2.class);
assertEquals(config.getOption(), "default");
}
@Test
public void testProvidedOverridesDefault() throws Exception {
- final ConfigurationObjectFactory c = new ConfigurationObjectFactory(new Properties() {{
+ final ConfigurationObjectFactory c = new AugmentedConfigurationObjectFactory(new Properties() {{
setProperty("option", "provided");
}});
@@ -143,7 +143,7 @@ public void testProvidedOverridesDefault() throws Exception {
@Test
public void testMissingDefault() throws Exception {
- final ConfigurationObjectFactory c = new ConfigurationObjectFactory(new Properties());
+ final ConfigurationObjectFactory c = new AugmentedConfigurationObjectFactory(new Properties());
try {
c.build(Config3.class);
fail("Expected exception due to missing value");
@@ -153,7 +153,7 @@ public void testMissingDefault() throws Exception {
@Test
public void testDetectsAbstractMethod() throws Exception {
- final ConfigurationObjectFactory c = new ConfigurationObjectFactory(new Properties());
+ final ConfigurationObjectFactory c = new AugmentedConfigurationObjectFactory(new Properties());
try {
c.build(Config4.class);
fail("Expected exception due to abstract method without @Config annotation");
@@ -163,7 +163,7 @@ public void testDetectsAbstractMethod() throws Exception {
@Test
public void testTypes() {
- final ConfigurationObjectFactory c = new ConfigurationObjectFactory(new Properties() {{
+ final ConfigurationObjectFactory c = new AugmentedConfigurationObjectFactory(new Properties() {{
setProperty("stringOption", "a string");
setProperty("booleanOption", "true");
setProperty("boxedBooleanOption", "true");
diff --git a/config-magic/src/test/java/org/skife/config/TestCustomCoercion.java b/config-magic/src/test/java/org/skife/config/TestCustomCoercion.java
index 2b136650..4270b028 100644
--- a/config-magic/src/test/java/org/skife/config/TestCustomCoercion.java
+++ b/config-magic/src/test/java/org/skife/config/TestCustomCoercion.java
@@ -32,7 +32,7 @@ public class TestCustomCoercion {
@Test(expected = IllegalStateException.class)
public void testNoConverterConfig() {
- final ConfigurationObjectFactory c = new ConfigurationObjectFactory(new Properties() {{
+ final ConfigurationObjectFactory c = new AugmentedConfigurationObjectFactory(new Properties() {{
setProperty("the-url", "http://github.org/brianm/config-magic");
}});
@@ -41,7 +41,7 @@ public void testNoConverterConfig() {
@Test
public void testWithConverterConfig() {
- final ConfigurationObjectFactory c = new ConfigurationObjectFactory(new Properties() {{
+ final ConfigurationObjectFactory c = new AugmentedConfigurationObjectFactory(new Properties() {{
setProperty("the-url", "http://github.org/brianm/config-magic");
}});
diff --git a/config-magic/src/test/java/org/skife/config/TestDataAmount.java b/config-magic/src/test/java/org/skife/config/TestDataAmount.java
index 88543b52..d584cb7f 100644
--- a/config-magic/src/test/java/org/skife/config/TestDataAmount.java
+++ b/config-magic/src/test/java/org/skife/config/TestDataAmount.java
@@ -28,11 +28,11 @@
@Category(ConfigMagicTests.class)
public class TestDataAmount {
- private ConfigurationObjectFactory cof;
+ private AugmentedConfigurationObjectFactory cof;
@Before
public void setUp() {
- cof = new ConfigurationObjectFactory(new Properties());
+ cof = new AugmentedConfigurationObjectFactory(new Properties());
}
@After
diff --git a/config-magic/src/test/java/org/skife/config/TestDefaultNull.java b/config-magic/src/test/java/org/skife/config/TestDefaultNull.java
index 945c2906..a0157e8c 100644
--- a/config-magic/src/test/java/org/skife/config/TestDefaultNull.java
+++ b/config-magic/src/test/java/org/skife/config/TestDefaultNull.java
@@ -28,11 +28,11 @@
@Category(ConfigMagicTests.class)
public class TestDefaultNull {
- private ConfigurationObjectFactory cof = null;
+ private AugmentedConfigurationObjectFactory cof = null;
@Before
public void setUp() {
- cof = new ConfigurationObjectFactory(new Properties());
+ cof = new AugmentedConfigurationObjectFactory(new Properties());
}
@After
diff --git a/config-magic/src/test/java/org/skife/config/TestDefaultsPresent.java b/config-magic/src/test/java/org/skife/config/TestDefaultsPresent.java
index 698941db..d26bf851 100644
--- a/config-magic/src/test/java/org/skife/config/TestDefaultsPresent.java
+++ b/config-magic/src/test/java/org/skife/config/TestDefaultsPresent.java
@@ -28,11 +28,11 @@
@Category(ConfigMagicTests.class)
public class TestDefaultsPresent {
- private ConfigurationObjectFactory cof = null;
+ private AugmentedConfigurationObjectFactory cof = null;
@Before
public void setUp() {
- cof = new ConfigurationObjectFactory(new Properties());
+ cof = new AugmentedConfigurationObjectFactory(new Properties());
}
@After
diff --git a/config-magic/src/test/java/org/skife/config/TestEmptyValue.java b/config-magic/src/test/java/org/skife/config/TestEmptyValue.java
index c32b1972..e79dd84a 100644
--- a/config-magic/src/test/java/org/skife/config/TestEmptyValue.java
+++ b/config-magic/src/test/java/org/skife/config/TestEmptyValue.java
@@ -28,11 +28,11 @@
@Category(ConfigMagicTests.class)
public class TestEmptyValue {
- private ConfigurationObjectFactory cof = null;
+ private AugmentedConfigurationObjectFactory cof = null;
@Before
public void setUp() {
- cof = new ConfigurationObjectFactory(new Properties());
+ cof = new AugmentedConfigurationObjectFactory(new Properties());
}
@After
diff --git a/config-magic/src/test/java/org/skife/config/TestEnums.java b/config-magic/src/test/java/org/skife/config/TestEnums.java
index e522dd90..bef1975b 100644
--- a/config-magic/src/test/java/org/skife/config/TestEnums.java
+++ b/config-magic/src/test/java/org/skife/config/TestEnums.java
@@ -28,11 +28,11 @@
@Category(ConfigMagicTests.class)
public class TestEnums {
- private ConfigurationObjectFactory cof;
+ private AugmentedConfigurationObjectFactory cof;
@Before
public void setUp() {
- cof = new ConfigurationObjectFactory(new Properties());
+ cof = new AugmentedConfigurationObjectFactory(new Properties());
}
@After
diff --git a/config-magic/src/test/java/org/skife/config/TestExposeMappedReplacements.java b/config-magic/src/test/java/org/skife/config/TestExposeMappedReplacements.java
index 3470c33a..0761b8fb 100644
--- a/config-magic/src/test/java/org/skife/config/TestExposeMappedReplacements.java
+++ b/config-magic/src/test/java/org/skife/config/TestExposeMappedReplacements.java
@@ -35,7 +35,7 @@ public void testExposeReplacements() {
final Properties properties = new Properties();
properties.put("wat.1", "xyzzy");
- final ConfigurationObjectFactory factory = new ConfigurationObjectFactory(properties);
+ final ConfigurationObjectFactory factory = new AugmentedConfigurationObjectFactory(properties);
final Map map = new HashMap();
map.put("a", "1");
@@ -48,7 +48,7 @@ public void testExposeReplacements() {
@Test
public void testNoReplacements() {
- final ConfigurationObjectFactory factory = new ConfigurationObjectFactory(new Properties());
+ final ConfigurationObjectFactory factory = new AugmentedConfigurationObjectFactory(new Properties());
final ReplacementConfig config = factory.build(ReplacementConfig.class);
assertTrue(config.getMap().isEmpty());
@@ -56,7 +56,7 @@ public void testNoReplacements() {
@Test
public void testKeyReplacement() {
- final ConfigurationObjectFactory factory = new ConfigurationObjectFactory(new Properties());
+ final ConfigurationObjectFactory factory = new AugmentedConfigurationObjectFactory(new Properties());
final Map map = new HashMap();
map.put("a", "1");
@@ -69,7 +69,7 @@ public void testKeyReplacement() {
@Test
public void testDefaultValues() {
- final ConfigurationObjectFactory factory = new ConfigurationObjectFactory(new Properties());
+ final ConfigurationObjectFactory factory = new AugmentedConfigurationObjectFactory(new Properties());
final ReplacementConfig config = factory.build(ReplacementConfig.class);
assertEquals(null, config.getDefaultNull());
assertEquals(3, config.getDefault3());
diff --git a/config-magic/src/test/java/org/skife/config/TestFile.java b/config-magic/src/test/java/org/skife/config/TestFile.java
index 32b3e506..a12dbe00 100644
--- a/config-magic/src/test/java/org/skife/config/TestFile.java
+++ b/config-magic/src/test/java/org/skife/config/TestFile.java
@@ -29,11 +29,11 @@
@Category(ConfigMagicTests.class)
public class TestFile {
- private ConfigurationObjectFactory cof;
+ private AugmentedConfigurationObjectFactory cof;
@Before
public void setUp() {
- cof = new ConfigurationObjectFactory(new Properties() {{
+ cof = new AugmentedConfigurationObjectFactory(new Properties() {{
setProperty("file2", "..");
}});
}
diff --git a/config-magic/src/test/java/org/skife/config/TestMultiConfig.java b/config-magic/src/test/java/org/skife/config/TestMultiConfig.java
index 8525d220..84537bbc 100644
--- a/config-magic/src/test/java/org/skife/config/TestMultiConfig.java
+++ b/config-magic/src/test/java/org/skife/config/TestMultiConfig.java
@@ -31,11 +31,11 @@
@Category(ConfigMagicTests.class)
public class TestMultiConfig {
- ConfigurationObjectFactory c = null;
+ AugmentedConfigurationObjectFactory c = null;
@Before
public void setUp() {
- this.c = new ConfigurationObjectFactory(new Properties() {{
+ this.c = new AugmentedConfigurationObjectFactory(new Properties() {{
setProperty("singleOption", "the-single-value");
setProperty("multiOption1", "the-multi-option1-value");
setProperty("multiOption2", "the-multi-option2-value");
diff --git a/config-magic/src/test/java/org/skife/config/TestNoFinal.java b/config-magic/src/test/java/org/skife/config/TestNoFinal.java
index 84e616d8..8c581e65 100644
--- a/config-magic/src/test/java/org/skife/config/TestNoFinal.java
+++ b/config-magic/src/test/java/org/skife/config/TestNoFinal.java
@@ -27,7 +27,7 @@ public class TestNoFinal {
@Test(expected = IllegalArgumentException.class)
public void testExplodeOnFinal() {
- final ConfigurationObjectFactory cof = new ConfigurationObjectFactory(new Properties());
+ final ConfigurationObjectFactory cof = new AugmentedConfigurationObjectFactory(new Properties());
cof.build(EmptyClass.class);
}
diff --git a/config-magic/src/test/java/org/skife/config/TestTimeSpan.java b/config-magic/src/test/java/org/skife/config/TestTimeSpan.java
index 0fdc34c1..f31d2484 100644
--- a/config-magic/src/test/java/org/skife/config/TestTimeSpan.java
+++ b/config-magic/src/test/java/org/skife/config/TestTimeSpan.java
@@ -29,11 +29,11 @@
@Category(ConfigMagicTests.class)
public class TestTimeSpan {
- private ConfigurationObjectFactory cof;
+ private AugmentedConfigurationObjectFactory cof;
@Before
public void setUp() {
- cof = new ConfigurationObjectFactory(new Properties());
+ cof = new AugmentedConfigurationObjectFactory(new Properties());
}
@After
diff --git a/config-magic/src/test/java/org/skife/config/TestVariousPropertyTypes.java b/config-magic/src/test/java/org/skife/config/TestVariousPropertyTypes.java
index c5d175d8..bfe363dd 100644
--- a/config-magic/src/test/java/org/skife/config/TestVariousPropertyTypes.java
+++ b/config-magic/src/test/java/org/skife/config/TestVariousPropertyTypes.java
@@ -28,7 +28,7 @@
@Category(ConfigMagicTests.class)
public class TestVariousPropertyTypes {
- private ConfigurationObjectFactory c = null;
+ private AugmentedConfigurationObjectFactory c = null;
private StrangeConfig sc = null;
@Before
@@ -39,7 +39,7 @@ public void setUp() {
p.setProperty("double.second.property", "double-second-value");
p.setProperty("test.value.property", "test-value-value");
p.setProperty("test.default.property", "test-default-value");
- c = new ConfigurationObjectFactory(p);
+ c = new AugmentedConfigurationObjectFactory(p);
sc = c.buildWithReplacements(StrangeConfig.class, Collections.singletonMap("key", "value"));
}
diff --git a/jdbi/src/test/java/org/killbill/commons/jdbi/guice/TestDataSourceProvider.java b/jdbi/src/test/java/org/killbill/commons/jdbi/guice/TestDataSourceProvider.java
index e5199773..8bf2459b 100644
--- a/jdbi/src/test/java/org/killbill/commons/jdbi/guice/TestDataSourceProvider.java
+++ b/jdbi/src/test/java/org/killbill/commons/jdbi/guice/TestDataSourceProvider.java
@@ -51,7 +51,7 @@
import org.killbill.commons.embeddeddb.mysql.KillBillMariaDbDataSource;
import org.killbill.commons.jdbi.guice.DataSourceProvider.DatabaseType;
import org.mariadb.jdbc.Configuration;
-import org.skife.config.ConfigurationObjectFactory;
+import org.skife.config.AugmentedConfigurationObjectFactory;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
@@ -195,7 +195,7 @@ DaoConfig buildDaoConfig(final DataSourceConnectionPoolingType poolingType, fina
}
DaoConfig buildDaoConfig(final Properties properties) {
- return new ConfigurationObjectFactory(properties).build(DaoConfig.class);
+ return new AugmentedConfigurationObjectFactory(properties).build(DaoConfig.class);
}
private Properties defaultDaoConfigProperties(final DataSourceConnectionPoolingType poolingType, final DataSourceProvider.DatabaseType databaseType) {
diff --git a/metrics-api/pom.xml b/metrics-api/pom.xml
index e99c406f..57132345 100644
--- a/metrics-api/pom.xml
+++ b/metrics-api/pom.xml
@@ -26,5 +26,5 @@
spotbugs-exclude.xml
-
+
diff --git a/pom.xml b/pom.xml
index e36dbe09..00032cea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
org.kill-bill.billing
killbill-oss-parent
- 0.146.39
+ 0.146.59
org.kill-bill.commons
killbill-commons
diff --git a/queue/src/main/java/org/killbill/bus/DefaultPersistentBus.java b/queue/src/main/java/org/killbill/bus/DefaultPersistentBus.java
index da3ae8df..c4b2e89b 100644
--- a/queue/src/main/java/org/killbill/bus/DefaultPersistentBus.java
+++ b/queue/src/main/java/org/killbill/bus/DefaultPersistentBus.java
@@ -66,7 +66,7 @@
import org.killbill.queue.dispatching.BlockingRejectionExecutionHandler;
import org.killbill.queue.dispatching.Dispatcher;
import org.killbill.queue.dispatching.EventEntryDeserializer;
-import org.skife.config.ConfigurationObjectFactory;
+import org.skife.config.AugmentedConfigurationObjectFactory;
import org.skife.jdbi.v2.DBI;
import org.skife.jdbi.v2.IDBI;
import org.slf4j.Logger;
@@ -151,7 +151,7 @@ public Thread newThread(final Runnable r) {
public DefaultPersistentBus(final DataSource dataSource, final Properties properties) {
this(InTransaction.buildDDBI(dataSource),
new DefaultClock(),
- new ConfigurationObjectFactory(properties).buildWithReplacements(PersistentBusConfig.class, Map.of("instanceName", "main")),
+ new AugmentedConfigurationObjectFactory(properties).buildWithReplacements(PersistentBusConfig.class, Map.of("instanceName", "main")),
new NoOpMetricRegistry(),
new DatabaseTransactionNotificationApi());
}
diff --git a/queue/src/main/java/org/killbill/notificationq/DefaultNotificationQueueService.java b/queue/src/main/java/org/killbill/notificationq/DefaultNotificationQueueService.java
index 79cfe24c..a06af823 100644
--- a/queue/src/main/java/org/killbill/notificationq/DefaultNotificationQueueService.java
+++ b/queue/src/main/java/org/killbill/notificationq/DefaultNotificationQueueService.java
@@ -33,7 +33,7 @@
import org.killbill.notificationq.api.NotificationQueue;
import org.killbill.notificationq.api.NotificationQueueConfig;
import org.killbill.queue.InTransaction;
-import org.skife.config.ConfigurationObjectFactory;
+import org.skife.config.AugmentedConfigurationObjectFactory;
import org.skife.config.SimplePropertyConfigSource;
import org.skife.jdbi.v2.DBI;
import org.skife.jdbi.v2.IDBI;
@@ -68,7 +68,7 @@ public DefaultNotificationQueueService(@Named(QUEUE_NAME) final IDBI idbi, final
public DefaultNotificationQueueService(final DataSource dataSource, final Properties properties) {
this(InTransaction.buildDDBI(dataSource),
new DefaultClock(),
- new ConfigurationObjectFactory(new SimplePropertyConfigSource(properties)).buildWithReplacements(NotificationQueueConfig.class, Map.of("instanceName", "main")),
+ new AugmentedConfigurationObjectFactory(new SimplePropertyConfigSource(properties)).buildWithReplacements(NotificationQueueConfig.class, Map.of("instanceName", "main")),
new NoOpMetricRegistry());
}
diff --git a/queue/src/test/java/org/killbill/TestSetup.java b/queue/src/test/java/org/killbill/TestSetup.java
index 3e32fc33..bd957321 100644
--- a/queue/src/test/java/org/killbill/TestSetup.java
+++ b/queue/src/test/java/org/killbill/TestSetup.java
@@ -40,7 +40,7 @@
import org.killbill.notificationq.api.NotificationQueueConfig;
import org.killbill.queue.InTransaction;
import org.skife.config.ConfigSource;
-import org.skife.config.ConfigurationObjectFactory;
+import org.skife.config.AugmentedConfigurationObjectFactory;
import org.skife.config.SimplePropertyConfigSource;
import org.skife.jdbi.v2.DBI;
import org.testng.annotations.AfterClass;
@@ -111,10 +111,10 @@ public void beforeClass() throws Exception {
dbi.setTransactionHandler(new NotificationTransactionHandler(databaseTransactionNotificationApi));
final ConfigSource configSource = new SimplePropertyConfigSource(System.getProperties());
- persistentBusConfig = new ConfigurationObjectFactory(configSource).buildWithReplacements(
+ persistentBusConfig = new AugmentedConfigurationObjectFactory(configSource).buildWithReplacements(
PersistentBusConfig.class,
Map.of("instanceName", "main"));
- notificationQueueConfig = new ConfigurationObjectFactory(configSource).buildWithReplacements(
+ notificationQueueConfig = new AugmentedConfigurationObjectFactory(configSource).buildWithReplacements(
NotificationQueueConfig.class,
Map.of("instanceName", "main"));
}
diff --git a/queue/src/test/java/org/killbill/bus/TestLoadDefaultPersistentBus.java b/queue/src/test/java/org/killbill/bus/TestLoadDefaultPersistentBus.java
index 60f149d5..7b4c2a0d 100644
--- a/queue/src/test/java/org/killbill/bus/TestLoadDefaultPersistentBus.java
+++ b/queue/src/test/java/org/killbill/bus/TestLoadDefaultPersistentBus.java
@@ -34,7 +34,7 @@
import org.killbill.bus.api.PersistentBusConfig;
import org.killbill.commons.eventbus.AllowConcurrentEvents;
import org.killbill.commons.eventbus.Subscribe;
-import org.skife.config.ConfigurationObjectFactory;
+import org.skife.config.AugmentedConfigurationObjectFactory;
import org.skife.jdbi.v2.Handle;
import org.skife.jdbi.v2.TransactionCallback;
import org.skife.jdbi.v2.TransactionStatus;
@@ -69,7 +69,7 @@ public void beforeClass() throws Exception {
properties.setProperty("org.killbill.persistent.bus.main.sleep", "0");
properties.setProperty("org.killbill.persistent.bus.main.sticky", "true");
properties.setProperty("org.killbill.persistent.bus.main.useInflightQ", "true");
- final PersistentBusConfig busConfig = new ConfigurationObjectFactory(properties).buildWithReplacements(PersistentBusConfig.class, Map.of("instanceName", "main"));
+ final PersistentBusConfig busConfig = new AugmentedConfigurationObjectFactory(properties).buildWithReplacements(PersistentBusConfig.class, Map.of("instanceName", "main"));
eventBus = new DefaultPersistentBus(dbi, clock, busConfig, metricRegistry, databaseTransactionNotificationApi);
}
diff --git a/skeleton/src/main/java/org/killbill/commons/skeleton/modules/ConfigModule.java b/skeleton/src/main/java/org/killbill/commons/skeleton/modules/ConfigModule.java
index 10eb067e..f25fa7c1 100644
--- a/skeleton/src/main/java/org/killbill/commons/skeleton/modules/ConfigModule.java
+++ b/skeleton/src/main/java/org/killbill/commons/skeleton/modules/ConfigModule.java
@@ -24,7 +24,7 @@
import java.util.Properties;
import org.skife.config.ConfigSource;
-import org.skife.config.ConfigurationObjectFactory;
+import org.skife.config.AugmentedConfigurationObjectFactory;
import org.skife.config.SimplePropertyConfigSource;
import com.google.inject.AbstractModule;
@@ -63,7 +63,7 @@ public ConfigModule(final Iterable configs, final ConfigSource configSour
@Override
protected void configure() {
for (final Class config : configs) {
- bind(config).toInstance(new ConfigurationObjectFactory(configSource).build(config));
+ bind(config).toInstance(new AugmentedConfigurationObjectFactory(configSource).build(config));
}
}
}