11package org .jenkinsci .plugins .gitserver ;
22
3+ import hudson .Util ;
34import hudson .model .Action ;
5+ import io .jenkins .servlet .http .HttpServletRequestWrapper ;
6+ import jakarta .servlet .ServletConfig ;
7+ import jakarta .servlet .ServletContext ;
8+ import jakarta .servlet .ServletException ;
9+ import jakarta .servlet .http .HttpServletRequest ;
410import jenkins .model .Jenkins ;
511import org .eclipse .jgit .errors .RepositoryNotFoundException ;
612import org .eclipse .jgit .http .server .GitServlet ;
1218import org .eclipse .jgit .transport .resolver .ServiceNotAuthorizedException ;
1319import org .eclipse .jgit .transport .resolver .ServiceNotEnabledException ;
1420import org .eclipse .jgit .transport .resolver .UploadPackFactory ;
15- import org .kohsuke .stapler .StaplerRequest ;
16- import org .kohsuke .stapler .StaplerResponse ;
21+ import org .kohsuke .stapler .StaplerRequest2 ;
22+ import org .kohsuke .stapler .StaplerResponse2 ;
1723
18- import javax .servlet .ServletConfig ;
19- import javax .servlet .ServletContext ;
20- import javax .servlet .ServletException ;
21- import javax .servlet .http .HttpServletRequest ;
2224import java .io .IOException ;
25+ import java .util .Collections ;
2326import java .util .Enumeration ;
24- import java .util .Vector ;
2527import java .util .logging .Level ;
2628import java .util .logging .Logger ;
2729
@@ -38,7 +40,7 @@ public abstract class HttpGitRepository {
3840 private GitServlet g ;
3941 private Exception causeOfDeath ;
4042
41- public HttpGitRepository () {
43+ protected HttpGitRepository () {
4244 }
4345
4446 /**
@@ -49,6 +51,7 @@ public HttpGitRepository() {
4951 /**
5052 * Returns the {@link ReceivePack} that handles "git push" from client.
5153 *
54+ * <p>
5255 * The most basic implementation is the following, which allows anyone to push to this repository,
5356 * so normally you want some kind of access check before that. {@link DefaultReceivePackFactory} isn't suitable
5457 * here because it requires that the user has non-empty name, which isn't necessarily true in Jenkins
@@ -60,11 +63,27 @@ public HttpGitRepository() {
6063 *
6164 * @see ReceivePackFactory#create(Object, Repository)
6265 */
63- public abstract ReceivePack createReceivePack (HttpServletRequest context , Repository db ) throws ServiceNotEnabledException , ServiceNotAuthorizedException ;
66+ @ SuppressWarnings ({"deprecated" , "java:S1874" })
67+ public ReceivePack createReceivePack (HttpServletRequest context , Repository db ) throws ServiceNotEnabledException , ServiceNotAuthorizedException {
68+ return createReceivePack (HttpServletRequestWrapper .fromJakartaHttpServletRequest (context ), db );
69+ }
70+
71+ /**
72+ * @deprecated Override {@link #createReceivePack(HttpServletRequest, Repository)} instead.
73+ */
74+ @ Deprecated (since = "132" )
75+ public ReceivePack createReceivePack (javax .servlet .http .HttpServletRequest context , Repository db ) throws ServiceNotEnabledException , ServiceNotAuthorizedException {
76+ if (Util .isOverridden (HttpGitRepository .class , getClass (), "createReceivePack" , HttpServletRequest .class , Repository .class )) {
77+ return createReceivePack (HttpServletRequestWrapper .toJakartaHttpServletRequest (context ), db );
78+ }
79+ throw new AbstractMethodError ("Implementing class '" + this .getClass ().getName () + "' does not override " +
80+ "either overload of the createReceivePack method." );
81+ }
6482
6583 /**
6684 * Returns the {@link UploadPack} that handles "git fetch" from client.
6785 *
86+ * <p>
6887 * The most basic implementation is the following, which exposes this repository to everyone.
6988 *
7089 * <pre>
@@ -73,13 +92,28 @@ public HttpGitRepository() {
7392 *
7493 * @see UploadPackFactory#create(Object, Repository)
7594 */
76- public abstract UploadPack createUploadPack (HttpServletRequest context , Repository db ) throws ServiceNotEnabledException , ServiceNotAuthorizedException ;
95+ @ SuppressWarnings ({"deprecated" , "java:S1874" })
96+ public UploadPack createUploadPack (HttpServletRequest context , Repository db ) throws ServiceNotEnabledException , ServiceNotAuthorizedException {
97+ return createUploadPack (HttpServletRequestWrapper .fromJakartaHttpServletRequest (context ), db );
98+ }
99+
100+ /**
101+ * @deprecated Override {@link #createUploadPack(HttpServletRequest, Repository)} instead.
102+ */
103+ @ Deprecated (since = "132" )
104+ public UploadPack createUploadPack (javax .servlet .http .HttpServletRequest context , Repository db ) throws ServiceNotEnabledException , ServiceNotAuthorizedException {
105+ if (Util .isOverridden (HttpGitRepository .class , getClass (), "createUploadPack" , HttpServletRequest .class , Repository .class )) {
106+ return createUploadPack (HttpServletRequestWrapper .toJakartaHttpServletRequest (context ), db );
107+ }
108+ throw new AbstractMethodError ("Implementing class '" + this .getClass ().getName () + "' does not override " +
109+ "either overload of the createUploadPack method." );
110+ }
77111
78112 /**
79113 * to make sure the user has the permission to pull.
80114 */
81115 public void checkPullPermission () {
82- Jenkins .getInstance ().checkPermission (Jenkins .READ );
116+ Jenkins .get ().checkPermission (Jenkins .READ );
83117 }
84118
85119 protected GitServlet init () {
@@ -114,23 +148,19 @@ public String getServletName() {
114148 }
115149
116150 public ServletContext getServletContext () throws IllegalStateException {
117- Jenkins j = Jenkins .getInstance ();
118- if (j == null ) {
119- throw new IllegalStateException ();
120- }
121- return j .servletContext ;
151+ return Jenkins .get ().getServletContext ();
122152 }
123153
124154 public String getInitParameter (String name ) {
125155 return null ;
126156 }
127157
128- public Enumeration getInitParameterNames () {
129- return new Vector (). elements ();
158+ public Enumeration < String > getInitParameterNames () {
159+ return Collections . emptyEnumeration ();
130160 }
131161 });
132162 } catch (ServletException e ) {
133- LOGGER .log (Level .WARNING ,"Failed to initialize GitServlet for " + this , e );
163+ LOGGER .log (Level .WARNING , e , () -> "Failed to initialize GitServlet for " + this );
134164 causeOfDeath = e ;
135165 }
136166 return g ;
@@ -139,7 +169,7 @@ public Enumeration getInitParameterNames() {
139169 /**
140170 * Handles git smart HTTP protocol.
141171 */
142- public void doDynamic (StaplerRequest req , StaplerResponse rsp ) throws IOException , ServletException {
172+ public void doDynamic (StaplerRequest2 req , StaplerResponse2 rsp ) throws IOException , ServletException {
143173 if (g ==null )
144174 g =init ();
145175
0 commit comments