package org.wiztools.restclient.ui.lifecycle;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.inject.Singleton;
/**
*
* @author subwiz
*/
@Singleton
public class LifecycleManagerImpl implements LifecycleManager {
private final List<Startup> startupListeners = new ArrayList<Startup>();
private final List<Shutdown> shutdownListeners = new ArrayList<Shutdown>();
@PostConstruct
protected void init() {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
for(Shutdown s: shutdownListeners) {
s.onShutdown();
}
}
});
}
@Override
public void registerStartupListener(Startup startupListener) {
startupListeners.add(startupListener);
}
@Override
public void registerShutdownListener(Shutdown shutdownListener) {
shutdownListeners.add(shutdownListener);
}
@Override
public void runStartupListeners() {
for(Startup s: startupListeners) {
s.onStartup();
}
}
}