package org.jboss.weld.environment.servlet.test.util;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ArchivePath;
import org.jboss.shrinkwrap.api.ArchivePaths;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.Asset;
import org.jboss.shrinkwrap.api.asset.ByteArrayAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.impl.BeansXml;
public class Deployments {
public static final ArchivePath MARKER_SKIP_PROCESSOR = ArchivePaths.create("META-INF/weld.servlet.skipProcessor");
public static final String DEFAULT_WEB_XML_START = "<web-app version=\"3.1\"\n"
+ " xmlns=\"http://xmlns.jcp.org/xml/ns/javaee\"\n"
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+ " xsi:schemaLocation=\"\n"
+ " http://xmlns.jcp.org/xml/ns/javaee\n"
+ " http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd\">";
public static final String DEFAULT_WEB_XML_BODY = toListener("org.jboss.weld.environment.servlet.Listener")
+ "<resource-env-ref><resource-env-ref-name>BeanManager</resource-env-ref-name><resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type></resource-env-ref> ";
public static final String DEFAULT_WEB_XML_PREFIX = DEFAULT_WEB_XML_START + DEFAULT_WEB_XML_BODY;
public static final String DEFAULT_WEB_XML_SUFFIX = "</web-app>";
public static final Asset DEFAULT_WEB_XML = new ByteArrayAsset((DEFAULT_WEB_XML_PREFIX + DEFAULT_WEB_XML_SUFFIX).getBytes());
public static final Asset EMPTY_FACES_CONFIG_XML = new ByteArrayAsset(
"<faces-config version=\"2.0\" xmlns=\"http://java.sun.com/xml/ns/javaee\"></faces-config>".getBytes());
public static final Asset FACES_WEB_XML = new ByteArrayAsset((DEFAULT_WEB_XML_PREFIX
+ "<listener><listener-class>com.sun.faces.config.ConfigureListener</listener-class></listener> <context-param><param-name>javax.faces.DEFAULT_SUFFIX</param-name><param-value>.xhtml</param-value></context-param> <servlet><servlet-name>Faces Servlet</servlet-name><servlet-class>javax.faces.webapp.FacesServlet</servlet-class><load-on-startup>1</load-on-startup></servlet> <servlet-mapping><servlet-name>Faces Servlet</servlet-name><url-pattern>*.jsf</url-pattern></servlet-mapping> "
+ DEFAULT_WEB_XML_SUFFIX).getBytes());
private Deployments() {
}
public static WebArchive baseDeployment(BeansXml beansXml, Asset webXml) {
return ShrinkWrap.create(WebArchive.class).addAsWebInfResource(beansXml, "beans.xml").setWebXML(webXml);
}
public static WebArchive baseDeployment(BeansXml beansXml) {
return baseDeployment(beansXml, DEFAULT_WEB_XML);
}
public static WebArchive baseDeployment() {
return baseDeployment(new BeansXml(), DEFAULT_WEB_XML);
}
public static WebArchive baseDeployment(Asset webXml) {
return baseDeployment(new BeansXml(), webXml);
}
public static String toListener(String listenerClassName) {
return "<listener><listener-class>" + listenerClassName + "</listener-class></listener>";
}
public static String toServlet(String servletName, Class<?> servletClass) {
return "<servlet><servlet-name>" + servletName + "</servlet-name><servlet-class>" + servletClass.getName() + "</servlet-class></servlet>";
}
public static String toServletMapping(String servletName, String urlPattern) {
return "<servlet-mapping><servlet-name>" + servletName + "</servlet-name><url-pattern>" + urlPattern + "</url-pattern></servlet-mapping>";
}
public static String toServletAndMapping(String servletName, Class<?> servletClass, String urlPattern) {
return toServlet(servletName, servletClass) + toServletMapping(servletName, urlPattern);
}
public static String toContextParam(String name, String value) {
return "<context-param><param-name>" + name + "</param-name><param-value>" + value + "</param-value></context-param>";
}
/**
* Inserts the extension into the end of the default web.xml (just before closing web-app)
*
* @param extension the extension
* @return extended web xml
*/
public static String extendDefaultWebXml(String extension) {
return DEFAULT_WEB_XML_PREFIX + extension + DEFAULT_WEB_XML_SUFFIX;
}
public static <T extends Archive<?>> boolean isProcessorSkipped(T archive) {
return archive.contains(Deployments.MARKER_SKIP_PROCESSOR);
}
}