Merge branch 'JENKINS-24825'

This commit is contained in:
Nicolas De Loof committed 2014-09-24 23:21:04 +02:00
commit d54bc061b1
5 files changed
+51 -1

No files matched your search

@@ -42,6 +42,7 @@ import hudson.util.AlternativeUiTextProvider;
import hudson.util.AlternativeUiTextProvider.Message;
import hudson.util.AtomicFileWriter;
import hudson.util.IOUtils;
import jenkins.model.DirectlyModifiableTopLevelItemGroup;
import jenkins.model.Jenkins;
import org.apache.tools.ant.taskdefs.Copy;
import org.apache.tools.ant.types.FileSet;
@@ -312,6 +313,20 @@ public abstract class AbstractItem extends Actionable implements Item, HttpDelet
}
}
/**
* Notify this item it's been moved to another location, replaced by newItem (might be the same object, but not guaranteed).
* This method is executed <em>after</em> the item root directory has been moved to it's new location.
* <p>
* Derived classes can override this method to add some specific behavior on move, but have to call parent method
* so the item is actually setup within it's new parent.
*
* @see hudson.model.Items#move(AbstractItem, jenkins.model.DirectlyModifiableTopLevelItemGroup)
*/
public void movedTo(DirectlyModifiableTopLevelItemGroup destination, AbstractItem newItem, File destDir) throws IOException {
newItem.onLoad(destination, name);
}
/**
* Gets all the jobs that this {@link Item} contains as descendants.
*/
@@ -696,4 +711,5 @@ public abstract class AbstractItem extends Actionable implements Item, HttpDelet
* Replaceable pronoun of that points to a job. Defaults to "Job"/"Project" depending on the context.
*/
public static final Message<AbstractItem> PRONOUN = new Message<AbstractItem>();
}
+1 -1
View File
@@ -381,7 +381,7 @@ public class Items {
FileUtils.moveDirectory(item.getRootDir(), destDir);
oldParent.remove(item);
I newItem = destination.add(item, name);
newItem.onLoad(destination, name);
item.movedTo(destination, newItem, destDir);
ItemListener.fireLocationChange(newItem, oldFullName);
return newItem;
}
+14
View File
@@ -63,6 +63,7 @@ import hudson.widgets.HistoryWidget;
import hudson.widgets.HistoryWidget.Adapter;
import hudson.widgets.Widget;
import jenkins.model.BuildDiscarder;
import jenkins.model.DirectlyModifiableTopLevelItemGroup;
import jenkins.model.Jenkins;
import jenkins.model.ProjectNamingStrategy;
import jenkins.security.HexStringConfidentialKey;
@@ -70,6 +71,7 @@ import jenkins.util.io.OnMaster;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import org.apache.commons.io.FileUtils;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
@@ -628,6 +630,18 @@ public abstract class Job<JobT extends Job<JobT, RunT>, RunT extends Run<JobT, R
}
}
@Override
public void movedTo(DirectlyModifiableTopLevelItemGroup destination, AbstractItem newItem, File destDir) throws IOException {
Job newJob = (Job) newItem; // Missing covariant parameters type here.
File oldBuildDir = getBuildDir();
super.movedTo(destination, newItem, destDir);
File newBuildDir = getBuildDir();
if (oldBuildDir.isDirectory() && !newBuildDir.isDirectory()) {
FileUtils.forceMkdir(destDir.getParentFile());
FileUtils.moveDirectory(oldBuildDir, newBuildDir);
}
}
@Override public void delete() throws IOException, InterruptedException {
super.delete();
Util.deleteRecursive(getBuildDir());