From 05e897a6b51a28f8eaa016bb6701392fafbdcdd0 Mon Sep 17 00:00:00 2001 From: Vijay N Date: Sun, 6 Jul 2025 10:17:17 +0530 Subject: [PATCH 1/5] No AugmentedConfigurationObjectFactory. Added RuntimeConfigRegistry, used it in ConfigurationObjectFactory. --- .../config/ConfigurationObjectFactory.java | 39 ++++++++++++++++++- .../skife/config/RuntimeConfigRegistry.java | 5 +++ 2 files changed, 43 insertions(+), 1 deletion(-) 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 42e823c0..388961a9 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 @@ 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; @@ -65,7 +70,12 @@ public T buildWithReplacements(final Class configClass, final Map T build(final Class configClass) { - return internalBuild(configClass, null); + final T t = internalBuild(configClass, null); + + logger.info("Calling collectConfigValues"); + collectConfigValues(configClass, t); + + return 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 index be79893d..65a546f7 100644 --- a/config-magic/src/main/java/org/skife/config/RuntimeConfigRegistry.java +++ b/config-magic/src/main/java/org/skife/config/RuntimeConfigRegistry.java @@ -69,4 +69,9 @@ public static Map getAll() { public static Map> getAllBySource() { return Collections.unmodifiableMap(RUNTIME_CONFIGS_BY_SOURCE); } + + public static void clear() { + RUNTIME_CONFIGS.clear(); + RUNTIME_CONFIGS_BY_SOURCE.clear(); + } } From 272f714e07d51becf93df0fa653125023a477f50 Mon Sep 17 00:00:00 2001 From: Vijay N Date: Mon, 7 Jul 2025 15:33:57 +0530 Subject: [PATCH 2/5] Replaced ConfigurationObjectFactory usage with AugmentedConfigurationObjectFactory. --- .idea/misc.xml | 1 + config-magic/pom.xml | 2 +- .../org/skife/config/ConfigReplacements.java | 2 +- .../config/ConfigurationObjectFactory.java | 16 +++++----- .../java/org/skife/config/TestArrays.java | 4 +-- .../java/org/skife/config/TestBadConfig.java | 4 +-- .../TestCaseInsensitiveEnumCoercible.java | 6 ++-- .../java/org/skife/config/TestClasses.java | 32 +++++++++---------- .../java/org/skife/config/TestCoercion.java | 4 +-- .../org/skife/config/TestCollections.java | 4 +-- .../TestConfigurationObjectFactory.java | 22 ++++++------- .../org/skife/config/TestCustomCoercion.java | 4 +-- .../java/org/skife/config/TestDataAmount.java | 4 +-- .../org/skife/config/TestDefaultNull.java | 4 +-- .../org/skife/config/TestDefaultsPresent.java | 4 +-- .../java/org/skife/config/TestEmptyValue.java | 4 +-- .../test/java/org/skife/config/TestEnums.java | 4 +-- .../config/TestExposeMappedReplacements.java | 8 ++--- .../test/java/org/skife/config/TestFile.java | 4 +-- .../org/skife/config/TestMultiConfig.java | 4 +-- .../java/org/skife/config/TestNoFinal.java | 2 +- .../java/org/skife/config/TestTimeSpan.java | 4 +-- .../config/TestVariousPropertyTypes.java | 4 +-- metrics-api/pom.xml | 2 +- .../src/test/java/org/killbill/TestSetup.java | 2 +- .../skeleton/modules/ConfigModule.java | 2 +- 26 files changed, 77 insertions(+), 76 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index e32f2d98..f9efc1d4 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -10,6 +10,7 @@ +