From 151c62361c89aba1e0fca8fe30bed2210aae5268 Mon Sep 17 00:00:00 2001 From: Mohsin Husen Date: Mon, 13 May 2013 17:51:00 +0100 Subject: [PATCH] DATAES-9 : multiple elasticsearch cluster nodes not getting parsed if using property file --- .../client/TransportClientFactoryBean.java | 120 +++++++++--------- .../TransportClientBeanDefinitionParser.java | 4 +- 2 files changed, 61 insertions(+), 63 deletions(-) diff --git a/src/main/java/org/springframework/data/elasticsearch/client/TransportClientFactoryBean.java b/src/main/java/org/springframework/data/elasticsearch/client/TransportClientFactoryBean.java index 3e1857f68..96c4aa9d2 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/TransportClientFactoryBean.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/TransportClientFactoryBean.java @@ -27,83 +27,83 @@ import org.springframework.util.Assert; import java.util.Properties; -import static org.apache.commons.lang.StringUtils.substringAfter; -import static org.apache.commons.lang.StringUtils.substringBefore; +import static org.apache.commons.lang.StringUtils.*; import static org.elasticsearch.common.settings.ImmutableSettings.settingsBuilder; /** * TransportClientFactoryBean - * + * * @author Rizwan Idrees * @author Mohsin Husen */ public class TransportClientFactoryBean implements FactoryBean, InitializingBean, DisposableBean { - private static final Logger logger = LoggerFactory.getLogger(TransportClientFactoryBean.class); - private String[] clusterNodes; - private TransportClient client; - private Properties properties; - static final String COLON = ":"; + private static final Logger logger = LoggerFactory.getLogger(TransportClientFactoryBean.class); + private String clusterNodes; + private TransportClient client; + private Properties properties; + static final String COLON = ":"; + static final String COMMA = ","; - @Override - public void destroy() throws Exception { - try { - logger.info("Closing elasticSearch client"); - if (client != null) { - client.close(); - } - } catch (final Exception e) { - logger.error("Error closing ElasticSearch client: ", e); - } - } + @Override + public void destroy() throws Exception { + try { + logger.info("Closing elasticSearch client"); + if (client != null) { + client.close(); + } + } catch (final Exception e) { + logger.error("Error closing ElasticSearch client: ", e); + } + } - @Override - public TransportClient getObject() throws Exception { - return client; - } + @Override + public TransportClient getObject() throws Exception { + return client; + } - @Override - public Class getObjectType() { - return TransportClient.class; - } + @Override + public Class getObjectType() { + return TransportClient.class; + } - @Override - public boolean isSingleton() { - return false; - } + @Override + public boolean isSingleton() { + return false; + } - @Override - public void afterPropertiesSet() throws Exception { - buildClient(); - } + @Override + public void afterPropertiesSet() throws Exception { + buildClient(); + } - protected void buildClient() throws Exception { - client = new TransportClient(settings()); - Assert.notEmpty(clusterNodes, "[Assertion failed] clusterNodes settings missing."); - for (String clusterNode : clusterNodes) { - String hostName = substringBefore(clusterNode, COLON); - String port = substringAfter(clusterNode, COLON); - Assert.hasText(hostName, "[Assertion failed] missing host name in 'clusterNodes'"); - Assert.hasText(port, "[Assertion failed] missing port in 'clusterNodes'"); - logger.info("adding transport node : " + clusterNode); - client.addTransportAddress(new InetSocketTransportAddress(hostName, Integer.valueOf(port))); - } - client.connectedNodes(); - } + protected void buildClient() throws Exception { + client = new TransportClient(settings()); + Assert.hasText(clusterNodes, "[Assertion failed] clusterNodes settings missing."); + for (String clusterNode : split(clusterNodes,COMMA)) { + String hostName = substringBefore(clusterNode, COLON); + String port = substringAfter(clusterNode, COLON); + Assert.hasText(hostName, "[Assertion failed] missing host name in 'clusterNodes'"); + Assert.hasText(port, "[Assertion failed] missing port in 'clusterNodes'"); + logger.info("adding transport node : " + clusterNode); + client.addTransportAddress(new InetSocketTransportAddress(hostName, Integer.valueOf(port))); + } + client.connectedNodes(); + } - private Settings settings() { - if (properties != null) { - return settingsBuilder().put(properties).build(); - } - return settingsBuilder().put("client.transport.sniff", true).build(); - } + private Settings settings() { + if (properties != null) { + return settingsBuilder().put(properties).build(); + } + return settingsBuilder().put("client.transport.sniff", true).build(); + } - public void setClusterNodes(String[] clusterNodes) { - this.clusterNodes = clusterNodes; - } + public void setClusterNodes(String clusterNodes) { + this.clusterNodes = clusterNodes; + } - public void setProperties(Properties properties) { - this.properties = properties; - } + public void setProperties(Properties properties) { + this.properties = properties; + } } diff --git a/src/main/java/org/springframework/data/elasticsearch/config/TransportClientBeanDefinitionParser.java b/src/main/java/org/springframework/data/elasticsearch/config/TransportClientBeanDefinitionParser.java index b43a82554..0619a812e 100644 --- a/src/main/java/org/springframework/data/elasticsearch/config/TransportClientBeanDefinitionParser.java +++ b/src/main/java/org/springframework/data/elasticsearch/config/TransportClientBeanDefinitionParser.java @@ -33,8 +33,6 @@ import static org.apache.commons.lang.StringUtils.split; public class TransportClientBeanDefinitionParser extends AbstractBeanDefinitionParser { - private static final String SEPARATOR_CHARS = ","; - @Override protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(TransportClientFactoryBean.class); @@ -43,7 +41,7 @@ public class TransportClientBeanDefinitionParser extends AbstractBeanDefinitionP } 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,