package org.jboss.weld.tests.util;
import org.jboss.arquillian.container.spi.client.container.DeploymentExceptionTransformer;
import org.jboss.arquillian.container.test.spi.client.deployment.AuxiliaryArchiveAppender;
import org.jboss.arquillian.core.spi.LoadableExtension;
/**
* Arquillian loadable extension.
*
* @author Aslak Knutsen
* @author Stuart Douglas
* @author Martin Kouba
*/
public class WeldExtension implements LoadableExtension {
private static final String MANAGED_CONTAINER_CLASS = "org.jboss.as.arquillian.container.managed.ManagedDeployableContainer";
private static final String REMOTE_CONTAINER_CLASS = "org.jboss.as.arquillian.container.remote.RemoteDeployableContainer";
private static final String MANAGED_CONTAINER_DEFAULT_EXCEPTION_TRANSFORMER_CLASS = "org.jboss.as.arquillian.container.ExceptionTransformer";
public void register(ExtensionBuilder builder) {
builder.service(AuxiliaryArchiveAppender.class, CategoryArchiveAppender.class);
if (Validate.classExists(MANAGED_CONTAINER_CLASS) || Validate.classExists(REMOTE_CONTAINER_CLASS)) {
// Override the default NOOP exception transformer
builder.override(DeploymentExceptionTransformer.class, getDefaultExceptionTransformerClass(),
WildFly8DeploymentExceptionTransformer.class);
}
if(Validate.classExists(MANAGED_CONTAINER_CLASS)){
builder.observer(WildFly8EEResourceManager.class);
}
}
@SuppressWarnings("unchecked")
private Class<DeploymentExceptionTransformer> getDefaultExceptionTransformerClass() {
try {
return (Class<DeploymentExceptionTransformer>) Class.forName(MANAGED_CONTAINER_DEFAULT_EXCEPTION_TRANSFORMER_CLASS);
} catch (ClassNotFoundException e) {
throw new IllegalStateException("Default exception transformer class not found: "
+ MANAGED_CONTAINER_DEFAULT_EXCEPTION_TRANSFORMER_CLASS);
}
}
}