/* * 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.common.collect.ImmutableMap; import org.elasticsearch.common.logging.ESLoggerFactory; import org.elasticsearch.common.logging.slf4j.Slf4jESLoggerFactory; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.node.Node; import org.elasticsearch.node.NodeBuilder; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.enonic.cms.core.search.NodeSettingsBuilder; @Component public final class ElasticNodeFactory implements FactoryBean<Node> { private Node node; private NodeSettingsBuilder nodeSettingsBuilder; public Node getObject() { return this.node; } public Class<?> getObjectType() { return Node.class; } public boolean isSingleton() { return true; } @PostConstruct public void start() { ESLoggerFactory.setDefaultFactory( new Slf4jESLoggerFactory() ); final Settings settings = nodeSettingsBuilder.buildNodeSettings(); this.node = NodeBuilder.nodeBuilder().settings( settings ).build(); this.node.start(); } @Autowired public void setNodeSettingsBuilder( final NodeSettingsBuilder nodeSettingsBuilder ) { this.nodeSettingsBuilder = nodeSettingsBuilder; } @PreDestroy public void stop() { this.node.close(); } }