From ee18e184f78615b37c4f70dbbef7d56dece07e93 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Sat, 22 Nov 2025 18:28:38 -0500 Subject: [PATCH 1/6] Catch NCDF instead of using `Class.forName` --- .../main/java/io/avaje/inject/DBeanScopeBuilder.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java b/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java index 182e44e8..bcd77045 100644 --- a/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java +++ b/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java @@ -16,10 +16,10 @@ import java.util.function.Consumer; import java.util.function.Supplier; -import jakarta.inject.Provider; import org.jspecify.annotations.Nullable; import io.avaje.applog.AppLog; +import io.avaje.config.Config; import io.avaje.inject.spi.AvajeModule; import io.avaje.inject.spi.Builder; import io.avaje.inject.spi.ClosePair; @@ -27,6 +27,7 @@ import io.avaje.inject.spi.EnrichBean; import io.avaje.inject.spi.ModuleOrdering; import io.avaje.inject.spi.SuppliedBean; +import jakarta.inject.Provider; /** Build a bean scope with options for shutdown hook and supplying test doubles. */ final class DBeanScopeBuilder implements BeanScopeBuilder.ForTesting { @@ -221,13 +222,11 @@ private ConfigPropertyPlugin defaultPropertyPlugin() { } private boolean detectAvajeConfig() { - if (ModuleLayer.boot().findModule("io.avaje.config").isPresent()) { - return true; - } + try { - Class.forName("io.avaje.config.Configuration", false, classLoader); + Config.asConfiguration(); return true; - } catch (final ClassNotFoundException e) { + } catch (final NoClassDefFoundError e) { return false; } } From 4fdbf7913111f0d130167d1a9895a7d8bd9a0a49 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Sat, 22 Nov 2025 18:41:44 -0500 Subject: [PATCH 2/6] Update DBeanScopeBuilder.java --- inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java b/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java index bcd77045..60d17436 100644 --- a/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java +++ b/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java @@ -222,7 +222,9 @@ private ConfigPropertyPlugin defaultPropertyPlugin() { } private boolean detectAvajeConfig() { - + if (ModuleLayer.boot().findModule("io.avaje.config").isPresent()) { + return true; + } try { Config.asConfiguration(); return true; From 3943a75a94f1fa105d953716aabb874269a9416e Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Sat, 22 Nov 2025 19:28:25 -0500 Subject: [PATCH 3/6] Update DBeanScopeBuilder.java --- inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java b/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java index 60d17436..9adba89c 100644 --- a/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java +++ b/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java @@ -19,7 +19,7 @@ import org.jspecify.annotations.Nullable; import io.avaje.applog.AppLog; -import io.avaje.config.Config; +import io.avaje.config.Configuration; import io.avaje.inject.spi.AvajeModule; import io.avaje.inject.spi.Builder; import io.avaje.inject.spi.ClosePair; @@ -226,7 +226,7 @@ private boolean detectAvajeConfig() { return true; } try { - Config.asConfiguration(); + var __ = Configuration.class; return true; } catch (final NoClassDefFoundError e) { return false; From b493b6a6b7ed6aceae6d9c408ca7ca5c2d010a10 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Sat, 22 Nov 2025 19:29:17 -0500 Subject: [PATCH 4/6] Update DBeanScopeBuilder.java --- inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java b/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java index 9adba89c..a1eb9d20 100644 --- a/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java +++ b/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java @@ -226,8 +226,7 @@ private boolean detectAvajeConfig() { return true; } try { - var __ = Configuration.class; - return true; + return Configuration.class != null; } catch (final NoClassDefFoundError e) { return false; } From 23cc6e88c82c2a2e016f221631886f1ba19aafd5 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Sat, 22 Nov 2025 21:00:48 -0500 Subject: [PATCH 5/6] Update DBeanScopeBuilder.java --- .../io/avaje/inject/DBeanScopeBuilder.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java b/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java index a1eb9d20..d40ac324 100644 --- a/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java +++ b/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java @@ -221,15 +221,19 @@ private ConfigPropertyPlugin defaultPropertyPlugin() { return detectAvajeConfig() ? new DConfigProps() : new DSystemProps(); } - private boolean detectAvajeConfig() { - if (ModuleLayer.boot().findModule("io.avaje.config").isPresent()) { - return true; - } - try { - return Configuration.class != null; - } catch (final NoClassDefFoundError e) { - return false; - } + private static boolean detectAvajeConfig() { + var modules = ModuleLayer.boot(); + return modules + .findModule("io.avaje.inject") + .map(m -> modules.findModule("io.avaje.config").isPresent()) + .orElseGet( + () -> { + try { + return Configuration.class != null; + } catch (NoClassDefFoundError e) { + return false; + } + }); } private void initProfiles() { From f521cf51ec2a5dab20cce956e2a26b0ae7eef5a0 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Wed, 26 Nov 2025 22:46:46 -0500 Subject: [PATCH 6/6] Update ConfigPropertyPlugin.java --- .../main/java/io/avaje/inject/spi/ConfigPropertyPlugin.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/inject/src/main/java/io/avaje/inject/spi/ConfigPropertyPlugin.java b/inject/src/main/java/io/avaje/inject/spi/ConfigPropertyPlugin.java index b620f232..6db58593 100644 --- a/inject/src/main/java/io/avaje/inject/spi/ConfigPropertyPlugin.java +++ b/inject/src/main/java/io/avaje/inject/spi/ConfigPropertyPlugin.java @@ -8,8 +8,7 @@ * Plugin interface which contains the application properties used for wiring. Used with * {@link io.avaje.inject.RequiresProperty} and {@link io.avaje.inject.Profile}. * - *

The plugin is loaded via ServiceLoader and defaults to an implementation that uses - * {@link System#getProperty(String)} and {@link System#getenv(String)}. + * @see InjectExtension */ @NullMarked public interface ConfigPropertyPlugin extends InjectExtension {