From 69cb171cd2872ebe63efa0cca09dfeb9f39f1186 Mon Sep 17 00:00:00 2001 From: kohsuke Date: Wed, 10 Oct 2007 01:06:55 +0000 Subject: [PATCH] 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 --- core/src/main/java/hudson/model/Job.java | 12 ++------ .../hudson/model/listeners/ItemListener.java | 15 ++++++++++ .../hudson/model/listeners/JobListener.java | 1 + .../main/java/hudson/tasks/BuildTrigger.java | 30 +++++++++++++++++-- 4 files changed, 47 insertions(+), 11 deletions(-) diff --git a/core/src/main/java/hudson/model/Job.java b/core/src/main/java/hudson/model/Job.java index 42f7d5638d..ba8e4d1c06 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()); } -- GitLab