diff --git a/changelog.html b/changelog.html index 939547323b..8c2375e3fc 100644 --- a/changelog.html +++ b/changelog.html @@ -55,7 +55,12 @@ Upcoming changes

What's new in 1.636 (2015/11/01)

diff --git a/core/src/main/java/hudson/console/AnnotatedLargeText.java b/core/src/main/java/hudson/console/AnnotatedLargeText.java index 89e307bf22..6f11fe3319 100644 --- a/core/src/main/java/hudson/console/AnnotatedLargeText.java +++ b/core/src/main/java/hudson/console/AnnotatedLargeText.java @@ -156,7 +156,6 @@ public class AnnotatedLargeText extends LargeText { /** * Calls {@link LargeText#writeLogTo(long, OutputStream)} without stripping annotations as {@link #writeLogTo(long, OutputStream)} would. - * @inheritDoc * @since 1.577 */ public long writeRawLogTo(long start, OutputStream out) throws IOException { diff --git a/core/src/main/java/hudson/model/AbstractDescribableImpl.java b/core/src/main/java/hudson/model/AbstractDescribableImpl.java index 5961a80834..07ed386a93 100644 --- a/core/src/main/java/hudson/model/AbstractDescribableImpl.java +++ b/core/src/main/java/hudson/model/AbstractDescribableImpl.java @@ -37,6 +37,7 @@ public abstract class AbstractDescribableImpl{@inheritDoc} */ + @Override public Descriptor getDescriptor() { return Jenkins.getInstance().getDescriptorOrDie(getClass()); } diff --git a/core/src/main/java/hudson/model/AbstractProject.java b/core/src/main/java/hudson/model/AbstractProject.java index 7e75d391aa..f2fc2f5660 100644 --- a/core/src/main/java/hudson/model/AbstractProject.java +++ b/core/src/main/java/hudson/model/AbstractProject.java @@ -1090,6 +1090,7 @@ public abstract class AbstractProject

,R extends A * or if the blockBuildWhenUpstreamBuilding option is true and an upstream * project is building, but derived classes can also check other conditions. */ + @Override public boolean isBuildBlocked() { return getCauseOfBlockage()!=null; } diff --git a/core/src/main/java/hudson/model/Computer.java b/core/src/main/java/hudson/model/Computer.java index a3ddb20720..547e51c753 100644 --- a/core/src/main/java/hudson/model/Computer.java +++ b/core/src/main/java/hudson/model/Computer.java @@ -587,6 +587,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces /** * {@inheritDoc} */ + @Override public void taskAccepted(Executor executor, Queue.Task task) { // dummy implementation } @@ -594,6 +595,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces /** * {@inheritDoc} */ + @Override public void taskCompleted(Executor executor, Queue.Task task, long durationMS) { // dummy implementation } @@ -601,6 +603,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces /** * {@inheritDoc} */ + @Override public void taskCompletedWithProblems(Executor executor, Queue.Task task, long durationMS, Throwable problems) { // dummy implementation } diff --git a/core/src/main/java/hudson/model/HealthReport.java b/core/src/main/java/hudson/model/HealthReport.java index bf8c776d77..0217a211ab 100644 --- a/core/src/main/java/hudson/model/HealthReport.java +++ b/core/src/main/java/hudson/model/HealthReport.java @@ -325,6 +325,7 @@ public class HealthReport implements Serializable, Comparable { /** * {@inheritDoc} */ + @Override public int compareTo(HealthReport o) { return (this.score < o.score ? -1 : (this.score == o.score ? 0 : 1)); } diff --git a/core/src/main/java/hudson/model/JDK.java b/core/src/main/java/hudson/model/JDK.java index a805063940..ca9bf0aac6 100644 --- a/core/src/main/java/hudson/model/JDK.java +++ b/core/src/main/java/hudson/model/JDK.java @@ -67,7 +67,7 @@ public final class JDK extends ToolInstallation implements NodeSpecific, En // DEFAULT_NAME took this value prior to 1.598. return true; } - return DEFAULT_NAME.equals(name); + return DEFAULT_NAME.equals(name) || name == null; } /** diff --git a/core/src/main/java/hudson/model/JobProperty.java b/core/src/main/java/hudson/model/JobProperty.java index b5d505da01..4de88173d8 100644 --- a/core/src/main/java/hudson/model/JobProperty.java +++ b/core/src/main/java/hudson/model/JobProperty.java @@ -99,6 +99,7 @@ public abstract class JobProperty> implements ReconfigurableD /** * {@inheritDoc} */ + @Override public JobPropertyDescriptor getDescriptor() { return (JobPropertyDescriptor) Jenkins.getInstance().getDescriptorOrDie(getClass()); } @@ -153,6 +154,7 @@ public abstract class JobProperty> implements ReconfigurableD *

* Invoked after {@link Publisher}s have run. */ + @Override public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { return true; } diff --git a/core/src/main/java/hudson/model/ManagementLink.java b/core/src/main/java/hudson/model/ManagementLink.java index ba304a402d..dca459ca70 100644 --- a/core/src/main/java/hudson/model/ManagementLink.java +++ b/core/src/main/java/hudson/model/ManagementLink.java @@ -79,6 +79,7 @@ public abstract class ManagementLink implements ExtensionPoint, Action { * In case of {@link ManagementLink}, this value is put straight into the href attribute, * so relative paths are interpreted against the root {@link Jenkins} object. */ + @Override public abstract String getUrlName(); /** diff --git a/core/src/main/java/hudson/model/ParameterDefinition.java b/core/src/main/java/hudson/model/ParameterDefinition.java index 63438fbf81..20250924d9 100644 --- a/core/src/main/java/hudson/model/ParameterDefinition.java +++ b/core/src/main/java/hudson/model/ParameterDefinition.java @@ -155,6 +155,7 @@ public abstract class ParameterDefinition implements /** * {@inheritDoc} */ + @Override public ParameterDescriptor getDescriptor() { return (ParameterDescriptor) Jenkins.getInstance().getDescriptorOrDie(getClass()); } diff --git a/core/src/main/java/hudson/security/SecurityRealm.java b/core/src/main/java/hudson/security/SecurityRealm.java index 0621d4a440..577f7f60f5 100644 --- a/core/src/main/java/hudson/security/SecurityRealm.java +++ b/core/src/main/java/hudson/security/SecurityRealm.java @@ -202,6 +202,7 @@ public abstract class SecurityRealm extends AbstractDescribableImplconfig.jelly and never with * global.jelly. */ + @Override public Descriptor getDescriptor() { return super.getDescriptor(); } diff --git a/core/src/main/java/hudson/security/csrf/CrumbFilter.java b/core/src/main/java/hudson/security/csrf/CrumbFilter.java index 615dd7f376..9cecfa5daa 100644 --- a/core/src/main/java/hudson/security/csrf/CrumbFilter.java +++ b/core/src/main/java/hudson/security/csrf/CrumbFilter.java @@ -104,6 +104,7 @@ public class CrumbFilter implements Filter { /** * {@inheritDoc} */ + @Override public void destroy() { } diff --git a/core/src/main/java/hudson/slaves/ComputerRetentionWork.java b/core/src/main/java/hudson/slaves/ComputerRetentionWork.java index 1a1ad382e4..7dbfb0de96 100644 --- a/core/src/main/java/hudson/slaves/ComputerRetentionWork.java +++ b/core/src/main/java/hudson/slaves/ComputerRetentionWork.java @@ -55,6 +55,7 @@ public class ComputerRetentionWork extends PeriodicWork { * {@inheritDoc} */ @SuppressWarnings("unchecked") + @Override protected void doRun() { final long startRun = System.currentTimeMillis(); for (final Computer c : Jenkins.getInstance().getComputers()) { diff --git a/core/src/main/java/hudson/tasks/BuildStepCompatibilityLayer.java b/core/src/main/java/hudson/tasks/BuildStepCompatibilityLayer.java index 4f2db842a8..fb5df2daad 100644 --- a/core/src/main/java/hudson/tasks/BuildStepCompatibilityLayer.java +++ b/core/src/main/java/hudson/tasks/BuildStepCompatibilityLayer.java @@ -65,6 +65,7 @@ public abstract class BuildStepCompatibilityLayer implements BuildStep { * @inheritDoc * @return Delegates to {@link SimpleBuildStep#perform(Run, FilePath, Launcher, TaskListener)} if possible, always returning true or throwing an error. */ + @Override public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { if (this instanceof SimpleBuildStep) { // delegate to the overloaded version defined in SimpleBuildStep diff --git a/core/src/main/java/jenkins/model/AssetManager.java b/core/src/main/java/jenkins/model/AssetManager.java deleted file mode 100644 index 94748d5205..0000000000 --- a/core/src/main/java/jenkins/model/AssetManager.java +++ /dev/null @@ -1,127 +0,0 @@ -package jenkins.model; - -import hudson.Extension; -import hudson.Plugin; -import hudson.model.UnprotectedRootAction; -import hudson.util.TimeUnit2; -import org.kohsuke.stapler.StaplerRequest; -import org.kohsuke.stapler.StaplerResponse; - -import javax.inject.Inject; -import javax.servlet.ServletException; -import java.io.IOException; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.net.URL; -import java.util.Enumeration; - -/** - * @author Kohsuke Kawaguchi - */ -@Extension -public class AssetManager implements UnprotectedRootAction { - @Inject - Jenkins jenkins; - - // not shown in the UI - @Override - public String getIconFileName() { - return null; - } - - @Override - public String getDisplayName() { - return null; - } - - @Override - public String getUrlName() { - return "assets"; - } - - /** - * Binds the plugin asset space to the URL space. - */ - public AssetSpace getPlugin(String shortName) { - Plugin p = jenkins.getPlugin(shortName); - if (p==null) return null; - return new AssetSpace(p.getWrapper().classLoader); - } - - /** - * Binds the core asset space to the URL space. - */ - public AssetSpace getCore() { - return new AssetSpace(Jenkins.class.getClassLoader()); - } - - /** - * Represents assets that belong to one classloader, such as a plugin or core. - */ - final class AssetSpace { - private final ClassLoader cl; - - private AssetSpace(ClassLoader cl) { - this.cl = cl; - } - - /** - * Exposes assets in the classloader over HTTP. - */ - public void doDynamic(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException { - String path = req.getRestOfPath(); - - // Stapler routes requests like the "/static/.../foo/bar/zot" to be treated like "/foo/bar/zot" - // and this is used to serve long expiration header, by using Jenkins.VERSION_HASH as "..." - // to create unique URLs. Recognize that and set a long expiration header. - String requestPath = req.getRequestURI().substring(req.getContextPath().length()); - boolean staticLink = requestPath.startsWith("/static/"); - - long expires = staticLink ? TimeUnit2.DAYS.toMillis(365) : -1; - - // use serveLocalizedFile to support automatic locale selection - rsp.serveLocalizedFile(req, findResource(path), expires); - } - - /** - * Locates the asset from the classloader. - * - *

- * To allow plugins to bring its own assets without worrying about colliding with the assets in core, - * look for child classloader first. But to support plugins that get split, if the child classloader - * doesn't find it, fall back to the parent classloader. - */ - private URL findResource(String path) throws IOException { - try { - if (path.contains("..")) // crude avoidance of directory traversal attack - throw new IllegalArgumentException(path); - - String name = "assets/" + path; - - URL url = (URL) $findResource.invoke(cl, name); - if (url==null) { - // pick the last one, which is the one closest to the leaf of the classloader tree. - Enumeration e = cl.getResources(name); - while (e.hasMoreElements()) { - url = e.nextElement(); - } - } - return url; - } catch (InvocationTargetException|IllegalAccessException e) { - throw new Error(e); - } - } - } - - private static final Method $findResource = init(); - - private static Method init() { - try { - Method m = ClassLoader.class.getDeclaredMethod("findResource", String.class); - m.setAccessible(true); - return m; - } catch (NoSuchMethodException e) { - throw (Error)new NoSuchMethodError().initCause(e); - } - } -} diff --git a/core/src/main/java/jenkins/model/IdStrategy.java b/core/src/main/java/jenkins/model/IdStrategy.java index 8ccf691898..b9413cafbc 100644 --- a/core/src/main/java/jenkins/model/IdStrategy.java +++ b/core/src/main/java/jenkins/model/IdStrategy.java @@ -161,6 +161,7 @@ public abstract class IdStrategy extends AbstractDescribableImpl imp /** * {@inheritDoc} */ + @Override @Nonnull public String keyFor(@Nonnull String id) { return id.toLowerCase(Locale.ENGLISH); @@ -288,6 +289,7 @@ public abstract class IdStrategy extends AbstractDescribableImpl imp /** * {@inheritDoc} */ + @Override @Nonnull public String keyFor(@Nonnull String id) { return id; @@ -348,6 +350,7 @@ public abstract class IdStrategy extends AbstractDescribableImpl imp /** * {@inheritDoc} */ + @Override @Nonnull public String keyFor(@Nonnull String id) { int index = id.lastIndexOf('@'); // The @ can be used in local-part if quoted correctly diff --git a/core/src/test/java/jenkins/model/JDKNameTest.java b/core/src/test/java/jenkins/model/JDKNameTest.java index f3e8502f51..491689aaef 100644 --- a/core/src/test/java/jenkins/model/JDKNameTest.java +++ b/core/src/test/java/jenkins/model/JDKNameTest.java @@ -36,8 +36,8 @@ import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) public class JDKNameTest { @Test - public void nullIsNotDefaultName() { - assertThat(JDK.isDefaultName(null), is(false)); + public void nullIsDefaultName() { + assertThat(JDK.isDefaultName(null), is(true)); } @Test