package org.fenixedu.bennu.io.servlet;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import org.fenixedu.bennu.io.domain.FileDeleterThread;
import org.fenixedu.bennu.io.domain.FileSupport;
import pt.ist.fenixframework.Atomic;
@WebListener
public class BennuIOContextListener implements ServletContextListener {
private static boolean initialized = false;
private ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
@Atomic
public void initialize() {
if (!initialized) {
FileSupport.getInstance();
initialized = true;
}
}
@Override
public void contextInitialized(ServletContextEvent event) {
initialize();
FileDeleterThread thread = new FileDeleterThread();
thread.run();
executor.scheduleAtFixedRate(thread, 5, 5, TimeUnit.MINUTES);
}
@Override
public void contextDestroyed(ServletContextEvent event) {
try {
executor.awaitTermination(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
//oh well
}
}
}