Skip to content

Commit

Permalink
[FIXED JENKINS-17565] allow to address jobs by displayName in bot com…
Browse files Browse the repository at this point in the history
…mands
  • Loading branch information
kutzi committed May 26, 2013
1 parent fa839a2 commit 579d105
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 3 deletions.
Expand Up @@ -109,7 +109,7 @@ Pair<Mode, String> getProjects(Sender sender, String[] args, Collection<Abstract
mode = Mode.SINGLE;
String jobName = MessageHelper.getJoinedName(args, 1);

AbstractProject<?, ?> project = getJobProvider().getJobByName(jobName);
AbstractProject<?, ?> project = getJobProvider().getJobByNameOrDisplayName(jobName);
if (project != null) {
projects.add(project);
} else {
Expand Down
Expand Up @@ -55,7 +55,7 @@ protected String getReply(Bot bot, Sender sender, String[] args) {
jobName = args[1].replace("\"", "");
remainingArgs = MessageHelper.copyOfRange(args, 2, args.length);
}
AbstractProject<?, ?> job = getJobProvider().getJobByName(jobName);
AbstractProject<?, ?> job = getJobProvider().getJobByNameOrDisplayName(jobName);
if (job != null) {
if (!job.hasPermission(getRequiredPermission())) {
return "You don't have the permissions to perform this command on this job.";
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/hudson/plugins/im/bot/BuildCommand.java
Expand Up @@ -62,7 +62,7 @@ public String getReply(Bot bot, Sender sender, String args[]) {
if (args.length >= 2) {
String jobName = args[1];
jobName = jobName.replaceAll("\"", "");
AbstractProject<?, ?> project = getJobProvider().getJobByName(jobName);
AbstractProject<?, ?> project = getJobProvider().getJobByNameOrDisplayName(jobName);
if (project != null) {

String checkPermission = checkPermission(sender, project);
Expand Down
19 changes: 19 additions & 0 deletions src/main/java/hudson/plugins/im/bot/DefaultJobProvider.java
Expand Up @@ -18,6 +18,25 @@ public class DefaultJobProvider implements JobProvider {
public AbstractProject<?, ?> getJobByName(String name) {
return Jenkins.getInstance().getItemByFullName(name, AbstractProject.class);
}


@SuppressWarnings("rawtypes")
@Override
public AbstractProject<?, ?> getJobByDisplayName(String displayName) {
List<AbstractProject> allItems = Jenkins.getInstance().getAllItems(AbstractProject.class);
for (AbstractProject job : allItems) {
if (displayName.equals(job.getDisplayName())) {
return job;
}
}
return null;
}

@Override
public AbstractProject<?, ?> getJobByNameOrDisplayName(String name) {
AbstractProject<?,?> jobByName = getJobByName(name);
return jobByName != null ? jobByName : getJobByDisplayName(name);
}

@SuppressWarnings("unchecked")
@Override
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/hudson/plugins/im/bot/JobProvider.java
Expand Up @@ -16,6 +16,21 @@ public interface JobProvider {
@CheckForNull
AbstractProject<?, ?> getJobByName(String name);

/**
* Returns the Jenkins job with the given display name or null
* if no job with that display name exists.
* <p>
* Attention: this might be relativley expensive, if you've a lot of Jenkins jobs!
*/
@CheckForNull
AbstractProject<?, ?> getJobByDisplayName(String displayName);

/**
* Convenience method to 1st try to get by name and then by display name.
*/
@CheckForNull
AbstractProject<?, ?> getJobByNameOrDisplayName(String displayName);

/**
* Returns all Jenkins jobs.
*
Expand Down

0 comments on commit 579d105

Please sign in to comment.