diff --git a/changelog.html b/changelog.html index 6b28f28e54717ef0ead2b11eb51daed1a1c9dc22..42e5e362973ddf22b79af3d118fd26da0eb82bcc 100644 --- a/changelog.html +++ b/changelog.html @@ -66,6 +66,9 @@ Upcoming changes
/login
offers link to /opensearch.xml
which anonymous users cannot retrieve.
(issue 21254)
diff --git a/core/src/main/java/hudson/model/AbstractProject.java b/core/src/main/java/hudson/model/AbstractProject.java
index 507cdee785c442a4cc3ee13b1c1dda3c9a64d136..5e8b7277a674c344efe241fd2ec06dd923ab1c1a 100644
--- a/core/src/main/java/hudson/model/AbstractProject.java
+++ b/core/src/main/java/hudson/model/AbstractProject.java
@@ -27,15 +27,16 @@
*/
package hudson.model;
-import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
-import hudson.EnvVars;
-import hudson.ExtensionPoint;
-import hudson.Functions;
import antlr.ANTLRException;
+import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
import hudson.AbortException;
import hudson.CopyOnWrite;
+import hudson.EnvVars;
+import hudson.Extension;
+import hudson.ExtensionPoint;
import hudson.FeedAdapter;
import hudson.FilePath;
+import hudson.Functions;
import hudson.Launcher;
import hudson.Util;
import hudson.cli.declarative.CLIMethod;
@@ -48,21 +49,23 @@ import hudson.model.Fingerprint.RangeSet;
import hudson.model.PermalinkProjectAction.Permalink;
import hudson.model.Queue.Executable;
import hudson.model.Queue.Task;
-import hudson.model.queue.QueueTaskFuture;
-import hudson.model.queue.ScheduleResult;
-import hudson.model.queue.SubTask;
import hudson.model.RunMap.Constructor;
import hudson.model.labels.LabelAtom;
import hudson.model.labels.LabelExpression;
import hudson.model.listeners.ItemListener;
import hudson.model.listeners.SCMPollListener;
import hudson.model.queue.CauseOfBlockage;
+import hudson.model.queue.QueueTaskFuture;
+import hudson.model.queue.ScheduleResult;
+import hudson.model.queue.SubTask;
import hudson.model.queue.SubTaskContributor;
import hudson.node_monitors.DiskSpaceMonitor;
import hudson.scm.ChangeLogSet;
import hudson.scm.ChangeLogSet.Entry;
import hudson.scm.NullSCM;
import hudson.scm.PollingResult;
+
+import static hudson.scm.PollingResult.*;
import hudson.scm.SCM;
import hudson.scm.SCMRevisionState;
import hudson.scm.SCMS;
@@ -85,6 +88,32 @@ import hudson.util.FormValidation;
import hudson.util.TimeUnit2;
import hudson.widgets.BuildHistoryWidget;
import hudson.widgets.HistoryWidget;
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.Vector;
+import java.util.concurrent.Future;
+import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+import javax.servlet.ServletException;
+import static javax.servlet.http.HttpServletResponse.*;
import jenkins.model.Jenkins;
import jenkins.model.JenkinsLocationConfiguration;
import jenkins.model.ModelObjectWithChildren;
@@ -100,6 +129,7 @@ import org.acegisecurity.context.SecurityContext;
import org.acegisecurity.context.SecurityContextHolder;
import org.jenkinsci.bytecode.AdaptField;
import org.kohsuke.accmod.Restricted;
+import org.kohsuke.accmod.restrictions.DoNotUse;
import org.kohsuke.accmod.restrictions.NoExternalUse;
import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.CmdLineException;
@@ -115,35 +145,6 @@ import org.kohsuke.stapler.StaplerResponse;
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.interceptor.RequirePOST;
-import javax.annotation.Nonnull;
-import javax.servlet.ServletException;
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.TreeMap;
-import java.util.Vector;
-import java.util.concurrent.Future;
-import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import static hudson.scm.PollingResult.*;
-import javax.annotation.CheckForNull;
-import static javax.servlet.http.HttpServletResponse.*;
-
/**
* Base implementation of {@link Job}s that build software.
*
@@ -1672,13 +1673,6 @@ public abstract class AbstractProject,R extends A
updateTransientActions();
}
- @Override
- public void renameTo(String newName) throws IOException {
- super.renameTo(newName);
- // Update locations inside builds cache
- builds.updateBaseDir(getBuildDir());
- }
-
protected final synchronized ,R extends A
public abstract FormValidation check(@Nonnull AbstractProject, ?> project, @Nonnull Label label);
}
+ @Restricted(DoNotUse.class)
+ @Extension public static final class ItemListenerImpl extends ItemListener {
+ @Override public void onLocationChanged(Item item, String oldFullName, String newFullName) {
+ if (item instanceof AbstractProject) {
+ AbstractProject p = (AbstractProject) item;
+ p.builds.updateBaseDir(p.getBuildDir());
+ }
+ }
+ }
+
}
diff --git a/test/src/test/groovy/hudson/model/AbstractProjectTest.groovy b/test/src/test/groovy/hudson/model/AbstractProjectTest.groovy
index 723ae2fff474e39afa87d473478a512d498256c9..a36a740a46033a8992f6acf84d8f274549edb1e1 100644
--- a/test/src/test/groovy/hudson/model/AbstractProjectTest.groovy
+++ b/test/src/test/groovy/hudson/model/AbstractProjectTest.groovy
@@ -388,6 +388,10 @@ public class AbstractProjectTest extends HudsonTestCase {
assertEquals(p, jenkins.getItemByFullName("d/edited"));
p._getRuns().purgeCache();
assertEquals(1, p.getBuilds().size());
+ d.renameTo("d2");
+ p = jenkins.getItemByFullName("d2/edited");
+ p._getRuns().purgeCache();
+ assertEquals(1, p.getBuilds().size());
}
@Bug(17575)