package jenkins.install;
import java.util.List;
import javax.inject.Provider;
import hudson.ExtensionList;
import hudson.ExtensionPoint;
/**
* Allows plugging in to the lifecycle when determining InstallState
* from {@link InstallUtil#getNextInstallState(InstallState)}
*/
public abstract class InstallStateFilter implements ExtensionPoint {
/**
* Determine the current or next install state, proceed with `return proceed.next()`
*/
public abstract InstallState getNextInstallState(InstallState current, Provider<InstallState> proceed);
/**
* Get all the InstallStateFilters, in extension order
*/
public static List<InstallStateFilter> all() {
return ExtensionList.lookup(InstallStateFilter.class);
}
}