This is an automated email from the ASF dual-hosted git repository. struberg pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/deltaspike.git
commit 9ac7ffc95ed3e96301a0d18aeee02d85aa8f9952 Author: Mark Struberg <[email protected]> AuthorDate: Tue Aug 25 14:09:57 2020 +0200 fix setup for Weld3 based containers. Weld seems to fire BeforeBeanDiscovery only once for the whole EAR, but with only the EAR jars on the classpath. So no config in the WAR file can be seen at this early point in the boot process in Wildfly --- .../local/BdaAlternativeEarFileTest.java | 2 +- .../test/core/api/exclude/ExcludeEarFileTest.java | 16 ++++++++++++++- .../test/core/api/exclude/ExcludeWarFileTest.java | 24 ++++++++++++++-------- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeEarFileTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeEarFileTest.java index 380025f..73cd515 100644 --- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeEarFileTest.java +++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeEarFileTest.java @@ -44,7 +44,7 @@ public class BdaAlternativeEarFileTest extends BdaAlternativeTest String simpleName = BdaAlternativeWarFileTest.class.getSimpleName(); String archiveName = simpleName.substring(0, 1).toLowerCase() + simpleName.substring(1); - JavaArchive globalAlternativeConfigJar = ShrinkWrap.create(JavaArchive.class, "globalAlternativesCofig.jar") + JavaArchive globalAlternativeConfigJar = ShrinkWrap.create(JavaArchive.class, "globalAlternativesConfig.jar") .addAsManifestResource(new StringAsset(CONFIG), "apache-deltaspike.properties"); diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeEarFileTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeEarFileTest.java index 8863c5a..8a21635 100644 --- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeEarFileTest.java +++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeEarFileTest.java @@ -18,14 +18,20 @@ */ package org.apache.deltaspike.test.core.api.exclude; +import java.io.IOException; + import org.apache.deltaspike.test.category.EnterpriseArchiveProfileCategory; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.asset.StringAsset; import org.jboss.shrinkwrap.api.spec.EnterpriseArchive; +import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; +import static org.apache.deltaspike.test.core.api.exclude.ExcludeWarFileTest.getConfigContent; + /** * Tests for {@link org.apache.deltaspike.core.api.exclude.Exclude} */ @@ -33,14 +39,22 @@ import org.junit.runner.RunWith; @Category(EnterpriseArchiveProfileCategory.class) public class ExcludeEarFileTest extends ExcludeTest { + @Deployment - public static EnterpriseArchive deployEar() + public static EnterpriseArchive deployEar() throws IOException { //workaround for tomee - the ear-file needs to have the same name as the war-file String simpleName = ExcludeWarFileTest.class.getSimpleName(); String archiveName = simpleName.substring(0, 1).toLowerCase() + simpleName.substring(1); + + // we needs to package the config into the EAR, as Weld3 based app servers boot the whole container + // with just the EAR classloader. No WAR file packaged config is reachable for BeforeBeanDiscovery + JavaArchive excludeConfigJar = ShrinkWrap.create(JavaArchive.class, "excludeConfig.jar") + .addAsManifestResource(new StringAsset(getConfigContent()), "apache-deltaspike.properties"); + return ShrinkWrap.create(EnterpriseArchive.class, archiveName + ".ear") + .addAsLibrary(excludeConfigJar) .addAsModule(ExcludeWarFileTest.deploy()); } } diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeWarFileTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeWarFileTest.java index 156201d..1085322 100644 --- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeWarFileTest.java +++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeWarFileTest.java @@ -35,7 +35,9 @@ import org.junit.AfterClass; import org.junit.runner.RunWith; import javax.enterprise.inject.spi.Extension; -import java.net.URL; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; /** * Tests for {@link org.apache.deltaspike.core.api.exclude.Exclude} @@ -47,7 +49,7 @@ public class ExcludeWarFileTest extends ExcludeTest * X TODO creating a WebArchive is only a workaround because JavaArchive cannot contain other archives. */ @Deployment - public static WebArchive deploy() + public static WebArchive deploy() throws IOException { String simpleName = ExcludeWarFileTest.class.getSimpleName(); String archiveName = simpleName.substring(0, 1).toLowerCase() + simpleName.substring(1); @@ -55,16 +57,12 @@ public class ExcludeWarFileTest extends ExcludeTest // in case the Arquillian adapter doesn't properly handle resources on the classpath ProjectStageProducer.setProjectStage(ProjectStage.Production); - URL fileUrl = ExcludeWarFileTest.class.getClassLoader() - .getResource("META-INF/apache-deltaspike.properties"); - JavaArchive testJar = ShrinkWrap.create(JavaArchive.class, "excludeTest.jar") .addPackage(ExcludeWarFileTest.class.getPackage()) .addPackage(TestClassDeactivator.class.getPackage()) - .addAsManifestResource(FileUtils.getFileForURL(fileUrl.toString())) - .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") - .addAsResource(new StringAsset("org.apache.deltaspike.ProjectStage = Production"), - "apache-deltaspike.properties"); // when deployed on some remote container; + .addAsManifestResource(new StringAsset(getConfigContent()), + "apache-deltaspike.properties") // when deployed on some remote container; + .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); return ShrinkWrap.create(WebArchive.class, archiveName + ".war") .addAsLibraries(ArchiveUtils.getDeltaSpikeCoreArchive()) @@ -73,6 +71,14 @@ public class ExcludeWarFileTest extends ExcludeTest .addAsServiceProvider(Extension.class, ExcludeExtension.class); } + public static String getConfigContent() throws IOException + { + byte[] configContent = Files.readAllBytes(FileUtils.getFileForURL(ExcludeWarFileTest.class.getClassLoader() + .getResource("META-INF/apache-deltaspike.properties").toString()).toPath()); + return new String(configContent, StandardCharsets.UTF_8) + + "\norg.apache.deltaspike.ProjectStage = Production"; + } + @AfterClass public static void resetProjectStage() { ProjectStageProducer.setProjectStage(null);
