From 21111b62306cd7f6add4c0806de20206be0eafde Mon Sep 17 00:00:00 2001 From: Mohsin Husen Date: Tue, 30 Apr 2013 13:53:00 +0100 Subject: [PATCH] DATAES-6 , Add ability to let NodeClient clean up working directory --- .../client/NodeClientFactoryBean.java | 27 ++++++++++++++++--- .../NodeClientBeanDefinitionParser.java | 4 ++- .../config/spring-elasticsearch-1.0.xsd | 1 + 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/springframework/data/elasticsearch/client/NodeClientFactoryBean.java b/src/main/java/org/springframework/data/elasticsearch/client/NodeClientFactoryBean.java index 3e9739928..15b816d4f 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/NodeClientFactoryBean.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/NodeClientFactoryBean.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -17,6 +17,9 @@ package org.springframework.data.elasticsearch.client; import org.elasticsearch.client.Client; import org.elasticsearch.client.node.NodeClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; @@ -29,9 +32,11 @@ import static org.elasticsearch.node.NodeBuilder.nodeBuilder; * @author Mohsin Husen */ -public class NodeClientFactoryBean implements FactoryBean, InitializingBean{ +public class NodeClientFactoryBean implements FactoryBean, InitializingBean, DisposableBean { + private static final Logger logger = LoggerFactory.getLogger(NodeClientFactoryBean.class); private boolean local; + private boolean data; private NodeClient nodeClient; NodeClientFactoryBean() { @@ -58,10 +63,26 @@ public class NodeClientFactoryBean implements FactoryBean, Initializ @Override public void afterPropertiesSet() throws Exception { - nodeClient = (NodeClient) nodeBuilder().local(this.local).node().client(); + nodeClient = (NodeClient) nodeBuilder().local(this.local).data(this.data).node().client(); } public void setLocal(boolean local) { this.local = local; } + + public void setData(boolean data) { + this.data = data; + } + + @Override + public void destroy() throws Exception { + try { + logger.info("Closing elasticSearch client"); + if (nodeClient != null) { + nodeClient.close(); + } + } catch (final Exception e) { + logger.error("Error closing ElasticSearch client: ", e); + } + } } diff --git a/src/main/java/org/springframework/data/elasticsearch/config/NodeClientBeanDefinitionParser.java b/src/main/java/org/springframework/data/elasticsearch/config/NodeClientBeanDefinitionParser.java index 17c6c092d..5d4af27c1 100644 --- a/src/main/java/org/springframework/data/elasticsearch/config/NodeClientBeanDefinitionParser.java +++ b/src/main/java/org/springframework/data/elasticsearch/config/NodeClientBeanDefinitionParser.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.data.elasticsearch.config; import org.springframework.beans.factory.support.AbstractBeanDefinition; @@ -40,6 +41,7 @@ public class NodeClientBeanDefinitionParser extends AbstractBeanDefinitionParser private void setLocalSettings(Element element, BeanDefinitionBuilder builder) { builder.addPropertyValue("local", Boolean.valueOf(element.getAttribute("local"))); + builder.addPropertyValue("data", Boolean.valueOf(element.getAttribute("data"))); } diff --git a/src/main/resources/org/springframework/data/elasticsearch/config/spring-elasticsearch-1.0.xsd b/src/main/resources/org/springframework/data/elasticsearch/config/spring-elasticsearch-1.0.xsd index f0ddcb71b..15b97313d 100644 --- a/src/main/resources/org/springframework/data/elasticsearch/config/spring-elasticsearch-1.0.xsd +++ b/src/main/resources/org/springframework/data/elasticsearch/config/spring-elasticsearch-1.0.xsd @@ -45,6 +45,7 @@ +