提交 69cb171c 编写于 作者: K kohsuke

Added an event callback for renaming a job (#891)


git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@5213 71c3de6d-444a-0410-be80-ed276b4c234a
上级 dc6fdf72
......@@ -3,6 +3,7 @@ package hudson.model;
import hudson.ExtensionPoint;
import hudson.Util;
import hudson.model.Descriptor.FormException;
import hudson.model.listeners.ItemListener;
import hudson.search.QuickSilver;
import hudson.search.SearchIndex;
import hudson.search.SearchIndexBuilder;
......@@ -366,15 +367,8 @@ public abstract class Job<JobT extends Job<JobT,RunT>, RunT extends Run<JobT,Run
parent.onRenamed((TopLevelItem)this,oldName,newName);
// update BuildTrigger of other projects that point to this object.
// can't we generalize this?
for( Project p : parent.getProjects() ) {
BuildTrigger t = (BuildTrigger) p.getPublishers().get(BuildTrigger.DESCRIPTOR);
if(t!=null) {
if(t.onJobRenamed(oldName,newName))
p.save();
}
}
for (ItemListener l : Hudson.getInstance().getJobListeners())
l.onRenamed(this,oldName,newName);
}
}
}
......
......@@ -3,6 +3,7 @@ package hudson.model.listeners;
import hudson.ExtensionPoint;
import hudson.model.Hudson;
import hudson.model.Item;
import hudson.model.Job;
/**
* @since 1.74
......@@ -29,4 +30,18 @@ public class ItemListener implements ExtensionPoint {
*/
public void onDeleted(Item item) {
}
/**
* Called after a job is renamed.
*
* @param item
* The job being renamed.
* @param oldName
* The old name of the job.
* @param newName
* The new name of the job. Same as {@link Item#getName()}.
* @since 1.146
*/
public void onRenamed(Item item, String oldName, String newName) {
}
}
......@@ -13,6 +13,7 @@ import hudson.ExtensionPoint;
*
* @author Kohsuke Kawaguchi
* @see Hudson#addListener(JobListener)
* @deprecated {@link ItemListener} is the generalized form of this.
*/
public abstract class JobListener implements ExtensionPoint {
/**
......
......@@ -9,18 +9,22 @@ import hudson.model.Hudson;
import hudson.model.Item;
import hudson.model.Items;
import hudson.model.Job;
import hudson.model.Project;
import hudson.model.Result;
import hudson.model.listeners.ItemListener;
import hudson.util.FormFieldValidator;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import org.kohsuke.stapler.DataBoundConstructor;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Collection;
import java.util.List;
import java.util.StringTokenizer;
import java.util.Collection;
import java.util.logging.Logger;
import java.util.logging.Level;
/**
* Triggers builds of other projects.
......@@ -146,6 +150,26 @@ public class BuildTrigger extends Publisher {
public static class DescriptorImpl extends Descriptor<Publisher> {
public DescriptorImpl() {
super(BuildTrigger.class);
Hudson.getInstance().getJobListeners().add(new ItemListener() {
@Override
public void onRenamed(Item item, String oldName, String newName) {
// update BuildTrigger of other projects that point to this object.
// can't we generalize this?
for( Project p : Hudson.getInstance().getProjects() ) {
BuildTrigger t = (BuildTrigger) p.getPublishers().get(BuildTrigger.DESCRIPTOR);
if(t!=null) {
if(t.onJobRenamed(oldName,newName)) {
try {
p.save();
} catch (IOException e) {
LOGGER.log(Level.WARNING, "Failed to persist project setting during rename from "+oldName+" to "+newName,e);
}
}
}
}
}
});
}
public String getDisplayName() {
......@@ -191,4 +215,6 @@ public class BuildTrigger extends Publisher {
}.process();
}
}
private static final Logger LOGGER = Logger.getLogger(BuildTrigger.class.getName());
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册