package org.arquillian.cube.impl.client; import org.arquillian.cube.impl.client.container.ContainerConfigurationController; import org.arquillian.cube.impl.client.container.CubeContainerLifecycleController; import org.arquillian.cube.impl.client.container.CubeRemoteCommandObserver; import org.arquillian.cube.impl.client.container.ProtocolMetadataUpdater; import org.arquillian.cube.impl.client.container.remote.CubeAuxiliaryArchiveAppender; import org.arquillian.cube.impl.client.enricher.CubeControllerProvider; import org.arquillian.cube.impl.client.enricher.CubeIDResourceProvider; import org.arquillian.cube.impl.client.enricher.CubeIpTestEnricher; import org.arquillian.cube.impl.client.enricher.HostIpTestEnricher; import org.arquillian.cube.impl.client.enricher.HostPortTestEnricher; import org.arquillian.cube.impl.client.enricher.StandaloneCubeUrlResourceProvider; import org.arquillian.cube.impl.reporter.DockerReportKey; import org.arquillian.cube.impl.reporter.TakeCubeInformation; import org.arquillian.reporter.api.model.StringKey; import org.jboss.arquillian.container.test.spi.client.deployment.AuxiliaryArchiveAppender; import org.jboss.arquillian.core.spi.LoadableExtension; import org.jboss.arquillian.test.spi.TestEnricher; import org.jboss.arquillian.test.spi.enricher.resource.ResourceProvider; public class CubeExtension implements LoadableExtension { @Override public void register(ExtensionBuilder builder) { builder.observer(CubeConfigurator.class) .observer(CubeRegistrar.class) .observer(CubeLifecycleController.class) //.observer(CubeSuiteLifecycleController.class) .observer(ClientCubeControllerCreator.class) .observer(ForceStopDockerContainersShutdownHook.class); builder.service(ResourceProvider.class, CubeControllerProvider.class) .service(TestEnricher.class, HostIpTestEnricher.class) .service(TestEnricher.class, CubeIpTestEnricher.class) .service(TestEnricher.class, HostPortTestEnricher.class); // Arquillian Container integration // Only register if container-test-spi is on classpath if (Validate.classExists("org.jboss.arquillian.container.test.spi.client.deployment.AuxiliaryArchiveAppender")) { builder.observer(ProtocolMetadataUpdater.class) .observer(CubeContainerLifecycleController.class) .observer(ContainerConfigurationController.class) .observer(CubeRemoteCommandObserver.class); builder.service(AuxiliaryArchiveAppender.class, CubeAuxiliaryArchiveAppender.class); } else { // It is standalone builder.service(ResourceProvider.class, StandaloneCubeUrlResourceProvider.class); } // Only register if container-test-impl is on classpath if (Validate.classExists( "org.jboss.arquillian.container.test.impl.enricher.resource.OperatesOnDeploymentAwareProvider")) { builder.service(ResourceProvider.class, CubeIDResourceProvider.class); } // Only if reporter is in classpath we should provide reporting capabilities. if (Validate.classExists("org.arquillian.core.reporter.ArquillianCoreReporterExtension")) { builder.observer(TakeCubeInformation.class) .service(StringKey.class, DockerReportKey.class); } } }