All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jboss.as.arquillian.container.controller.ClientWildFlyContainerController Maven / Gradle / Ivy

/*
 * Copyright 2015 Red Hat, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.jboss.as.arquillian.container.controller;

import java.util.List;
import java.util.logging.Logger;

import org.jboss.arquillian.container.spi.Container;
import org.jboss.arquillian.container.spi.ContainerRegistry;
import org.jboss.arquillian.container.spi.client.deployment.Deployment;
import org.jboss.arquillian.container.spi.client.deployment.DeploymentScenario;
import org.jboss.arquillian.container.spi.client.deployment.TargetDescription;
import org.jboss.arquillian.container.spi.event.UnDeployDeployment;
import org.jboss.arquillian.container.test.impl.client.container.ClientContainerController;
import org.jboss.as.arquillian.api.WildFlyContainerController;

/**
 * Implementation of {@link WildFlyContainerController} used from client.
 *
 * @author Radoslav Husar
 * @version Jan 2015
 */
public class ClientWildFlyContainerController extends ClientContainerController implements WildFlyContainerController {

    private final Logger log = Logger.getLogger(ClientWildFlyContainerController.class.getName());

    /**
     * @see org.jboss.arquillian.container.test.impl.client.container.ClientContainerController#stop(java.lang.String)
     */
    @Override
    public void stop(String containerQualifier, int timeout) {
        {
            DeploymentScenario scenario = getDeploymentScenario().get();
            if (scenario == null) {
                throw new IllegalArgumentException("No deployment scenario in context");
            }

            ContainerRegistry registry = getContainerRegistry().get();
            if (registry == null) {
                throw new IllegalArgumentException("No container registry in context");
            }

            if (!containerExists(registry.getContainers(), containerQualifier)) {
                throw new IllegalArgumentException("No container with the specified name exists");
            }

            if (!isControllableContainer(registry.getContainers(), containerQualifier)) {
                throw new IllegalArgumentException("Could not start " + containerQualifier + " container. The container life cycle is controlled by Arquillian");
            }

            Container container = getContainerRegistry().get().getContainer(new TargetDescription(containerQualifier));

            List managedDeployments = scenario.startupDeploymentsFor(new TargetDescription(containerQualifier));

            for (Deployment d : managedDeployments) {
                if (d.isDeployed()) {
                    log.info("Automatic undeploying of the managed deployment with name " + d.getDescription().getName() +
                            " from the container with name " + container.getName());
                    getContainerControllerEvent().fire(new UnDeployDeployment(container, d));
                }
            }

            log.info("Manual stopping of a server instance with timeout=" + timeout);

            getContainerControllerEvent().fire(new StopContainerWithTimeout(container, timeout));
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy