From 5dc22239af4d3e0c004ee01462f0bfffd61f22cc Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Tue, 21 Jan 2025 16:29:07 -0800 Subject: [PATCH] Migrate from EE 8 to EE 9 --- plugin/pom.xml | 4 ++-- .../workflow/cps/CpsFlowDefinition.java | 22 ++++++++++++++++++- .../workflow/cps/CpsScmFlowDefinition.java | 4 ++-- .../workflow/cps/CpsThreadDumpAction.java | 6 ++--- .../plugins/workflow/cps/Snippetizer.java | 8 +++---- .../plugins/workflow/cps/SnippetizerLink.java | 4 ++-- .../workflow/cps/replay/ReplayAction.java | 12 +++++----- pom.xml | 6 +++-- 8 files changed, 44 insertions(+), 22 deletions(-) diff --git a/plugin/pom.xml b/plugin/pom.xml index 7dadf7c4a..fae380acd 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -49,8 +49,8 @@ io.jenkins.tools.bom - bom-2.452.x - 3696.vb_b_4e2d1a_0542 + bom-${jenkins.baseline}.x + 3850.vb_c5319efa_e29 import pom diff --git a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsFlowDefinition.java b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsFlowDefinition.java index 76d491017..06f295fb6 100644 --- a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsFlowDefinition.java +++ b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsFlowDefinition.java @@ -28,6 +28,7 @@ import edu.umd.cs.findbugs.annotations.NonNull; import hudson.AbortException; import hudson.Extension; +import hudson.Util; import hudson.model.Action; import hudson.model.Descriptor; import hudson.model.Failure; @@ -68,6 +69,7 @@ import org.kohsuke.stapler.QueryParameter; import org.kohsuke.stapler.Stapler; import org.kohsuke.stapler.StaplerRequest; +import org.kohsuke.stapler.StaplerRequest2; import org.kohsuke.stapler.interceptor.RequirePOST; /** @@ -89,7 +91,7 @@ public CpsFlowDefinition(String script) throws Descriptor.FormException { @DataBoundConstructor public CpsFlowDefinition(String script, boolean sandbox) throws Descriptor.FormException { ScriptApproval.validateSandbox(sandbox); - StaplerRequest req = Stapler.getCurrentRequest(); + StaplerRequest2 req = Stapler.getCurrentRequest2(); this.script = sandbox ? script : ScriptApproval.get().configuring(script, GroovyLanguage.get(), ApprovalContext.create().withCurrentUser().withItemAsKey(req != null ? req.findAncestorObject(Item.class) : null), req == null); this.sandbox = sandbox; @@ -146,8 +148,26 @@ public static class DescriptorImpl extends FlowDefinitionDescriptor { * @DataBoundSetters have been invoked (rather than in the @DataBoundConstructor), which is why we use Descriptor.newInstance. */ @Override + public FlowDefinition newInstance(@NonNull StaplerRequest2 req, @NonNull JSONObject formData) throws FormException { + if (Util.isOverridden(FlowDefinitionDescriptor.class, getClass(), "newInstance", StaplerRequest.class, JSONObject.class)) { + return newInstance(StaplerRequest.fromStaplerRequest2(req), formData); + } else { + CpsFlowDefinition cpsFlowDefinition = (CpsFlowDefinition) super.newInstance(req, formData); + return newInstanceImpl(cpsFlowDefinition, req, formData); + } + } + + /** + * @deprecated use {@link #newInstance(StaplerRequest2, JSONObject)} + */ + @Deprecated + @Override public FlowDefinition newInstance(@NonNull StaplerRequest req, @NonNull JSONObject formData) throws FormException { CpsFlowDefinition cpsFlowDefinition = (CpsFlowDefinition) super.newInstance(req, formData); + return newInstanceImpl(cpsFlowDefinition, StaplerRequest.toStaplerRequest2(req), formData); + } + + private FlowDefinition newInstanceImpl(CpsFlowDefinition cpsFlowDefinition, @NonNull StaplerRequest2 req, @NonNull JSONObject formData) { if (!cpsFlowDefinition.sandbox && formData.get("oldScript") != null) { String oldScript = formData.getString("oldScript"); boolean approveIfAdmin = !StringUtils.equals(oldScript, cpsFlowDefinition.script); diff --git a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsScmFlowDefinition.java b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsScmFlowDefinition.java index 8fa182a5d..166bc05c5 100644 --- a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsScmFlowDefinition.java +++ b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsScmFlowDefinition.java @@ -68,7 +68,7 @@ import org.kohsuke.stapler.DataBoundConstructor; import org.kohsuke.stapler.DataBoundSetter; import org.kohsuke.stapler.Stapler; -import org.kohsuke.stapler.StaplerRequest; +import org.kohsuke.stapler.StaplerRequest2; @PersistIn(JOB) public class CpsScmFlowDefinition extends FlowDefinition { @@ -218,7 +218,7 @@ private String getFilePathSuffix() { } public Collection> getApplicableDescriptors() { - StaplerRequest req = Stapler.getCurrentRequest(); + StaplerRequest2 req = Stapler.getCurrentRequest2(); Job job = req != null ? req.findAncestorObject(Job.class) : null; return SCM._for(job).stream().filter(d -> !"org.jenkinsci.plugins.multiplescms.MultiSCM".equals(d.getId())).collect(Collectors.toList()); diff --git a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsThreadDumpAction.java b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsThreadDumpAction.java index d971f26a3..bdff19fe8 100644 --- a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsThreadDumpAction.java +++ b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsThreadDumpAction.java @@ -30,8 +30,8 @@ import org.jenkinsci.plugins.workflow.flow.FlowExecution; import org.jenkinsci.plugins.workflow.flow.FlowExecutionList; import org.kohsuke.stapler.HttpResponses; -import org.kohsuke.stapler.StaplerRequest; -import org.kohsuke.stapler.StaplerResponse; +import org.kohsuke.stapler.StaplerRequest2; +import org.kohsuke.stapler.StaplerResponse2; import org.kohsuke.stapler.WebMethod; /** @@ -73,7 +73,7 @@ public CpsThreadDump getThreadDump() { return execution.getThreadDump(); } - @WebMethod(name = "program.xml") public void doProgramDotXml(StaplerRequest req, StaplerResponse rsp) throws Exception { + @WebMethod(name = "program.xml") public void doProgramDotXml(StaplerRequest2 req, StaplerResponse2 rsp) throws Exception { Jenkins.get().checkPermission(Jenkins.ADMINISTER); CompletableFuture f = new CompletableFuture<>(); execution.runInCpsVmThread(new FutureCallback<>() { diff --git a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/Snippetizer.java b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/Snippetizer.java index 49eecd6ae..aa4b63152 100644 --- a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/Snippetizer.java +++ b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/Snippetizer.java @@ -67,7 +67,7 @@ import org.kohsuke.stapler.HttpResponses; import org.kohsuke.stapler.QueryParameter; import org.kohsuke.stapler.Stapler; -import org.kohsuke.stapler.StaplerRequest; +import org.kohsuke.stapler.StaplerRequest2; /** * Takes a {@link Step} as configured through the UI and tries to produce equivalent Groovy code. @@ -476,7 +476,7 @@ public String getSymbol() { @Restricted(DoNotUse.class) // for stapler public Iterable getGlobalVariables() { // TODO order TBD. Alphabetical? Extension.ordinal? - StaplerRequest req = Stapler.getCurrentRequest(); + StaplerRequest2 req = Stapler.getCurrentRequest2(); return GlobalVariable.forJob(req != null ? req.findAncestorObject(Job.class) : null); } @@ -484,7 +484,7 @@ public Iterable getGlobalVariables() { public static final String GENERATE_URL = ACTION_URL + "/generateSnippet"; @Restricted(DoNotUse.class) // accessed via REST API - public HttpResponse doGenerateSnippet(StaplerRequest req, @QueryParameter String json) throws Exception { + public HttpResponse doGenerateSnippet(StaplerRequest2 req, @QueryParameter String json) throws Exception { // TODO is there not an easier way to do this? Maybe Descriptor.newInstancesFromHeteroList on a one-element JSONArray? JSONObject jsonO = JSONObject.fromObject(json); Jenkins j = Jenkins.get(); @@ -532,7 +532,7 @@ public HttpResponse doGenerateSnippet(StaplerRequest req, @QueryParameter String } @Restricted(DoNotUse.class) // for stapler - public @CheckForNull Item getItem(StaplerRequest req) { + public @CheckForNull Item getItem(StaplerRequest2 req) { return req.findAncestorObject(Item.class); } diff --git a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/SnippetizerLink.java b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/SnippetizerLink.java index 6df1b8a44..621c0ad3e 100644 --- a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/SnippetizerLink.java +++ b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/SnippetizerLink.java @@ -29,7 +29,7 @@ import hudson.model.Item; import hudson.model.Job; import org.kohsuke.stapler.Stapler; -import org.kohsuke.stapler.StaplerRequest; +import org.kohsuke.stapler.StaplerRequest2; import edu.umd.cs.findbugs.annotations.NonNull; @@ -73,7 +73,7 @@ public final String getDisplayUrl() { return ""; } - StaplerRequest req = Stapler.getCurrentRequest(); + StaplerRequest2 req = Stapler.getCurrentRequest2(); if (req == null) { return u; } diff --git a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/replay/ReplayAction.java b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/replay/ReplayAction.java index d42ebf7f1..6f09ca451 100644 --- a/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/replay/ReplayAction.java +++ b/plugin/src/main/java/org/jenkinsci/plugins/workflow/cps/replay/ReplayAction.java @@ -58,7 +58,7 @@ import java.util.logging.Logger; import edu.umd.cs.findbugs.annotations.CheckForNull; import edu.umd.cs.findbugs.annotations.NonNull; -import javax.servlet.ServletException; +import jakarta.servlet.ServletException; import hudson.util.HttpResponses; import jenkins.model.Jenkins; @@ -81,11 +81,11 @@ import org.kohsuke.accmod.restrictions.NoExternalUse; import org.kohsuke.stapler.AncestorInPath; import org.kohsuke.stapler.QueryParameter; -import org.kohsuke.stapler.StaplerRequest; -import org.kohsuke.stapler.StaplerResponse; +import org.kohsuke.stapler.StaplerRequest2; +import org.kohsuke.stapler.StaplerResponse2; import org.kohsuke.stapler.interceptor.RequirePOST; -import static javax.servlet.http.HttpServletResponse.SC_CONFLICT; +import static jakarta.servlet.http.HttpServletResponse.SC_CONFLICT; /** * Attached to a {@link Run} when it could be replayed with script edits. @@ -215,7 +215,7 @@ private boolean isSandboxed() { @Restricted(DoNotUse.class) @RequirePOST - public void doRun(StaplerRequest req, StaplerResponse rsp) throws ServletException, IOException { + public void doRun(StaplerRequest2 req, StaplerResponse2 rsp) throws ServletException, IOException { if (!isEnabled() || !(isReplayableSandboxTest())) { throw new AccessDeniedException("not allowed to replay"); // AccessDeniedException2 requires us to look up the specific Permission } @@ -235,7 +235,7 @@ public void doRun(StaplerRequest req, StaplerResponse rsp) throws ServletExcepti @Restricted(DoNotUse.class) @RequirePOST - public void doRebuild(StaplerRequest req, StaplerResponse rsp) throws ServletException, IOException { + public void doRebuild(StaplerRequest2 req, StaplerResponse2 rsp) throws ServletException, IOException { if (!isRebuildEnabled()) { throw new AccessDeniedException("not allowed to replay"); // AccessDeniedException2 requires us to look up the specific Permission } diff --git a/pom.xml b/pom.xml index 8dd461af8..d50d3b733 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.jenkins-ci.plugins plugin - 4.88 + 5.5 org.jenkins-ci.plugins.workflow @@ -41,7 +41,9 @@ 999999-SNAPSHOT jenkinsci/${project.artifactId}-plugin - 2.452.4 + + 2.479 + ${jenkins.baseline}.1 2.4.21