package hudson.plugins.throttleconcurrents.pipeline; import hudson.Extension; import hudson.model.TaskListener; import hudson.plugins.throttleconcurrents.ThrottleJobProperty; import hudson.util.FormValidation; import hudson.util.ListBoxModel; import org.jenkinsci.plugins.workflow.steps.Step; import org.jenkinsci.plugins.workflow.steps.StepContext; import org.jenkinsci.plugins.workflow.steps.StepDescriptor; import org.jenkinsci.plugins.workflow.steps.StepExecution; import org.kohsuke.stapler.DataBoundConstructor; import org.kohsuke.stapler.QueryParameter; import javax.annotation.Nonnull; import java.io.Serializable; import java.util.Collections; import java.util.List; import java.util.Set; public class ThrottleStep extends Step implements Serializable { private List<String> categories; @DataBoundConstructor public ThrottleStep(@Nonnull List<String> categories) { this.categories = categories; } @Nonnull public List<String> getCategories() { return categories; } @Override public StepExecution start(StepContext context) throws Exception { return new ThrottleStepExecution(this, context); } private static final long serialVersionUID = 1L; @Extension public static final class DescriptorImpl extends StepDescriptor { @Override public String getFunctionName() { return "throttle"; } @Override public String getDisplayName() { return Messages.ThrottleStep_DisplayName(); } @Override public boolean takesImplicitBlockArgument() { return true; } @Override public Set<? extends Class<?>> getRequiredContext() { return Collections.singleton(TaskListener.class); } public FormValidation doCheckCategoryName(@QueryParameter String value) { return ThrottleJobProperty.fetchDescriptor().doCheckCategoryName(value); } public List<ThrottleJobProperty.ThrottleCategory> getCategories() { return ThrottleJobProperty.fetchDescriptor().getCategories(); } public ListBoxModel doFillCategoryItems() { return ThrottleJobProperty.fetchDescriptor().doFillCategoryItems(); } } }