mirror of
https://github.com/jenkinsci/jenkins.git
synced 2026-11-14 04:22:16 +00:00
Merge branch 'JENKINS-24825'
This commit is contained in:
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>();
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in new issue
Block a user