提交 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; ...@@ -3,6 +3,7 @@ package hudson.model;
import hudson.ExtensionPoint; import hudson.ExtensionPoint;
import hudson.Util; import hudson.Util;
import hudson.model.Descriptor.FormException; import hudson.model.Descriptor.FormException;
import hudson.model.listeners.ItemListener;
import hudson.search.QuickSilver; import hudson.search.QuickSilver;
import hudson.search.SearchIndex; import hudson.search.SearchIndex;
import hudson.search.SearchIndexBuilder; import hudson.search.SearchIndexBuilder;
...@@ -366,15 +367,8 @@ public abstract class Job<JobT extends Job<JobT,RunT>, RunT extends Run<JobT,Run ...@@ -366,15 +367,8 @@ public abstract class Job<JobT extends Job<JobT,RunT>, RunT extends Run<JobT,Run
parent.onRenamed((TopLevelItem)this,oldName,newName); parent.onRenamed((TopLevelItem)this,oldName,newName);
// update BuildTrigger of other projects that point to this object. for (ItemListener l : Hudson.getInstance().getJobListeners())
// can't we generalize this? l.onRenamed(this,oldName,newName);
for( Project p : parent.getProjects() ) {
BuildTrigger t = (BuildTrigger) p.getPublishers().get(BuildTrigger.DESCRIPTOR);
if(t!=null) {
if(t.onJobRenamed(oldName,newName))
p.save();
}
}
} }
} }
} }
......
...@@ -3,6 +3,7 @@ package hudson.model.listeners; ...@@ -3,6 +3,7 @@ package hudson.model.listeners;
import hudson.ExtensionPoint; import hudson.ExtensionPoint;
import hudson.model.Hudson; import hudson.model.Hudson;
import hudson.model.Item; import hudson.model.Item;
import hudson.model.Job;
/** /**
* @since 1.74 * @since 1.74
...@@ -29,4 +30,18 @@ public class ItemListener implements ExtensionPoint { ...@@ -29,4 +30,18 @@ public class ItemListener implements ExtensionPoint {
*/ */
public void onDeleted(Item item) { 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; ...@@ -13,6 +13,7 @@ import hudson.ExtensionPoint;
* *
* @author Kohsuke Kawaguchi * @author Kohsuke Kawaguchi
* @see Hudson#addListener(JobListener) * @see Hudson#addListener(JobListener)
* @deprecated {@link ItemListener} is the generalized form of this.
*/ */
public abstract class JobListener implements ExtensionPoint { public abstract class JobListener implements ExtensionPoint {
/** /**
......
...@@ -9,18 +9,22 @@ import hudson.model.Hudson; ...@@ -9,18 +9,22 @@ import hudson.model.Hudson;
import hudson.model.Item; import hudson.model.Item;
import hudson.model.Items; import hudson.model.Items;
import hudson.model.Job; import hudson.model.Job;
import hudson.model.Project;
import hudson.model.Result; import hudson.model.Result;
import hudson.model.listeners.ItemListener;
import hudson.util.FormFieldValidator; import hudson.util.FormFieldValidator;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse; import org.kohsuke.stapler.StaplerResponse;
import org.kohsuke.stapler.DataBoundConstructor;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import java.io.IOException; import java.io.IOException;
import java.io.PrintStream; import java.io.PrintStream;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.util.Collection; import java.util.logging.Logger;
import java.util.logging.Level;
/** /**
* Triggers builds of other projects. * Triggers builds of other projects.
...@@ -146,6 +150,26 @@ public class BuildTrigger extends Publisher { ...@@ -146,6 +150,26 @@ public class BuildTrigger extends Publisher {
public static class DescriptorImpl extends Descriptor<Publisher> { public static class DescriptorImpl extends Descriptor<Publisher> {
public DescriptorImpl() { public DescriptorImpl() {
super(BuildTrigger.class); 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() { public String getDisplayName() {
...@@ -191,4 +215,6 @@ public class BuildTrigger extends Publisher { ...@@ -191,4 +215,6 @@ public class BuildTrigger extends Publisher {
}.process(); }.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.
先完成此消息的编辑!
想要评论请 注册