From d6ac4aba01c6a3bda426192ca4a697bdc81b9ac7 Mon Sep 17 00:00:00 2001 From: Scott M Stark Date: Sat, 9 Apr 2022 00:35:14 -0500 Subject: [PATCH] Enable the CDI Lite LiteExtensionTranslator Signed-off-by: Scott M Stark --- .../org/glassfish/weld/DeploymentImpl.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/DeploymentImpl.java b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/DeploymentImpl.java index ea8535c7d0a..8c21963a609 100644 --- a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/DeploymentImpl.java +++ b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/DeploymentImpl.java @@ -19,6 +19,8 @@ import static com.sun.enterprise.util.Utility.isAnyEmpty; import static com.sun.enterprise.util.Utility.isAnyNull; import static com.sun.enterprise.util.Utility.isEmpty; +import static java.lang.System.getSecurityManager; +import static java.security.AccessController.doPrivileged; import static java.util.Collections.emptyList; import static java.util.logging.Level.FINE; import static org.glassfish.cdi.CDILoggerInfo.CREATING_DEPLOYMENT_ARCHIVE; @@ -42,6 +44,7 @@ import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; +import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; @@ -73,6 +76,9 @@ import com.sun.enterprise.deployment.EjbDescriptor; import jakarta.enterprise.inject.spi.Extension; +import org.jboss.weld.bootstrap.spi.helpers.MetadataImpl; +import org.jboss.weld.lite.extension.translator.BuildCompatibleExtensionLoader; +import org.jboss.weld.lite.extension.translator.LiteExtensionTranslator; /* * Represents a deployment of a CDI (Weld) application. @@ -243,6 +249,22 @@ public Iterable> getExtensions() { } List> extensionsList = new ArrayList<>(); + // Register org.jboss.weld.lite.extension.translator.LiteExtensionTranslator in order to be able to execute build compatible extensions + // Note that we only register this if we discovered at least one implementation of BuildCompatibleExtension + if (!BuildCompatibleExtensionLoader.getBuildCompatibleExtensions().isEmpty()) { + try { + LiteExtensionTranslator extension = getSecurityManager() != null ? doPrivileged(new PrivilegedAction() { + @Override + public LiteExtensionTranslator run() { + return new LiteExtensionTranslator(); + } + }) : new LiteExtensionTranslator(); + extensionsList.add(new MetadataImpl<>(extension)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + for (BeanDeploymentArchive beanDeploymentArchive : getBeanDeploymentArchives()) { if (!(beanDeploymentArchive instanceof RootBeanDeploymentArchive)) { extensions =