/**
*
*/
package vnet.sms.common.shell.springshell.internal;
import static org.apache.commons.lang.Validate.notNull;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import vnet.sms.common.shell.springshell.JLineShellComponentFactory;
import vnet.sms.common.shell.springshell.JLineShellComponentFactoryAware;
/**
* @author obergner
*
*/
public class JLineShellComponentFactoryInjector implements BeanPostProcessor {
private final JLineShellComponentFactory factoryToInject;
/**
* @param factoryToInject
*/
public JLineShellComponentFactoryInjector(
final JLineShellComponentFactory factoryToInject) {
notNull(factoryToInject, "Argument 'factoryToInject' must not be null");
this.factoryToInject = factoryToInject;
}
/**
* @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessBeforeInitialization(java.lang.Object,
* java.lang.String)
*/
@Override
public Object postProcessBeforeInitialization(final Object bean,
final String beanName) throws BeansException {
if (JLineShellComponentFactoryAware.class.isInstance(bean)) {
JLineShellComponentFactoryAware.class.cast(bean)
.setJLineShellComponentFactory(this.factoryToInject);
}
return bean;
}
/**
* @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization(java.lang.Object,
* java.lang.String)
*/
@Override
public Object postProcessAfterInitialization(final Object bean,
final String beanName) throws BeansException {
return bean;
}
@Override
public String toString() {
return "JLineShellComponentFactoryInjector@" + this.hashCode()
+ "[factoryToInject: " + this.factoryToInject + "]";
}
}