提交 9b3f4885 编写于 作者: N Nicolas De Loof

[FIXED JENKINS-24825] define hudson.model.AbstractItem#movedTo

上级 7e09c4f8
......@@ -91,6 +91,9 @@ Upcoming changes</a>
<li class=bug>
umask setting on Debian did not work.
(<a href="https://github.com/jenkinsci/jenkins/pull/1397">pull 1397</a>)
<li class=bug>
handle job move when buildDir is configured to a custom location.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-24825">issue 24825</a>)
</ul>
</div><!--=END=-->
<h3><a name=v1.581>What's new in 1.581</a> (2014/09/21)</h3>
......
......@@ -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;
......@@ -308,6 +309,10 @@ public abstract class AbstractItem extends Actionable implements Item, HttpDelet
}
}
public void movedTo(DirectlyModifiableTopLevelItemGroup destination, AbstractItem newItem, File destDir) throws IOException {
newItem.onLoad(destination, name);
}
/**
* A pointless function to work around what appears to be a HotSpot problem. See JENKINS-5756 and bug 6933067
* on BugParade for more details.
......@@ -712,4 +717,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());
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册