1 | package org.springframework.data.elasticsearch.config; |
2 | |
3 | import org.springframework.beans.factory.support.AbstractBeanDefinition; |
4 | import org.springframework.beans.factory.support.BeanDefinitionBuilder; |
5 | import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser; |
6 | import org.springframework.beans.factory.xml.ParserContext; |
7 | import org.springframework.data.elasticsearch.client.TransportClientFactoryBean; |
8 | import org.w3c.dom.Element; |
9 | |
10 | import static org.apache.commons.lang.StringUtils.split; |
11 | |
12 | |
13 | public class TransportClientBeanDefinitionParser extends AbstractBeanDefinitionParser { |
14 | |
15 | private static final String SEPARATOR_CHARS = ","; |
16 | |
17 | @Override |
18 | protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { |
19 | BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(TransportClientFactoryBean.class); |
20 | setClusterNodes(element, builder); |
21 | return getSourcedBeanDefinition(builder,element, parserContext); |
22 | } |
23 | |
24 | private void setClusterNodes(Element element, BeanDefinitionBuilder builder){ |
25 | builder.addPropertyValue("clusterNodes", split(element.getAttribute("cluster-nodes"), SEPARATOR_CHARS)); |
26 | } |
27 | |
28 | private AbstractBeanDefinition getSourcedBeanDefinition(BeanDefinitionBuilder builder, Element source, |
29 | ParserContext context) { |
30 | AbstractBeanDefinition definition = builder.getBeanDefinition(); |
31 | definition.setSource(context.extractSource(source)); |
32 | return definition; |
33 | } |
34 | } |