package org.richfaces.arquillian.configuration; import java.lang.annotation.Annotation; import org.jboss.arquillian.config.descriptor.api.ArquillianDescriptor; import org.jboss.arquillian.drone.configuration.ConfigurationMapper; import org.jboss.arquillian.drone.spi.DroneConfiguration; public class FundamentalTestConfiguration implements DroneConfiguration<FundamentalTestConfiguration> { private String richfacesVersion; private Boolean servletContainerSetup; private String currentBuildRichfacesVersion = "4.5.18-SNAPSHOT"; private String jsfProvider; private String jsfImplementation; private String container; private String containerHome; private String containerDistribution; private String containerConfiguration; private Boolean containerUninstall; private Boolean debug; private String mavenSettings; private boolean containerInstalledFromDistribution = false; /** * Get version of RichFaces dependencies to use with the test. * * By default, current project's version will be used. */ public String getRichFacesVersion() { if (richfacesVersion == null || richfacesVersion.isEmpty()) { return currentBuildRichfacesVersion; } return richfacesVersion; } /** * Returns true when the RichFaces version setup for testing is same as current build version */ public boolean isCurrentRichFacesVersion() { return currentBuildRichfacesVersion.equals(getRichFacesVersion()); } /** * Add JSF to the WebArchive for support of plain Servlet containers (Tomcat, Jetty, etc.) */ public boolean servletContainerSetup() { return servletContainerSetup; } /** * Get the Maven dependency (GAV) for the JSF implementation used for testing in servlet containers */ public String getJsfImplementation() { return jsfImplementation; } /** * Returns the JSF implementation provider * * @see JsfProvider */ public JsfProvider getJsfProvider() { return JsfProvider.valueOf(jsfProvider.toUpperCase()); } /** * Get the name of the container profile as specified by -Dintegration={container} execution * @return */ public String getContainer() { return container; } /** * Get the Maven dependency (GAV) for the container distribution artifact */ public String getContainerDistribution() { return containerDistribution; } /** * Get the Maven dependency (GAV) for the artifact which contains a container configuration files */ public String getContainerConfiguration() { return containerConfiguration; } /** * Get the directory in which the unpacked container distribution will be placed */ public String getContainerHome() { return containerHome; } /** * Set the flag that the container was installed from distribution */ public void setContainerInstalledFromDistribution(boolean containerInstalledFromDistribution) { this.containerInstalledFromDistribution = containerInstalledFromDistribution; } /** * Returns true if the container should be uninstalled after suite (default: true) */ public boolean containerShouldBeUninstalled() { return containerInstalledFromDistribution && (containerUninstall == null || containerUninstall); } public boolean isDebug() { return debug != null && debug; } public String getMavenSettings() { return mavenSettings; } /** * Validates the configuration */ public void validate() { if (container == null) { throw new IllegalArgumentException("The ${integration} configuration needs to be specified"); } if (servletContainerSetup == null) { throw new IllegalArgumentException("The ${servletContainerSetup} configuration needs to be specified"); } } /* * (non-Javadoc) * * @see org.jboss.arquillian.drone.spi.DroneConfiguration#getConfigurationName() */ @Override public String getConfigurationName() { return "richfaces"; } /* * (non-Javadoc) * * @see * org.jboss.arquillian.drone.spi.DroneConfiguration#configure(org.jboss.arquillian.config.descriptor.api.ArquillianDescriptor * , java.lang.Class) */ @Override public FundamentalTestConfiguration configure(ArquillianDescriptor descriptor, Class<? extends Annotation> qualifier) { return ConfigurationMapper.fromArquillianDescriptor(descriptor, this, qualifier); } public enum JsfProvider { MOJARRA, MYFACES } }