package org.arquillian.cube.impl.client.container.remote; import java.lang.annotation.Annotation; import org.arquillian.cube.CubeID; import org.arquillian.cube.impl.client.container.remote.command.CubeIDCommand; import org.jboss.arquillian.container.test.spi.command.CommandService; import org.jboss.arquillian.core.api.Instance; import org.jboss.arquillian.core.api.annotation.Inject; import org.jboss.arquillian.core.spi.ServiceLoader; import org.jboss.arquillian.test.api.ArquillianResource; import org.jboss.arquillian.test.spi.enricher.resource.ResourceProvider; public class ContainerCubeIDProvider implements ResourceProvider { @Inject private Instance<ServiceLoader> serviceLoader; @Override public boolean canProvide(Class<?> type) { return CubeID.class.isAssignableFrom(type); } @Override public Object lookup(ArquillianResource resource, Annotation... qualifiers) { return getCubeID(); } private CubeID getCubeID() { String cubeId = getCommandService().execute(new CubeIDCommand()); return new CubeID(cubeId); } private CommandService getCommandService() { ServiceLoader loader = serviceLoader.get(); if (loader == null) { throw new IllegalStateException("No " + ServiceLoader.class.getName() + " found in context"); } CommandService service = loader.onlyOne(CommandService.class); if (service == null) { throw new IllegalStateException("No " + CommandService.class.getName() + " found in context"); } return service; } }