Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
JENKINS-33996 improved issue selector pipeline snippet generator
  • Loading branch information
escoem committed May 13, 2016
1 parent 138d215 commit a80fa82
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 2 deletions.
@@ -1,7 +1,10 @@
package hudson.plugins.jira.pipeline;

import java.util.Collection;
import java.util.Set;

import hudson.model.Descriptor;
import jenkins.model.Jenkins;
import org.jenkinsci.plugins.workflow.steps.AbstractStepDescriptorImpl;
import org.jenkinsci.plugins.workflow.steps.AbstractStepImpl;
import org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution;
Expand Down Expand Up @@ -47,6 +50,10 @@ public DescriptorImpl() {
super(IssueSelectorStepExecution.class);
}

public Collection<? extends Descriptor<?>> getApplicableDescriptors() {
return Jenkins.getInstance().<AbstractIssueSelector, Descriptor<AbstractIssueSelector>>getDescriptorList(AbstractIssueSelector.class);
}

@Override
public String getFunctionName() {
return "jiraIssueSelector";
Expand Down
@@ -1,10 +1,15 @@
package hudson.plugins.jira.selector;

import java.util.Collections;
import java.util.List;
import java.util.Set;

import javax.annotation.CheckForNull;

import hudson.Extension;
import hudson.model.Descriptor;
import hudson.plugins.jira.Messages;
import org.apache.commons.lang.StringUtils;
import org.kohsuke.stapler.DataBoundConstructor;

import com.google.common.collect.Lists;
Expand All @@ -18,19 +23,42 @@ public class ExplicitIssueSelector extends AbstractIssueSelector {

@CheckForNull
private List<String> jiraIssueKeys;
private String issueKeys;

@DataBoundConstructor
public ExplicitIssueSelector(String jiraIssueKeys) {
this(Lists.newArrayList(jiraIssueKeys.split(",")));
public ExplicitIssueSelector(String issueKeys) {
this.jiraIssueKeys = StringUtils.isNotBlank(issueKeys) ? Lists.newArrayList(issueKeys.split(",")) : Collections.<String>emptyList();
this.issueKeys = issueKeys;
}

public ExplicitIssueSelector(List<String> jiraIssueKeys) {
this.jiraIssueKeys = jiraIssueKeys;
}

public ExplicitIssueSelector(){
this.jiraIssueKeys = Collections.<String>emptyList();
}

public void setIssueKeys(String issueKeys){
this.issueKeys = issueKeys;
this.jiraIssueKeys = Lists.newArrayList(issueKeys.split(","));
}

public String getIssueKeys(){
return issueKeys;
}

@Override
public Set<String> findIssueIds(Run<?, ?> run, JiraSite site, TaskListener listener) {
return Sets.newHashSet(jiraIssueKeys);
}

@Extension
public static final class DescriptorImpl extends Descriptor<AbstractIssueSelector> {
@Override
public String getDisplayName() {
return Messages.IssueSelector_ExplicitIssueSelector_DisplayName();
}
}

}
18 changes: 18 additions & 0 deletions src/main/java/hudson/plugins/jira/selector/JqlIssueSelector.java
Expand Up @@ -7,6 +7,9 @@
import java.util.List;
import java.util.Set;

import hudson.Extension;
import hudson.model.Descriptor;
import hudson.plugins.jira.Messages;
import org.kohsuke.stapler.DataBoundConstructor;

import com.atlassian.jira.rest.client.api.domain.Issue;
Expand All @@ -27,6 +30,14 @@ public JqlIssueSelector(String jql) {
this.jql = jql;
}

public void setJql(String jql){
this.jql = jql;
}

public String getJql() {
return jql;
}

@Override
public Set<String> findIssueIds(Run<?, ?> run, JiraSite site, TaskListener listener) {
try {
Expand All @@ -49,4 +60,11 @@ public Set<String> findIssueIds(Run<?, ?> run, JiraSite site, TaskListener liste
}
}

@Extension
public static final class DescriptorImpl extends Descriptor<AbstractIssueSelector> {
@Override
public String getDisplayName() {
return Messages.IssueSelector_JqlIssueSelector_DisplayName();
}
}
}
2 changes: 2 additions & 0 deletions src/main/resources/hudson/plugins/jira/Messages.properties
Expand Up @@ -35,3 +35,5 @@ CommentStep.Descriptor.DisplayName=JIRA: Add a comment to issue(s)
SearchIssuesStep.Descriptor.DisplayName=JIRA: Search issues
IssueSelectorStep.Descriptor.DisplayName=JIRA: Issue selector
JiraCreateIssueNotifier.DisplayName=JIRA: Create issue
IssueSelector.ExplicitIssueSelector.DisplayName=Explicit selector
IssueSelector.JqlIssueSelector.DisplayName=JQL selector
@@ -0,0 +1,4 @@
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:f="/lib/form">
<f:dropdownDescriptorSelector field="issueSelector" title="IssueSelector" descriptors="${descriptor.applicableDescriptors}"/>
</j:jelly>
@@ -0,0 +1,6 @@
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:f="/lib/form">
<f:entry field="issueKeys" title="Jira Issues List of keys">
<f:textbox />
</f:entry>
</j:jelly>
@@ -0,0 +1,6 @@
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:f="/lib/form">
<f:entry field="jql" title="JQL">
<f:textbox />
</f:entry>
</j:jelly>

0 comments on commit a80fa82

Please sign in to comment.