From 710f168d4f5e203e02648e8d65908a0bae2d55b3 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Sun, 8 Jun 2014 21:58:13 -0400 Subject: [PATCH] @WithBridgeMethods and @AdaptField did not work to maintain binary compatibility. Existing code referring to a member of type AbstractBuild often called methods not present in Run. Changed to retain the existing fields and getters but deprecating them and introducing replacements. --- .../java/hudson/model/AbstractProject.java | 2 +- .../java/hudson/scm/AbstractScmTagAction.java | 25 +++++++++++-------- .../main/java/hudson/scm/ChangeLogSet.java | 16 ++++++------ .../main/java/hudson/triggers/SCMTrigger.java | 21 ++++++++-------- .../SCMTrigger/BuildAction/index.jelly | 4 +-- 5 files changed, 38 insertions(+), 30 deletions(-) diff --git a/core/src/main/java/hudson/model/AbstractProject.java b/core/src/main/java/hudson/model/AbstractProject.java index 961db7184f..5ddadd6ade 100644 --- a/core/src/main/java/hudson/model/AbstractProject.java +++ b/core/src/main/java/hudson/model/AbstractProject.java @@ -1940,7 +1940,7 @@ public abstract class AbstractProject

,R extends A } AbstractBuild getBuild() { - return (AbstractBuild) e.getParent().getBuild(); + return e.getParent().build; } } diff --git a/core/src/main/java/hudson/scm/AbstractScmTagAction.java b/core/src/main/java/hudson/scm/AbstractScmTagAction.java index c0c74b47a4..076824b436 100644 --- a/core/src/main/java/hudson/scm/AbstractScmTagAction.java +++ b/core/src/main/java/hudson/scm/AbstractScmTagAction.java @@ -23,7 +23,6 @@ */ package hudson.scm; -import com.infradna.tool.bridge_method_injector.WithBridgeMethods; import hudson.model.AbstractBuild; import hudson.model.TaskAction; import hudson.model.BuildBadgeAction; @@ -36,7 +35,6 @@ import org.kohsuke.stapler.StaplerResponse; import javax.servlet.ServletException; import java.io.IOException; import jenkins.model.RunAction2; -import org.jenkinsci.bytecode.AdaptField; /** * Common part of CVSSCM.TagAction and SubversionTagAction. @@ -50,10 +48,13 @@ import org.jenkinsci.bytecode.AdaptField; */ public abstract class AbstractScmTagAction extends TaskAction implements BuildBadgeAction, RunAction2 { - private transient /*final*/ Run build; + private transient /*final*/ Run run; + @Deprecated + protected transient /*final*/ AbstractBuild build; - protected AbstractScmTagAction(Run build) { - this.build = build; + protected AbstractScmTagAction(Run run) { + this.run = run; + this.build = run instanceof AbstractBuild ? (AbstractBuild) run : null; } @Deprecated @@ -73,9 +74,12 @@ public abstract class AbstractScmTagAction extends TaskAction implements BuildBa return SCM.TAG; } - @AdaptField(name="build", was=AbstractBuild.class) - @WithBridgeMethods(value=AbstractBuild.class, castRequired=true) - public Run getBuild() { + public Run getRun() { + return run; + } + + @Deprecated + public AbstractBuild getBuild() { return build; } @@ -92,7 +96,7 @@ public abstract class AbstractScmTagAction extends TaskAction implements BuildBa public abstract boolean isTagged(); protected ACL getACL() { - return build.getACL(); + return run.getACL(); } public void doIndex(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException { @@ -110,7 +114,8 @@ public abstract class AbstractScmTagAction extends TaskAction implements BuildBa } @Override public void onLoad(Run r) { - build = r; + run = r; + build = run instanceof AbstractBuild ? (AbstractBuild) run : null; } } diff --git a/core/src/main/java/hudson/scm/ChangeLogSet.java b/core/src/main/java/hudson/scm/ChangeLogSet.java index 0b1d6827e0..96fa1395b4 100644 --- a/core/src/main/java/hudson/scm/ChangeLogSet.java +++ b/core/src/main/java/hudson/scm/ChangeLogSet.java @@ -58,11 +58,14 @@ public abstract class ChangeLogSet implements Iter /** * Build whose change log this object represents. */ - private final Run build; + private final Run run; + @Deprecated + public final AbstractBuild build; private final RepositoryBrowser browser; - protected ChangeLogSet(Run build, RepositoryBrowser browser) { - this.build = build; + protected ChangeLogSet(Run run, RepositoryBrowser browser) { + this.run = run; + build = run instanceof AbstractBuild ? (AbstractBuild) run : null; this.browser = browser; } @@ -77,9 +80,8 @@ public abstract class ChangeLogSet implements Iter return build.getParent().getScm().getEffectiveBrowser(); } - @AdaptField(name="build", was=AbstractBuild.class) - public Run getBuild() { - return build; + public Run getRun() { + return run; } public RepositoryBrowser getBrowser() { @@ -238,7 +240,7 @@ public abstract class ChangeLogSet implements Iter MarkupText markup = new MarkupText(getMsg()); for (ChangeLogAnnotator a : ChangeLogAnnotator.all()) try { - a.annotate(parent.build,this,markup); + a.annotate(parent.run, this, markup); } catch(Exception e) { LOGGER.info("ChangeLogAnnotator " + a.toString() + " failed to annotate message '" + getMsg() + "'; " + e.getMessage()); } catch(Error e) { diff --git a/core/src/main/java/hudson/triggers/SCMTrigger.java b/core/src/main/java/hudson/triggers/SCMTrigger.java index 1da97ac12c..585aa142d0 100644 --- a/core/src/main/java/hudson/triggers/SCMTrigger.java +++ b/core/src/main/java/hudson/triggers/SCMTrigger.java @@ -68,7 +68,6 @@ import jenkins.triggers.SCMTriggerItem; import net.sf.json.JSONObject; import org.apache.commons.io.FileUtils; import org.apache.commons.jelly.XMLOutput; -import org.jenkinsci.bytecode.AdaptField; import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.restrictions.NoExternalUse; import org.kohsuke.stapler.DataBoundConstructor; @@ -318,11 +317,13 @@ public class SCMTrigger extends Trigger { * @since 1.376 */ public static class BuildAction implements RunAction2 { - - private transient /*final*/ Run build; + private transient /*final*/ Run run; + @Deprecated + public transient /*final*/ AbstractBuild build; - public BuildAction(Run build) { - this.build = build; + public BuildAction(Run run) { + this.run = run; + build = run instanceof AbstractBuild ? (AbstractBuild) run : null; } @Deprecated @@ -330,16 +331,15 @@ public class SCMTrigger extends Trigger { this((Run) build); } - @AdaptField(name="build", was=AbstractBuild.class) - public Run getBuild() { - return build; + public Run getRun() { + return run; } /** * Polling log that triggered the build. */ public File getPollingLogFile() { - return new File(build.getRootDir(),"polling.log"); + return new File(run.getRootDir(),"polling.log"); } public String getIconFileName() { @@ -385,7 +385,8 @@ public class SCMTrigger extends Trigger { } @Override public void onLoad(Run r) { - build = r; + run = r; + build = run instanceof AbstractBuild ? (AbstractBuild) run : null; } } diff --git a/core/src/main/resources/hudson/triggers/SCMTrigger/BuildAction/index.jelly b/core/src/main/resources/hudson/triggers/SCMTrigger/BuildAction/index.jelly index 4f9b29c34c..baa24edc34 100644 --- a/core/src/main/resources/hudson/triggers/SCMTrigger/BuildAction/index.jelly +++ b/core/src/main/resources/hudson/triggers/SCMTrigger/BuildAction/index.jelly @@ -27,8 +27,8 @@ THE SOFTWARE. --> - - + +

${%Polling Log}

-- GitLab