package org.trimou.tests; import java.io.File; import org.jboss.arquillian.core.spi.LoadableExtension; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.EmptyAsset; import org.jboss.shrinkwrap.api.asset.StringAsset; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.jboss.shrinkwrap.descriptor.api.Descriptors; import org.jboss.shrinkwrap.descriptor.api.webapp30.WebAppDescriptor; import org.jboss.shrinkwrap.descriptor.api.webcommon30.WebAppVersionType; import org.jboss.shrinkwrap.resolver.api.maven.Maven; /** * * @author Martin Kouba */ public final class IntegrationTestUtils { private static final String[] SERVLET_CONTAINER_CLASSES = { "org.jboss.arquillian.container.jetty.embedded_7.JettyEmbeddedContainer" }; // See also http://weld.cdi-spec.org/documentation/#4 private static final StringAsset CDI11_JBOSSALL_WORKAROUND_ASSET = new StringAsset( "<jboss xmlns=\"urn:jboss:1.0\"><weld xmlns=\"urn:jboss:weld:1.0\" require-bean-descriptor=\"true\"/></jboss>"); public static WebArchive createCDITestArchiveBase() { WebArchive testArchive = createTestArchiveBase(); testArchive.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml"); return testArchive; } public static File[] resolve(String ga) { return Maven.configureResolver().workOffline().loadPomFromFile("pom.xml").resolve( ga).withTransitivity().asFile(); } public static WebArchive createTestArchiveBase() { WebArchive testArchive = ShrinkWrap.create(WebArchive.class); // Suppressing implicit bean archives without beans.xml testArchive.addAsManifestResource(CDI11_JBOSSALL_WORKAROUND_ASSET, "jboss-all.xml"); // Add Weld servlet for embedded containers if (isServletContainer()) { testArchive.addAsLibraries(resolve("org.jboss.weld.servlet:weld-servlet")); testArchive.setWebXML(new StringAsset(Descriptors .create(WebAppDescriptor.class) .version(WebAppVersionType._3_0) .createListener() .listenerClass( "org.jboss.weld.environment.servlet.Listener").up() .exportAsString())); } return testArchive; } private static boolean isServletContainer() { for (String className : SERVLET_CONTAINER_CLASSES) { if (LoadableExtension.Validate.classExists(className)) { return true; } } return false; } }