1
1
package org .jenkinsci .plugins .gitserver ;
2
2
3
+ import hudson .Util ;
3
4
import 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 ;
4
10
import jenkins .model .Jenkins ;
5
11
import org .eclipse .jgit .errors .RepositoryNotFoundException ;
6
12
import org .eclipse .jgit .http .server .GitServlet ;
12
18
import org .eclipse .jgit .transport .resolver .ServiceNotAuthorizedException ;
13
19
import org .eclipse .jgit .transport .resolver .ServiceNotEnabledException ;
14
20
import 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 ;
17
23
18
- import javax .servlet .ServletConfig ;
19
- import javax .servlet .ServletContext ;
20
- import javax .servlet .ServletException ;
21
- import javax .servlet .http .HttpServletRequest ;
22
24
import java .io .IOException ;
25
+ import java .util .Collections ;
23
26
import java .util .Enumeration ;
24
- import java .util .Vector ;
25
27
import java .util .logging .Level ;
26
28
import java .util .logging .Logger ;
27
29
@@ -38,7 +40,7 @@ public abstract class HttpGitRepository {
38
40
private GitServlet g ;
39
41
private Exception causeOfDeath ;
40
42
41
- public HttpGitRepository () {
43
+ protected HttpGitRepository () {
42
44
}
43
45
44
46
/**
@@ -49,6 +51,7 @@ public HttpGitRepository() {
49
51
/**
50
52
* Returns the {@link ReceivePack} that handles "git push" from client.
51
53
*
54
+ * <p>
52
55
* The most basic implementation is the following, which allows anyone to push to this repository,
53
56
* so normally you want some kind of access check before that. {@link DefaultReceivePackFactory} isn't suitable
54
57
* here because it requires that the user has non-empty name, which isn't necessarily true in Jenkins
@@ -60,11 +63,27 @@ public HttpGitRepository() {
60
63
*
61
64
* @see ReceivePackFactory#create(Object, Repository)
62
65
*/
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
+ }
64
82
65
83
/**
66
84
* Returns the {@link UploadPack} that handles "git fetch" from client.
67
85
*
86
+ * <p>
68
87
* The most basic implementation is the following, which exposes this repository to everyone.
69
88
*
70
89
* <pre>
@@ -73,13 +92,28 @@ public HttpGitRepository() {
73
92
*
74
93
* @see UploadPackFactory#create(Object, Repository)
75
94
*/
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
+ }
77
111
78
112
/**
79
113
* to make sure the user has the permission to pull.
80
114
*/
81
115
public void checkPullPermission () {
82
- Jenkins .getInstance ().checkPermission (Jenkins .READ );
116
+ Jenkins .get ().checkPermission (Jenkins .READ );
83
117
}
84
118
85
119
protected GitServlet init () {
@@ -114,23 +148,19 @@ public String getServletName() {
114
148
}
115
149
116
150
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 ();
122
152
}
123
153
124
154
public String getInitParameter (String name ) {
125
155
return null ;
126
156
}
127
157
128
- public Enumeration getInitParameterNames () {
129
- return new Vector (). elements ();
158
+ public Enumeration < String > getInitParameterNames () {
159
+ return Collections . emptyEnumeration ();
130
160
}
131
161
});
132
162
} 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 );
134
164
causeOfDeath = e ;
135
165
}
136
166
return g ;
@@ -139,7 +169,7 @@ public Enumeration getInitParameterNames() {
139
169
/**
140
170
* Handles git smart HTTP protocol.
141
171
*/
142
- public void doDynamic (StaplerRequest req , StaplerResponse rsp ) throws IOException , ServletException {
172
+ public void doDynamic (StaplerRequest2 req , StaplerResponse2 rsp ) throws IOException , ServletException {
143
173
if (g ==null )
144
174
g =init ();
145
175
0 commit comments