diff --git a/core/src/main/java/hudson/model/Job.java b/core/src/main/java/hudson/model/Job.java index 42f7d5638de61a434f16763dcacfa7c4c6aa583e..ba8e4d1c06e3f537ab464b7b202774931372ef55 100644 --- a/core/src/main/java/hudson/model/Job.java +++ b/core/src/main/java/hudson/model/Job.java @@ -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, RunT extends Run { 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()); }