/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.elastic;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.elasticsearch.client.Client;
import org.elasticsearch.node.Node;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public final class ElasticClientFactory
implements FactoryBean<Client>
{
private Node node;
private Client client;
@Override
public Client getObject()
{
return this.client;
}
@Override
public Class<?> getObjectType()
{
return Client.class;
}
@Override
public boolean isSingleton()
{
return true;
}
@Autowired
public void setNode( final Node node )
{
this.node = node;
}
@PostConstruct
public void start()
{
this.client = this.node.client();
}
@PreDestroy
public void stop()
{
this.client.close();
}
}