Spring LDAP

org.springframework.ldap.test
Class AbstractEc2InstanceLaunchingFactoryBean

java.lang.Object
  extended by org.springframework.beans.factory.config.AbstractFactoryBean
      extended by org.springframework.ldap.test.AbstractEc2InstanceLaunchingFactoryBean
All Implemented Interfaces:
BeanClassLoaderAware, BeanFactoryAware, DisposableBean, FactoryBean, InitializingBean
Direct Known Subclasses:
ContextSourceEc2InstanceLaunchingFactoryBean

public abstract class AbstractEc2InstanceLaunchingFactoryBean
extends AbstractFactoryBean

Abstract FactoryBean superclass to use for automatically launching an EC2 instance before creating the actual target object. This approach is particularly useful for integration testing purposes - the idea is to have particular EC2 images prepared for running integration tests against certain server configurations, enabling integration tests aimed at e.g. a particluar DB server to run transparently at the computer of each individual developer without having to have the actual server software installed on their computers.

Public AMIs will need to be created, bundled and registered for each server setup. A subclass of this FactoryBean is then added to create the actual target object (e.g. a DataSource), implementing the {link #doCreateInstance} method. This method will be supplied the IP address of the instance that was created, enabling the subclass to configure the created instance appropriately.

Author:
Mattias Hellborg Arthursson

Field Summary
 
Fields inherited from class org.springframework.beans.factory.config.AbstractFactoryBean
logger
 
Constructor Summary
AbstractEc2InstanceLaunchingFactoryBean()
           
 
Method Summary
protected  Object createInstance()
           
protected  void destroyInstance(Object ignored)
           
protected abstract  Object doCreateInstance(String ip)
          Implement to create the actual target object.
 void setAwsKey(String awsKey)
          Set the AWS key.
 void setAwsSecretKey(String awsSecretKey)
          Set the AWS secret key.
 void setGroupName(String groupName)
          Set the name of the access group.
 void setImageName(String imageName)
          Set the name of the AMI image to be launched.
 void setKeypairName(String keypairName)
          Set the name of the keypair.
 
Methods inherited from class org.springframework.beans.factory.config.AbstractFactoryBean
afterPropertiesSet, destroy, getBeanFactory, getBeanTypeConverter, getEarlySingletonInterfaces, getObject, getObjectType, isSingleton, setBeanClassLoader, setBeanFactory, setSingleton
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractEc2InstanceLaunchingFactoryBean

public AbstractEc2InstanceLaunchingFactoryBean()
Method Detail

setImageName

public void setImageName(String imageName)
Set the name of the AMI image to be launched.

Parameters:
imageName - the AMI image name.

setAwsKey

public void setAwsKey(String awsKey)
Set the AWS key.

Parameters:
awsKey - the AWS key.

setAwsSecretKey

public void setAwsSecretKey(String awsSecretKey)
Set the AWS secret key.

Parameters:
awsSecretKey - the aws secret key.

setKeypairName

public void setKeypairName(String keypairName)
Set the name of the keypair.

Parameters:
keypairName - The keypair name.

setGroupName

public void setGroupName(String groupName)
Set the name of the access group. This group should be configured with the appropriate ports open for this test case to execute.

Parameters:
groupName - the group name.

createInstance

protected final Object createInstance()
                               throws Exception
Specified by:
createInstance in class AbstractFactoryBean
Throws:
Exception

doCreateInstance

protected abstract Object doCreateInstance(String ip)
                                    throws Exception
Implement to create the actual target object.

Parameters:
ip - the ip address of the launched EC2 image.
Returns:
the object to be returned by this FactoryBean.
Throws:
Exception - if an error occurs during initialization.

destroyInstance

protected void destroyInstance(Object ignored)
                        throws Exception
Overrides:
destroyInstance in class AbstractFactoryBean
Throws:
Exception

Spring LDAP