/*
* JBoss, Home of Professional Open Source.
* Copyright 2007, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.test.deployers;
import java.util.Set;
import org.jboss.dependency.plugins.AbstractController;
import org.jboss.dependency.spi.Controller;
import org.jboss.deployers.client.plugins.deployment.AbstractDeployment;
import org.jboss.deployers.client.spi.DeployerClient;
import org.jboss.deployers.client.spi.Deployment;
import org.jboss.deployers.client.spi.DeploymentFactory;
import org.jboss.deployers.plugins.deployers.DeployerWrapper;
import org.jboss.deployers.plugins.deployers.DeployersImpl;
import org.jboss.deployers.plugins.main.MainDeployerImpl;
import org.jboss.deployers.plugins.managed.DefaultManagedDeploymentCreator;
import org.jboss.deployers.spi.attachments.PredeterminedManagedObjectAttachments;
import org.jboss.deployers.spi.deployer.Deployer;
import org.jboss.deployers.spi.deployer.Deployers;
import org.jboss.deployers.spi.deployer.managed.ManagedDeploymentCreator;
import org.jboss.deployers.spi.structure.ContextInfo;
import org.jboss.deployers.structure.spi.DeploymentContext;
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.deployers.structure.spi.StructuralDeployers;
import org.jboss.deployers.structure.spi.StructureBuilder;
import org.jboss.deployers.structure.spi.helpers.AbstractStructuralDeployers;
import org.jboss.deployers.structure.spi.helpers.AbstractStructureBuilder;
import org.jboss.test.BaseTestCase;
/**
* AbstractDeployerTest.
*
* @author <a href="adrian@jboss.org">Adrian Brock</a>
* @version $Revision: 1.1 $
*/
public abstract class AbstractDeployerTest extends BaseTestCase
{
DeploymentFactory factory = new DeploymentFactory();
public AbstractDeployerTest(String name)
{
super(name);
}
protected DeployerClient createMainDeployer()
{
return createMainDeployer((Deployer[]) null);
}
protected DeployerClient createMainDeployer(Deployer... deployers)
{
MainDeployerImpl mainDeployer = new MainDeployerImpl();
StructuralDeployers structure = createStructuralDeployers();
mainDeployer.setStructuralDeployers(structure);
Deployers theDeployers = createDeployers();
mainDeployer.setDeployers(theDeployers);
ManagedDeploymentCreator mdc = createManagedDeploymentCreator();
mainDeployer.setMgtDeploymentCreator(mdc);
if (deployers != null)
{
for (Deployer deployer : deployers)
addDeployer(mainDeployer, deployer);
}
return mainDeployer;
}
protected StructureBuilder createStructureBuilder()
{
return new AbstractStructureBuilder();
}
protected ManagedDeploymentCreator createManagedDeploymentCreator()
{
return new DefaultManagedDeploymentCreator();
}
protected StructuralDeployers createStructuralDeployers()
{
StructureBuilder builder = createStructureBuilder();
AbstractStructuralDeployers structure = new AbstractStructuralDeployers();
structure.setStructureBuilder(builder);
return structure;
}
protected Controller getController()
{
return new AbstractController();
}
protected Deployers createDeployers()
{
Controller controller = getController();
return new DeployersImpl(controller);
}
protected void addDeployer(DeployerClient main, Deployer deployer)
{
MainDeployerImpl mainDeployerImpl = (MainDeployerImpl) main;
DeployersImpl deployersImpl = (DeployersImpl) mainDeployerImpl.getDeployers();
deployersImpl.addDeployer(deployer);
}
protected void removeDeployer(DeployerClient main, Deployer deployer)
{
MainDeployerImpl mainDeployerImpl = (MainDeployerImpl) main;
DeployersImpl deployersImpl = (DeployersImpl) mainDeployerImpl.getDeployers();
deployersImpl.removeDeployer(deployer);
}
protected void setDeployers(DeployerClient main, Set<Deployer> deployers)
{
MainDeployerImpl mainDeployerImpl = (MainDeployerImpl) main;
DeployersImpl deployersImpl = (DeployersImpl) mainDeployerImpl.getDeployers();
deployersImpl.setDeployers(deployers);
}
protected Set<DeployerWrapper> getDeployers(DeployerClient main)
{
MainDeployerImpl mainDeployerImpl = (MainDeployerImpl) main;
DeployersImpl deployersImpl = (DeployersImpl) mainDeployerImpl.getDeployers();
return deployersImpl.getDeployerWrappers();
}
@Deprecated
protected DeploymentContext getDeploymentContext(DeployerClient main, String name)
{
MainDeployerImpl mainDeployerImpl = (MainDeployerImpl) main;
return mainDeployerImpl.getDeploymentContext(name);
}
@Deprecated
protected DeploymentContext assertDeploymentContext(DeployerClient main, String name)
{
DeploymentContext context = getDeploymentContext(main, name);
assertNotNull(name + " not found", context);
return context;
}
protected DeploymentUnit getDeploymentUnit(DeployerClient main, String name)
{
MainDeployerImpl mainDeployerImpl = (MainDeployerImpl) main;
return mainDeployerImpl.getDeploymentUnit(name);
}
protected DeploymentUnit assertDeploymentUnit(DeployerClient main, String name)
{
DeploymentUnit unit = getDeploymentUnit(main, name);
assertNotNull(name + " not found", unit);
return unit;
}
@Deprecated
protected DeploymentUnit deploy(DeployerClient main, Deployment deployment) throws Exception
{
main.deploy(deployment);
return assertDeploymentUnit(main, deployment.getName());
}
protected DeploymentUnit assertDeploy(DeployerClient main, Deployment deployment) throws Exception
{
main.deploy(deployment);
return assertDeploymentUnit(main, deployment.getName());
}
protected DeploymentUnit addDeployment(DeployerClient main, Deployment deployment) throws Exception
{
main.addDeployment(deployment);
main.process();
return assertDeploymentUnit(main, deployment.getName());
}
protected void assertUndeploy(DeployerClient main, Deployment deployment) throws Exception
{
main.undeploy(deployment);
}
protected Deployment createSimpleDeployment(String name)
{
AbstractDeployment unit = createAbstractDeployment(name);
factory.addContext(unit, "");
return unit;
}
protected AbstractDeployment createAbstractDeployment(String name)
{
return new AbstractDeployment(name);
}
protected ContextInfo addChild(PredeterminedManagedObjectAttachments parent, String name)
{
return factory.addContext(parent, name);
}
@Override
protected void configureLogging()
{
//enableTrace("org.jboss.deployers");
}
}