package ru.yandex.market.graphouse.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import ru.yandex.market.graphouse.GraphouseWebServer;
import ru.yandex.market.graphouse.MonitoringServlet;
import ru.yandex.market.graphouse.cacher.MetricCacher;
import ru.yandex.market.graphouse.data.MetricDataService;
import ru.yandex.market.graphouse.data.MetricDataServiceServlet;
import ru.yandex.market.graphouse.monitoring.Monitoring;
import ru.yandex.market.graphouse.search.MetricSearch;
import ru.yandex.market.graphouse.search.MetricSearchServlet;
import ru.yandex.market.graphouse.server.MetricFactory;
import ru.yandex.market.graphouse.server.MetricServer;
/**
* @author Vlad Vinogradov <a href="mailto:vladvin@yandex-team.ru"></a> on 10.01.17
*/
@Configuration
public class ServerConfig {
@Value("${graphouse.allow-cold-run}")
private boolean allowColdRun = false;
@Autowired
private MetricSearch metricSearch;
@Autowired
private MetricCacher metricCacher;
@Autowired
private MetricDataService metricDataService;
@Autowired
private MetricFactory metricFactory;
@Autowired
private Monitoring monitoring;
@Bean(initMethod = "startServer")
public GraphouseWebServer graphouseWebServer() {
final MetricSearchServlet metricSearchServlet = new MetricSearchServlet(metricSearch, allowColdRun);
final MonitoringServlet monitoringServlet = new MonitoringServlet(monitoring, metricSearch, allowColdRun);
final MetricDataServiceServlet metricDataServiceServlet = new MetricDataServiceServlet(metricDataService);
return new GraphouseWebServer(metricSearchServlet, monitoringServlet, metricDataServiceServlet);
}
@Bean
public MetricServer metricServer() {
return new MetricServer(metricCacher, metricFactory);
}
}