DATAES-9 : multiple elasticsearch cluster nodes not getting parsed if using property file

This commit is contained in:
Mohsin Husen 2013-05-13 17:51:00 +01:00
parent 7df712a3b6
commit 151c62361c
2 changed files with 61 additions and 63 deletions

View File

@ -27,8 +27,7 @@ import org.springframework.util.Assert;
import java.util.Properties; import java.util.Properties;
import static org.apache.commons.lang.StringUtils.substringAfter; import static org.apache.commons.lang.StringUtils.*;
import static org.apache.commons.lang.StringUtils.substringBefore;
import static org.elasticsearch.common.settings.ImmutableSettings.settingsBuilder; import static org.elasticsearch.common.settings.ImmutableSettings.settingsBuilder;
/** /**
@ -41,10 +40,11 @@ import static org.elasticsearch.common.settings.ImmutableSettings.settingsBuilde
public class TransportClientFactoryBean implements FactoryBean<TransportClient>, InitializingBean, DisposableBean { public class TransportClientFactoryBean implements FactoryBean<TransportClient>, InitializingBean, DisposableBean {
private static final Logger logger = LoggerFactory.getLogger(TransportClientFactoryBean.class); private static final Logger logger = LoggerFactory.getLogger(TransportClientFactoryBean.class);
private String[] clusterNodes; private String clusterNodes;
private TransportClient client; private TransportClient client;
private Properties properties; private Properties properties;
static final String COLON = ":"; static final String COLON = ":";
static final String COMMA = ",";
@Override @Override
public void destroy() throws Exception { public void destroy() throws Exception {
@ -80,8 +80,8 @@ public class TransportClientFactoryBean implements FactoryBean<TransportClient>,
protected void buildClient() throws Exception { protected void buildClient() throws Exception {
client = new TransportClient(settings()); client = new TransportClient(settings());
Assert.notEmpty(clusterNodes, "[Assertion failed] clusterNodes settings missing."); Assert.hasText(clusterNodes, "[Assertion failed] clusterNodes settings missing.");
for (String clusterNode : clusterNodes) { for (String clusterNode : split(clusterNodes,COMMA)) {
String hostName = substringBefore(clusterNode, COLON); String hostName = substringBefore(clusterNode, COLON);
String port = substringAfter(clusterNode, COLON); String port = substringAfter(clusterNode, COLON);
Assert.hasText(hostName, "[Assertion failed] missing host name in 'clusterNodes'"); Assert.hasText(hostName, "[Assertion failed] missing host name in 'clusterNodes'");
@ -99,7 +99,7 @@ public class TransportClientFactoryBean implements FactoryBean<TransportClient>,
return settingsBuilder().put("client.transport.sniff", true).build(); return settingsBuilder().put("client.transport.sniff", true).build();
} }
public void setClusterNodes(String[] clusterNodes) { public void setClusterNodes(String clusterNodes) {
this.clusterNodes = clusterNodes; this.clusterNodes = clusterNodes;
} }

View File

@ -33,8 +33,6 @@ import static org.apache.commons.lang.StringUtils.split;
public class TransportClientBeanDefinitionParser extends AbstractBeanDefinitionParser { public class TransportClientBeanDefinitionParser extends AbstractBeanDefinitionParser {
private static final String SEPARATOR_CHARS = ",";
@Override @Override
protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(TransportClientFactoryBean.class); BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(TransportClientFactoryBean.class);
@ -43,7 +41,7 @@ public class TransportClientBeanDefinitionParser extends AbstractBeanDefinitionP
} }
private void setClusterNodes(Element element, BeanDefinitionBuilder builder) { private void setClusterNodes(Element element, BeanDefinitionBuilder builder) {
builder.addPropertyValue("clusterNodes", split(element.getAttribute("cluster-nodes"), SEPARATOR_CHARS)); builder.addPropertyValue("clusterNodes", element.getAttribute("cluster-nodes"));
} }
private AbstractBeanDefinition getSourcedBeanDefinition(BeanDefinitionBuilder builder, Element source, private AbstractBeanDefinition getSourcedBeanDefinition(BeanDefinitionBuilder builder, Element source,