package com.ryantenney.zookeeper.spring.config;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.w3c.dom.Element;
import com.ryantenney.zookeeper.spring.ZooKeeperAnnotationBeanPostProcessor;
import static org.springframework.beans.factory.config.BeanDefinition.ROLE_INFRASTRUCTURE;
public class AnnotationDrivenBeanDefinitionParser extends AbstractBeanDefinitionParser {
@Override
protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
final BeanDefinitionBuilder beanDefBuilder = BeanDefinitionBuilder.rootBeanDefinition(ZooKeeperAnnotationBeanPostProcessor.class);
beanDefBuilder.setRole(ROLE_INFRASTRUCTURE);
beanDefBuilder.getRawBeanDefinition().setSource(parserContext.extractSource(element));
beanDefBuilder.addPropertyReference("curatorFramework", element.getAttribute("curator-framework"));
return beanDefBuilder.getBeanDefinition();
}
@Override
protected boolean shouldGenerateId() {
return true;
}
}