Skip to content

Commit fe19f2f

Browse files
Merge branch 'master' into JENKINS-34502
2 parents 6733789 + 5acc0cb commit fe19f2f

21 files changed

+362
-65
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.jenkins-ci.plugins</groupId>
77
<artifactId>plugin</artifactId>
8-
<version>5.3</version>
8+
<version>5.5</version>
99
<relativePath/>
1010
</parent>
1111

@@ -61,7 +61,7 @@
6161
<dependency>
6262
<groupId>io.jenkins.tools.bom</groupId>
6363
<artifactId>bom-${jenkins.baseline}.x</artifactId>
64-
<version>3613.v584fca_12cf5c</version>
64+
<version>3893.v213a_42768d35</version>
6565
<scope>import</scope>
6666
<type>pom</type>
6767
</dependency>

src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolder.java

Lines changed: 112 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@
7070
import hudson.util.HttpResponses;
7171
import hudson.views.DefaultViewsTabBar;
7272
import hudson.views.ViewsTabBar;
73+
import io.jenkins.servlet.ServletExceptionWrapper;
74+
import jakarta.servlet.ServletException;
75+
import jakarta.servlet.http.HttpServletResponse;
7376
import java.io.File;
7477
import java.io.FileNotFoundException;
7578
import java.io.IOException;
@@ -94,12 +97,12 @@
9497
import java.util.logging.Logger;
9598
import edu.umd.cs.findbugs.annotations.CheckForNull;
9699
import edu.umd.cs.findbugs.annotations.NonNull;
97-
import javax.servlet.ServletException;
98100
import jenkins.model.DirectlyModifiableTopLevelItemGroup;
99101
import jenkins.model.Jenkins;
100102
import jenkins.model.ModelObjectWithChildren;
101103
import jenkins.model.ProjectNamingStrategy;
102104
import jenkins.model.TransientActionFactory;
105+
import jenkins.security.stapler.StaplerNotDispatchable;
103106
import net.sf.json.JSONObject;
104107
import org.kohsuke.accmod.Restricted;
105108
import org.kohsuke.accmod.restrictions.Beta;
@@ -110,7 +113,9 @@
110113
import org.kohsuke.stapler.StaplerFallback;
111114
import org.kohsuke.stapler.StaplerOverridable;
112115
import org.kohsuke.stapler.StaplerRequest;
116+
import org.kohsuke.stapler.StaplerRequest2;
113117
import org.kohsuke.stapler.StaplerResponse;
118+
import org.kohsuke.stapler.StaplerResponse2;
114119
import org.kohsuke.stapler.export.Exported;
115120
import org.kohsuke.stapler.interceptor.RequirePOST;
116121
import org.kohsuke.stapler.verb.POST;
@@ -723,7 +728,25 @@ private ItemGroup<?> grp() {
723728
* {@inheritDoc}
724729
*/
725730
@Override
731+
public ContextMenu doChildrenContextMenu(StaplerRequest2 request, StaplerResponse2 response) {
732+
if (Util.isOverridden(AbstractFolder.class, getClass(), "doChildrenContextMenu", StaplerRequest.class, StaplerResponse.class)) {
733+
return doChildrenContextMenu(request != null ? StaplerRequest.fromStaplerRequest2(request) : null, response != null ? StaplerResponse.fromStaplerResponse2(response) : null);
734+
} else {
735+
return doChildrenContextMenuImpl(request, response);
736+
}
737+
}
738+
739+
/**
740+
* @deprecated use {@link #doChildrenContextMenu(StaplerRequest2, StaplerResponse2)}
741+
*/
742+
@Deprecated
743+
@Override
744+
@StaplerNotDispatchable
726745
public ContextMenu doChildrenContextMenu(StaplerRequest request, StaplerResponse response) {
746+
return doChildrenContextMenuImpl(request != null ? StaplerRequest.toStaplerRequest2(request) : null, response != null ? StaplerResponse.toStaplerResponse2(response) : null);
747+
}
748+
749+
private ContextMenu doChildrenContextMenuImpl(StaplerRequest2 request, StaplerResponse2 response) {
727750
ContextMenu menu = new ContextMenu();
728751
for (View view : getViews()) {
729752
menu.add(view.getAbsoluteUrl(),view.getDisplayName());
@@ -732,7 +755,34 @@ public ContextMenu doChildrenContextMenu(StaplerRequest request, StaplerResponse
732755
}
733756

734757
@POST
758+
public synchronized void doCreateView(StaplerRequest2 req, StaplerResponse2 rsp)
759+
throws IOException, ServletException, ParseException, Descriptor.FormException {
760+
if (Util.isOverridden(AbstractFolder.class, getClass(), "doCreateView", StaplerRequest.class, StaplerResponse.class)) {
761+
try {
762+
doCreateView(req != null ? StaplerRequest.fromStaplerRequest2(req) : null, rsp != null ? StaplerResponse.fromStaplerResponse2(rsp) : null);
763+
} catch (javax.servlet.ServletException e) {
764+
throw ServletExceptionWrapper.toJakartaServletException(e);
765+
}
766+
} else {
767+
doCreateViewImpl(req, rsp);
768+
}
769+
}
770+
771+
/**
772+
* @deprecated use {@link #doCreateView(StaplerRequest2, StaplerResponse2)}
773+
*/
774+
@Deprecated
775+
@StaplerNotDispatchable
735776
public synchronized void doCreateView(StaplerRequest req, StaplerResponse rsp)
777+
throws IOException, javax.servlet.ServletException, ParseException, Descriptor.FormException {
778+
try {
779+
doCreateViewImpl(req != null ? StaplerRequest.toStaplerRequest2(req) : null, rsp != null ? StaplerResponse.toStaplerResponse2(rsp) : null);
780+
} catch (ServletException e) {
781+
throw ServletExceptionWrapper.fromJakartaServletException(e);
782+
}
783+
}
784+
785+
private void doCreateViewImpl(StaplerRequest2 req, StaplerResponse2 rsp)
736786
throws IOException, ServletException, ParseException, Descriptor.FormException {
737787
checkPermission(View.CREATE);
738788
addView(View.create(req, rsp, this));
@@ -854,7 +904,24 @@ public DescribableList<FolderHealthMetric, FolderHealthMetricDescriptor> getHeal
854904
return healthMetrics;
855905
}
856906

907+
public HttpResponse doLastBuild(StaplerRequest2 req) {
908+
if (Util.isOverridden(AbstractFolder.class, getClass(), "doLastBuild", StaplerRequest.class)) {
909+
return doLastBuild(req != null ? StaplerRequest.fromStaplerRequest2(req) : null);
910+
} else {
911+
return doLastBuildImpl(req);
912+
}
913+
}
914+
915+
/**
916+
* @deprecated use {@link #doLastBuild(StaplerRequest2)}
917+
*/
918+
@Deprecated
919+
@StaplerNotDispatchable
857920
public HttpResponse doLastBuild(StaplerRequest req) {
921+
return doLastBuildImpl(req != null ? StaplerRequest.toStaplerRequest2(req) : null);
922+
}
923+
924+
private HttpResponse doLastBuildImpl(StaplerRequest2 req) {
858925
return HttpResponses.redirectToDot();
859926
}
860927

@@ -1086,13 +1153,39 @@ public void renameTo(String newName) throws IOException {
10861153
* {@inheritDoc}
10871154
*/
10881155
@Override
1089-
public synchronized void doSubmitDescription(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
1156+
public synchronized void doSubmitDescription(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException, ServletException {
1157+
if (Util.isOverridden(AbstractFolder.class, getClass(), "doSubmitDescription", StaplerRequest.class, StaplerResponse.class)) {
1158+
try {
1159+
doSubmitDescription(req != null ? StaplerRequest.fromStaplerRequest2(req) : null, rsp != null ? StaplerResponse.fromStaplerResponse2(rsp) : null);
1160+
} catch (javax.servlet.ServletException e) {
1161+
throw ServletExceptionWrapper.toJakartaServletException(e);
1162+
}
1163+
} else {
1164+
doSubmitDescriptionImpl(req, rsp);
1165+
}
1166+
}
1167+
1168+
/**
1169+
* @deprecated use {@link #doSubmitDescription(StaplerRequest2, StaplerResponse2)}
1170+
*/
1171+
@Deprecated
1172+
@Override
1173+
@StaplerNotDispatchable
1174+
public synchronized void doSubmitDescription(StaplerRequest req, StaplerResponse rsp) throws IOException, javax.servlet.ServletException {
1175+
try {
1176+
doSubmitDescriptionImpl(req != null ? StaplerRequest.toStaplerRequest2(req) : null, rsp != null ? StaplerResponse.toStaplerResponse2(rsp) : null);
1177+
} catch (ServletException e) {
1178+
throw ServletExceptionWrapper.fromJakartaServletException(e);
1179+
}
1180+
}
1181+
1182+
private void doSubmitDescriptionImpl(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException, ServletException {
10901183
getPrimaryView().doSubmitDescription(req, rsp);
10911184
}
10921185

10931186
@Restricted(NoExternalUse.class)
10941187
@RequirePOST
1095-
public void doConfigSubmit(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException, Descriptor.FormException {
1188+
public void doConfigSubmit(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException, ServletException, Descriptor.FormException {
10961189
checkPermission(CONFIGURE);
10971190

10981191
req.setCharacterEncoding("UTF-8");
@@ -1141,15 +1234,29 @@ public void doConfigSubmit(StaplerRequest req, StaplerResponse rsp) throws IOExc
11411234
*
11421235
* @return A string that represents the redirect location URL.
11431236
*
1144-
* @see javax.servlet.http.HttpServletResponse#sendRedirect(String)
1237+
* @see HttpServletResponse#sendRedirect(String)
11451238
*/
11461239
@Restricted(NoExternalUse.class)
11471240
@NonNull
11481241
protected String getSuccessfulDestination() {
11491242
return ".";
11501243
}
11511244

1152-
protected void submit(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException, Descriptor.FormException {}
1245+
protected void submit(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException, ServletException, Descriptor.FormException {
1246+
if (Util.isOverridden(AbstractFolder.class, getClass(), "submit", StaplerRequest.class, StaplerResponse.class)) {
1247+
try {
1248+
submit(req != null ? StaplerRequest.fromStaplerRequest2(req) : null, rsp != null ? StaplerResponse.fromStaplerResponse2(rsp) : null);
1249+
} catch (javax.servlet.ServletException e) {
1250+
throw ServletExceptionWrapper.toJakartaServletException(e);
1251+
}
1252+
}
1253+
}
1254+
1255+
/**
1256+
* @deprecated use {@link #submit(StaplerRequest2, StaplerResponse2)}
1257+
*/
1258+
@Deprecated
1259+
protected void submit(StaplerRequest req, StaplerResponse rsp) throws IOException, javax.servlet.ServletException, Descriptor.FormException {}
11531260

11541261
/**
11551262
* {@inheritDoc}

src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolderDescriptor.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,8 @@
3939
import jenkins.model.Jenkins;
4040
import jenkins.model.ProjectNamingStrategy;
4141
import org.jenkins.ui.icon.IconSpec;
42-
import org.kohsuke.accmod.Restricted;
43-
import org.kohsuke.accmod.restrictions.NoExternalUse;
44-
import org.kohsuke.stapler.AncestorInPath;
45-
import org.kohsuke.stapler.QueryParameter;
4642
import org.kohsuke.stapler.Stapler;
47-
import org.kohsuke.stapler.StaplerRequest;
43+
import org.kohsuke.stapler.StaplerRequest2;
4844

4945
/**
5046
* Category of {@link AbstractFolder}.
@@ -124,7 +120,7 @@ public List<FolderIconDescriptor> getIconDescriptors() {
124120
r.add(p);
125121
}
126122
}
127-
StaplerRequest request = Stapler.getCurrentRequest();
123+
StaplerRequest2 request = Stapler.getCurrentRequest2();
128124
if (request != null) {
129125
AbstractFolder<?> folder = request.findAncestorObject(AbstractFolder.class);
130126
if (folder != null) {
@@ -134,12 +130,6 @@ public List<FolderIconDescriptor> getIconDescriptors() {
134130
return r;
135131
}
136132

137-
@Restricted(NoExternalUse.class)
138-
public FormValidation doCheckDisplayNameOrNull(@AncestorInPath AbstractFolder folder, @QueryParameter String value) {
139-
return Jenkins.get().doCheckDisplayName(value, folder.getName());
140-
}
141-
142-
143133
/**
144134
* Needed if it wants Folder are categorized in Jenkins 2.x.
145135
*

src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolderProperty.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.cloudbees.hudson.plugins.folder.health.FolderHealthMetric;
2828
import edu.umd.cs.findbugs.annotations.NonNull;
2929
import hudson.ExtensionPoint;
30+
import hudson.Util;
3031
import hudson.model.AbstractDescribableImpl;
3132
import hudson.model.Descriptor;
3233
import hudson.model.HealthReport;
@@ -39,6 +40,7 @@
3940
import org.kohsuke.accmod.restrictions.NoExternalUse;
4041
import org.kohsuke.stapler.StaplerOverridable;
4142
import org.kohsuke.stapler.StaplerRequest;
43+
import org.kohsuke.stapler.StaplerRequest2;
4244

4345
/**
4446
* Property potentially applicable to any {@link AbstractFolder}.
@@ -88,8 +90,25 @@ public Collection<?> getItemContainerOverrides() {
8890
return Collections.emptyList();
8991
}
9092

93+
@Override
94+
public AbstractFolderProperty<?> reconfigure(StaplerRequest2 req, JSONObject form) throws Descriptor.FormException {
95+
if (Util.isOverridden(AbstractFolderProperty.class, getClass(), "reconfigure", StaplerRequest.class, JSONObject.class)) {
96+
return reconfigure(req != null ? StaplerRequest.fromStaplerRequest2(req) : null, form);
97+
} else {
98+
return reconfigureImpl(req, form);
99+
}
100+
}
101+
102+
/**
103+
* @deprecated use {@link #reconfigure(StaplerRequest2, JSONObject)}
104+
*/
105+
@Deprecated
91106
@Override
92107
public AbstractFolderProperty<?> reconfigure(StaplerRequest req, JSONObject form) throws Descriptor.FormException {
108+
return reconfigureImpl(req != null ? StaplerRequest.toStaplerRequest2(req) : null, form);
109+
}
110+
111+
private AbstractFolderProperty<?> reconfigureImpl(StaplerRequest2 req, JSONObject form) throws Descriptor.FormException {
93112
return form == null ? null : getDescriptor().newInstance(req, form);
94113
}
95114

src/main/java/com/cloudbees/hudson/plugins/folder/AbstractFolderPropertyDescriptor.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
package com.cloudbees.hudson.plugins.folder;
2626

2727
import hudson.ExtensionList;
28+
import hudson.Util;
2829
import hudson.model.Descriptor;
2930
import java.lang.reflect.ParameterizedType;
3031
import java.lang.reflect.Type;
@@ -33,6 +34,7 @@
3334
import net.sf.json.JSONObject;
3435
import org.jvnet.tiger_types.Types;
3536
import org.kohsuke.stapler.StaplerRequest;
37+
import org.kohsuke.stapler.StaplerRequest2;
3638

3739
/**
3840
* Category of {@link AbstractFolderProperty}.
@@ -47,6 +49,23 @@ public abstract class AbstractFolderPropertyDescriptor extends Descriptor<Abstra
4749
* null to avoid setting an instance of {@link AbstractFolderProperty} to the target folder.
4850
*/
4951
@Override
52+
public AbstractFolderProperty<?> newInstance(StaplerRequest2 req, JSONObject formData) throws FormException {
53+
if (Util.isOverridden(AbstractFolderPropertyDescriptor.class, getClass(), "newInstance", StaplerRequest.class, JSONObject.class)) {
54+
return newInstance(req != null ? StaplerRequest.fromStaplerRequest2(req) : null, formData);
55+
} else {
56+
// Analogous to hack in JobPropertyDescriptor.
57+
if (formData.isNullObject()) {
58+
formData = new JSONObject();
59+
}
60+
return super.newInstance(req, formData);
61+
}
62+
}
63+
64+
/**
65+
* @deprecated use {@link #newInstance(StaplerRequest2, JSONObject)}
66+
*/
67+
@Deprecated
68+
@Override
5069
public AbstractFolderProperty<?> newInstance(StaplerRequest req, JSONObject formData) throws FormException {
5170
// Analogous to hack in JobPropertyDescriptor.
5271
if (formData.isNullObject()) {

0 commit comments

Comments
 (0)