package org.jboss.weld.tests.util; import java.util.logging.Level; import java.util.logging.Logger; import org.jboss.arquillian.container.spi.event.StartContainer; import org.jboss.arquillian.core.api.annotation.Observes; import org.jboss.arquillian.core.spi.EventContext; import org.jboss.as.controller.client.ModelControllerClient; /** * Assumptions: * <ul> * <li>WildFly 8 managed container adapter</li> * <li>only one container is used in the same time</li> * <li>H2 JDBC driver is properly configured</li> * </ul> * * @author Martin Kouba */ public class WildFly8EEResourceManager { public static final String TEST_QUEUE_DESTINATION = "java:jboss/exported/jms/queue/test"; public static final String TEST_TOPIC_DESTINATION = "java:jboss/exported/jms/topic/test"; private static final Logger logger = Logger.getLogger(WildFly8EEResourceManager.class.getName()); /** * Observe {@link org.jboss.arquillian.container.spi.event.StartContainer} and check/add required EE resources. * * @param eventContext */ public void checkResources(@Observes EventContext<StartContainer> eventContext) { try { // First start the container eventContext.proceed(); // Then check resources ModelControllerClient client = ModelControllerClient.Factory.create("localhost", 9990); WildFlyMessaging messaging = WildFlyMessaging.get(client); if (messaging != null) { messaging.checkJmsQueue(client); messaging.checkJmsTopic(client); } else { /* * JMS subsystem may not be installed (e.g. when debugging against standalone.xml) If this happens, do not attempt to install Queue/Topic as * that always fails */ logger.log(Level.WARNING, "JMS subsystem not installed. Skipping test Queue/Topic installation."); } } catch (Exception e) { throw new RuntimeException(e); } } }