package org.apache.solr.handler.dataimport.scheduler;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ApplicationListener implements ServletContextListener {
private static final Logger logger = LoggerFactory.getLogger(ApplicationListener.class);
private static final String SCHEDULER_RUNNER_ID = "SolrDataImportScheduleRunner";
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
ServletContext servletContext = servletContextEvent.getServletContext();
// get our Scheduler from the context
SolrDataImportScheduleRunner runner = (SolrDataImportScheduleRunner)servletContext.getAttribute(SCHEDULER_RUNNER_ID);
// cancel all active tasks in the Scheduler queue
if (runner != null) {
runner.stop();
}
// remove the Scheduler from the context
servletContext.removeAttribute(SCHEDULER_RUNNER_ID);
}
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
ServletContext servletContext = servletContextEvent.getServletContext();
try{
SolrDataImportSchedule dataImportSchedule = SolrDataImportScheduleFactory.load();
// if no schedules have been defined exit out cleanly
if (dataImportSchedule == null) return;
// start the specified schedule
SolrDataImportScheduleRunner runner = new SolrDataImportScheduleRunner(dataImportSchedule);
runner.start();
// save the timer in context
servletContext.setAttribute(SCHEDULER_RUNNER_ID, runner);
} catch (Exception e) {
logger.error("[DataImportScheduler] Problem initializing the scheduled task: ", e);
}
}
}