Skip to content

Commit 50cbd7f

Browse files
committed
Migrate from EE 8 to EE 9
1 parent 917eb99 commit 50cbd7f

18 files changed

+326
-49
lines changed

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

+112-5
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));
@@ -860,7 +910,24 @@ public DescribableList<FolderHealthMetric, FolderHealthMetricDescriptor> getHeal
860910
return healthMetrics;
861911
}
862912

913+
public HttpResponse doLastBuild(StaplerRequest2 req) {
914+
if (Util.isOverridden(AbstractFolder.class, getClass(), "doLastBuild", StaplerRequest.class)) {
915+
return doLastBuild(req != null ? StaplerRequest.fromStaplerRequest2(req) : null);
916+
} else {
917+
return doLastBuildImpl(req);
918+
}
919+
}
920+
921+
/**
922+
* @deprecated use {@link #doLastBuild(StaplerRequest2)}
923+
*/
924+
@Deprecated
925+
@StaplerNotDispatchable
863926
public HttpResponse doLastBuild(StaplerRequest req) {
927+
return doLastBuildImpl(req != null ? StaplerRequest.toStaplerRequest2(req) : null);
928+
}
929+
930+
private HttpResponse doLastBuildImpl(StaplerRequest2 req) {
864931
return HttpResponses.redirectToDot();
865932
}
866933

@@ -1092,13 +1159,39 @@ public void renameTo(String newName) throws IOException {
10921159
* {@inheritDoc}
10931160
*/
10941161
@Override
1095-
public synchronized void doSubmitDescription(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
1162+
public synchronized void doSubmitDescription(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException, ServletException {
1163+
if (Util.isOverridden(AbstractFolder.class, getClass(), "doSubmitDescription", StaplerRequest.class, StaplerResponse.class)) {
1164+
try {
1165+
doSubmitDescription(req != null ? StaplerRequest.fromStaplerRequest2(req) : null, rsp != null ? StaplerResponse.fromStaplerResponse2(rsp) : null);
1166+
} catch (javax.servlet.ServletException e) {
1167+
throw ServletExceptionWrapper.toJakartaServletException(e);
1168+
}
1169+
} else {
1170+
doSubmitDescriptionImpl(req, rsp);
1171+
}
1172+
}
1173+
1174+
/**
1175+
* @deprecated use {@link #doSubmitDescription(StaplerRequest2, StaplerResponse2)}
1176+
*/
1177+
@Deprecated
1178+
@Override
1179+
@StaplerNotDispatchable
1180+
public synchronized void doSubmitDescription(StaplerRequest req, StaplerResponse rsp) throws IOException, javax.servlet.ServletException {
1181+
try {
1182+
doSubmitDescriptionImpl(req != null ? StaplerRequest.toStaplerRequest2(req) : null, rsp != null ? StaplerResponse.toStaplerResponse2(rsp) : null);
1183+
} catch (ServletException e) {
1184+
throw ServletExceptionWrapper.fromJakartaServletException(e);
1185+
}
1186+
}
1187+
1188+
private void doSubmitDescriptionImpl(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException, ServletException {
10961189
getPrimaryView().doSubmitDescription(req, rsp);
10971190
}
10981191

10991192
@Restricted(NoExternalUse.class)
11001193
@RequirePOST
1101-
public void doConfigSubmit(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException, Descriptor.FormException {
1194+
public void doConfigSubmit(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException, ServletException, Descriptor.FormException {
11021195
checkPermission(CONFIGURE);
11031196

11041197
req.setCharacterEncoding("UTF-8");
@@ -1147,15 +1240,29 @@ public void doConfigSubmit(StaplerRequest req, StaplerResponse rsp) throws IOExc
11471240
*
11481241
* @return A string that represents the redirect location URL.
11491242
*
1150-
* @see javax.servlet.http.HttpServletResponse#sendRedirect(String)
1243+
* @see HttpServletResponse#sendRedirect(String)
11511244
*/
11521245
@Restricted(NoExternalUse.class)
11531246
@NonNull
11541247
protected String getSuccessfulDestination() {
11551248
return ".";
11561249
}
11571250

1158-
protected void submit(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException, Descriptor.FormException {}
1251+
protected void submit(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException, ServletException, Descriptor.FormException {
1252+
if (Util.isOverridden(AbstractFolder.class, getClass(), "submit", StaplerRequest.class, StaplerResponse.class)) {
1253+
try {
1254+
submit(req != null ? StaplerRequest.fromStaplerRequest2(req) : null, rsp != null ? StaplerResponse.fromStaplerResponse2(rsp) : null);
1255+
} catch (javax.servlet.ServletException e) {
1256+
throw ServletExceptionWrapper.toJakartaServletException(e);
1257+
}
1258+
}
1259+
}
1260+
1261+
/**
1262+
* @deprecated use {@link #submit(StaplerRequest2, StaplerResponse2)}
1263+
*/
1264+
@Deprecated
1265+
protected void submit(StaplerRequest req, StaplerResponse rsp) throws IOException, javax.servlet.ServletException, Descriptor.FormException {}
11591266

11601267
/**
11611268
* {@inheritDoc}

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
import org.kohsuke.stapler.AncestorInPath;
4545
import org.kohsuke.stapler.QueryParameter;
4646
import org.kohsuke.stapler.Stapler;
47-
import org.kohsuke.stapler.StaplerRequest;
47+
import org.kohsuke.stapler.StaplerRequest2;
4848

4949
/**
5050
* Category of {@link AbstractFolder}.
@@ -124,7 +124,7 @@ public List<FolderIconDescriptor> getIconDescriptors() {
124124
r.add(p);
125125
}
126126
}
127-
StaplerRequest request = Stapler.getCurrentRequest();
127+
StaplerRequest2 request = Stapler.getCurrentRequest2();
128128
if (request != null) {
129129
AbstractFolder<?> folder = request.findAncestorObject(AbstractFolder.class);
130130
if (folder != null) {

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

+19
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

+19
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()) {

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

+57-3
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@
4343
import hudson.util.DescribableList;
4444
import hudson.views.ListViewColumn;
4545
import hudson.views.ViewJobFilter;
46+
import io.jenkins.servlet.ServletExceptionWrapper;
47+
import jakarta.servlet.ServletException;
4648
import java.io.File;
4749
import java.io.IOException;
4850
import java.io.InputStream;
@@ -52,16 +54,18 @@
5254
import java.util.Vector;
5355
import java.util.logging.Level;
5456
import java.util.logging.Logger;
55-
import javax.servlet.ServletException;
5657
import jenkins.model.DirectlyModifiableTopLevelItemGroup;
5758
import jenkins.model.Jenkins;
5859
import jenkins.model.TransientActionFactory;
60+
import jenkins.security.stapler.StaplerNotDispatchable;
5961
import org.jenkins.ui.icon.Icon;
6062
import org.jenkins.ui.icon.IconSet;
6163
import org.kohsuke.accmod.Restricted;
6264
import org.kohsuke.accmod.restrictions.DoNotUse;
6365
import org.kohsuke.stapler.StaplerRequest;
66+
import org.kohsuke.stapler.StaplerRequest2;
6467
import org.kohsuke.stapler.StaplerResponse;
68+
import org.kohsuke.stapler.StaplerResponse2;
6569
import org.kohsuke.stapler.verb.POST;
6670

6771
/**
@@ -234,7 +238,32 @@ public void onCopiedFrom(Item _src) {
234238
}
235239

236240
@POST
237-
public TopLevelItem doCreateItem(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
241+
public TopLevelItem doCreateItem(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException, ServletException {
242+
if (Util.isOverridden(Folder.class, getClass(), "doCreateItem", StaplerRequest.class, StaplerResponse.class)) {
243+
try {
244+
return doCreateItem(req != null ? StaplerRequest.fromStaplerRequest2(req) : null, rsp != null ? StaplerResponse.fromStaplerResponse2(rsp) : null);
245+
} catch (javax.servlet.ServletException e) {
246+
throw ServletExceptionWrapper.toJakartaServletException(e);
247+
}
248+
} else {
249+
return doCreateItemImpl(req, rsp);
250+
}
251+
}
252+
253+
/**
254+
* @deprecated use {@link #doCreateItem(StaplerRequest2, StaplerResponse2)}
255+
*/
256+
@Deprecated
257+
@StaplerNotDispatchable
258+
public TopLevelItem doCreateItem(StaplerRequest req, StaplerResponse rsp) throws IOException, javax.servlet.ServletException {
259+
try {
260+
return doCreateItemImpl(req != null ? StaplerRequest.toStaplerRequest2(req) : null, rsp != null ? StaplerResponse.toStaplerResponse2(rsp) : null);
261+
} catch (ServletException e) {
262+
throw ServletExceptionWrapper.fromJakartaServletException(e);
263+
}
264+
}
265+
266+
private TopLevelItem doCreateItemImpl(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException, ServletException {
238267
TopLevelItem nue = mixin.createTopLevelItem(req, rsp);
239268
if (!isAllowedChild(nue)) {
240269
// TODO would be better to intercept it before creation, if mode is set
@@ -288,7 +317,32 @@ public TopLevelItem createProject(@NonNull TopLevelItemDescriptor type, @NonNull
288317
}
289318

290319
@Override
291-
protected void submit(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException, FormException {
320+
protected void submit(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException, ServletException, FormException {
321+
if (Util.isOverridden(Folder.class, getClass(), "submit", StaplerRequest.class, StaplerResponse.class)) {
322+
try {
323+
submit(req != null ? StaplerRequest.fromStaplerRequest2(req) : null, rsp != null ? StaplerResponse.fromStaplerResponse2(rsp) : null);
324+
} catch (javax.servlet.ServletException e) {
325+
throw ServletExceptionWrapper.toJakartaServletException(e);
326+
}
327+
} else {
328+
submitImpl(req, rsp);
329+
}
330+
}
331+
332+
/**
333+
* @deprecated use {@link #submit(StaplerRequest2, StaplerResponse2)}
334+
*/
335+
@Deprecated
336+
@Override
337+
protected void submit(StaplerRequest req, StaplerResponse rsp) throws IOException, javax.servlet.ServletException, FormException {
338+
try {
339+
submitImpl(req != null ? StaplerRequest.toStaplerRequest2(req) : null, rsp != null ? StaplerResponse.toStaplerResponse2(rsp) : null);
340+
} catch (ServletException e) {
341+
throw ServletExceptionWrapper.fromJakartaServletException(e);
342+
}
343+
}
344+
345+
private void submitImpl(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException, ServletException, FormException {
292346
updateTransientActions();
293347
}
294348

0 commit comments

Comments
 (0)