package jenkins.scm;
import com.google.common.collect.Lists;
import hudson.DescriptorExtensionList;
import hudson.model.AbstractProject;
import hudson.model.Descriptor;
import jenkins.model.Jenkins;
import java.util.List;
/**
* {@link Descriptor} for {@link SCMCheckoutStrategy}.
*
*/
public abstract class SCMCheckoutStrategyDescriptor extends Descriptor<SCMCheckoutStrategy> {
protected SCMCheckoutStrategyDescriptor(Class<? extends SCMCheckoutStrategy> clazz) {
super(clazz);
}
protected SCMCheckoutStrategyDescriptor() {
}
/**
* Allows {@link SCMCheckoutStrategyDescriptor} to target specific kind of projects,
* such as matrix projects.
*/
public abstract boolean isApplicable(AbstractProject project);
/**
* Returns all the registered {@link SCMCheckoutStrategy}s.
*/
public static DescriptorExtensionList<SCMCheckoutStrategy,SCMCheckoutStrategyDescriptor> all() {
return Jenkins.getInstance().<SCMCheckoutStrategy,SCMCheckoutStrategyDescriptor>getDescriptorList(SCMCheckoutStrategy.class);
}
public static List<SCMCheckoutStrategyDescriptor> _for(AbstractProject p) {
List<SCMCheckoutStrategyDescriptor> r = Lists.newArrayList();
for (SCMCheckoutStrategyDescriptor d : all()) {
if (d.isApplicable(p))
r.add(d);
}
return r;
}
}