From 3de72d1239b3aaaf7f50b39b65b6955134471069 Mon Sep 17 00:00:00 2001 From: Matej Novotny Date: Mon, 16 Feb 2026 14:33:29 +0100 Subject: [PATCH] WELD-2833 Weld#addExtensions should not swallow exception when the extension cannot be instantiated --- .../main/java/org/jboss/weld/environment/se/Weld.java | 2 +- .../environment/se/test/builder/WeldBuilderTest.java | 11 +++++++++++ .../environment/se/test/builder/WrongExtension.java | 9 +++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 environments/se/core/src/test/java/org/jboss/weld/environment/se/test/builder/WrongExtension.java diff --git a/environments/se/core/src/main/java/org/jboss/weld/environment/se/Weld.java b/environments/se/core/src/main/java/org/jboss/weld/environment/se/Weld.java index ac0252f5e47..9f948b4b8d9 100644 --- a/environments/se/core/src/main/java/org/jboss/weld/environment/se/Weld.java +++ b/environments/se/core/src/main/java/org/jboss/weld/environment/se/Weld.java @@ -470,7 +470,7 @@ public Weld addExtensions(Class... extensionClasses) { Extension extension = extensionClass.getDeclaredConstructor().newInstance(); addExtension(extension); } catch (Exception ex) { - CommonLogger.LOG.unableToInstantiate(extensionClass, new Object[] {}, ex); + throw CommonLogger.LOG.unableToInstantiate(extensionClass, Arrays.toString(new Object[] {}), ex); } } return this; diff --git a/environments/se/core/src/test/java/org/jboss/weld/environment/se/test/builder/WeldBuilderTest.java b/environments/se/core/src/test/java/org/jboss/weld/environment/se/test/builder/WeldBuilderTest.java index fc0ac3f3171..ad8057b4520 100644 --- a/environments/se/core/src/test/java/org/jboss/weld/environment/se/test/builder/WeldBuilderTest.java +++ b/environments/se/core/src/test/java/org/jboss/weld/environment/se/test/builder/WeldBuilderTest.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.List; @@ -220,6 +221,16 @@ public void testExtensions() { } } + @Test + public void testAddingExtensionWithWrongCtor() { + try (WeldContainer container = new Weld().disableDiscovery().beanClasses(Bar.class).addExtensions(WrongExtension.class) + .initialize()) { + fail("Should have failed because the exception does not have no-args constructor"); + } catch (IllegalStateException e) { + // OK, this is expected + } + } + @Test(expected = IllegalStateException.class) public void testNoBeanArchivesFound() { new Weld().disableDiscovery().initialize(); diff --git a/environments/se/core/src/test/java/org/jboss/weld/environment/se/test/builder/WrongExtension.java b/environments/se/core/src/test/java/org/jboss/weld/environment/se/test/builder/WrongExtension.java new file mode 100644 index 00000000000..b962773e4b8 --- /dev/null +++ b/environments/se/core/src/test/java/org/jboss/weld/environment/se/test/builder/WrongExtension.java @@ -0,0 +1,9 @@ +package org.jboss.weld.environment.se.test.builder; + +import jakarta.enterprise.inject.spi.Extension; + +public class WrongExtension implements Extension { + + public WrongExtension(String string) { + } +}